From 0631bb2ca86662bb5c41ca03a6daa6911a8a5ee5 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Wed, 16 Sep 2020 04:38:19 -0700 Subject: [PATCH] Fixed ccompat mangling un-uniquing generic type names --- IDEHelper/Compiler/BfMangler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfMangler.cpp b/IDEHelper/Compiler/BfMangler.cpp index 04bc8c09..5efe4d8d 100644 --- a/IDEHelper/Compiler/BfMangler.cpp +++ b/IDEHelper/Compiler/BfMangler.cpp @@ -1794,6 +1794,7 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho else if (constant->mInt32 == 2) // CPP { mangleContext.mCPPMangle = true; + mangleContext.mCCompat = true; } } } @@ -2046,7 +2047,12 @@ void BfMSMangler::Mangle(StringImpl& name, bool is64Bit, BfMethodInstance* metho if (methodInst->GetExplicitInterface() != NULL) Mangle(mangleContext, name, methodInst->GetExplicitInterface(), true); - Mangle(mangleContext, name, methodInst->GetOwner(), true); + /// + { + // Only use CCompat for params, not for the owning type name - unless we're doing an explicit CPP mangle + SetAndRestoreValue prevCCompat(mangleContext.mCCompat, (mangleContext.mCCompat && mangleContext.mCPPMangle) ? true : false); + Mangle(mangleContext, name, methodInst->GetOwner(), true); + } /*bool isCppDecl = false; if (!isCppDecl)