From 6e485e5766cc634b35040a0c9e433db271432987 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 8 Feb 2020 10:41:45 -0800 Subject: [PATCH] Fixed renaming of globals --- IDEHelper/Compiler/BfCompiler.cpp | 4 +++- IDEHelper/Compiler/BfSystem.cpp | 29 ++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index e2a74332..a32c720a 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -6750,7 +6750,9 @@ void BfCompiler::GenerateAutocompleteInfo() auto _EncodeTypeDef = [] (BfTypeDef* typeDef) { - String typeName = typeDef->mProject->mName + ":" + typeDef->mFullName.ToString(); + StringT<128> typeName = typeDef->mProject->mName; + typeName += ":"; + typeName += typeDef->mFullName.ToString(); if (!typeDef->mGenericParamDefs.IsEmpty()) typeName += StrFormat("`%d", (int)typeDef->mGenericParamDefs.size()); return typeName; diff --git a/IDEHelper/Compiler/BfSystem.cpp b/IDEHelper/Compiler/BfSystem.cpp index 7f917496..e5d443e4 100644 --- a/IDEHelper/Compiler/BfSystem.cpp +++ b/IDEHelper/Compiler/BfSystem.cpp @@ -1912,6 +1912,9 @@ void BfSystem::ProcessAtomGraveyard() bool BfSystem::ParseAtomComposite(const StringView& name, BfAtomComposite& composite, bool addRefs) { + if (name.mLength == 0) + return true; + bool isValid = true; SizedArray parts; @@ -2418,7 +2421,31 @@ BfTypeDef* BfSystem::FindTypeDefEx(const StringImpl& fullTypeName) typeName.RemoveToEnd(tildePos); } - return FindTypeDef(typeName, numGenericArgs, project); + BfAtomComposite qualifiedFindName; + BfAtom* tempData[16]; + qualifiedFindName.mAllocSize = 16; + qualifiedFindName.mParts = tempData; + + BfTypeDef* result = NULL; + if (ParseAtomComposite(typeName, qualifiedFindName)) + { + auto itr = mTypeDefs.TryGet(qualifiedFindName); + while (itr) + { + BfTypeDef* typeDef = *itr; + if ((typeDef->mFullName == qualifiedFindName) && (CheckTypeDefReference(typeDef, project)) && + (!typeDef->mIsPartial)) + { + if (typeDef->mGenericParamDefs.size() != numGenericArgs) + continue; + return typeDef; + } + itr.MoveToNextHashMatch(); + } + } + if (qualifiedFindName.mParts == tempData) + qualifiedFindName.mParts = NULL; + return result; } void BfSystem::FindFixitNamespaces(const StringImpl& typeName, int numGenericArgs, BfProject* project, std::set& fixitNamespaces)