diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 0b798939..31bc2c97 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -9228,7 +9228,8 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetSymbolReferences(BfCompiler* bfC std::map sortedParserMap; for (auto& parserDataPair : resolvePassData->mFoundSymbolReferencesParserData) { - sortedParserMap.insert(std::make_pair(parserDataPair.mKey->mFileName, &parserDataPair.mValue)); + if (!parserDataPair.mKey->mFileName.Contains('|')) + sortedParserMap.insert(std::make_pair(parserDataPair.mKey->mFileName, &parserDataPair.mValue)); } for (auto& parserData : sortedParserMap) diff --git a/IDEHelper/Compiler/BfResolvePass.cpp b/IDEHelper/Compiler/BfResolvePass.cpp index 47e1cc9f..e6ec65cc 100644 --- a/IDEHelper/Compiler/BfResolvePass.cpp +++ b/IDEHelper/Compiler/BfResolvePass.cpp @@ -57,28 +57,28 @@ void BfResolvePassData::RecordReplaceNode(BfAstNode* node) void BfResolvePassData::HandleMethodReference(BfAstNode* node, BfTypeDef* typeDef, BfMethodDef* methodDef) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Method) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferenceMethodIdx == methodDef->mIdx) && (!methodDef->mDeclaringType->IsEmitted())) + (mSymbolReferenceMethodIdx == methodDef->mIdx)) RecordReplaceNode(node); } void BfResolvePassData::HandleFieldReference(BfAstNode* node, BfTypeDef* typeDef, BfFieldDef* fieldDef) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Field) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferenceFieldIdx == fieldDef->mIdx) && (!fieldDef->mDeclaringType->IsEmitted())) + (mSymbolReferenceFieldIdx == fieldDef->mIdx)) RecordReplaceNode(node); } void BfResolvePassData::HandlePropertyReference(BfAstNode* node, BfTypeDef* typeDef, BfPropertyDef* propDef) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Property) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferencePropertyIdx == propDef->mIdx) && (!propDef->mDeclaringType->IsEmitted())) + (mSymbolReferencePropertyIdx == propDef->mIdx)) RecordReplaceNode(node); } void BfResolvePassData::HandleLocalReference(BfIdentifierNode* identifier, BfTypeDef* typeDef, BfMethodDef* methodDef, int localVarIdx) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Local) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferenceMethodIdx == methodDef->mIdx) && (localVarIdx == mSymbolReferenceLocalIdx) && (!methodDef->mDeclaringType->IsEmitted())) + (mSymbolReferenceMethodIdx == methodDef->mIdx) && (localVarIdx == mSymbolReferenceLocalIdx)) RecordReplaceNode(identifier); } @@ -91,14 +91,14 @@ void BfResolvePassData::HandleTypeGenericParam(BfAstNode* node, BfTypeDef* typeD void BfResolvePassData::HandleMethodGenericParam(BfAstNode* node, BfTypeDef* typeDef, BfMethodDef* methodDef, int genericParamIdx) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_MethodGenericParam) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferenceMethodIdx == methodDef->mIdx) && (genericParamIdx == mSymbolMethodGenericParamIdx) && (!methodDef->mDeclaringType->IsEmitted())) + (mSymbolReferenceMethodIdx == methodDef->mIdx) && (genericParamIdx == mSymbolMethodGenericParamIdx)) RecordReplaceNode(node); } void BfResolvePassData::HandleLocalReference(BfIdentifierNode* identifier, BfIdentifierNode* origNameNode, BfTypeDef* typeDef, BfMethodDef* methodDef, int localVarIdx) { if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Local) && (mSymbolReferenceTypeDef == typeDef->GetDefinition()) && - (mSymbolReferenceMethodIdx == methodDef->mIdx) && (localVarIdx == mSymbolReferenceLocalIdx) && (!methodDef->mDeclaringType->IsEmitted())) + (mSymbolReferenceMethodIdx == methodDef->mIdx) && (localVarIdx == mSymbolReferenceLocalIdx)) { if (origNameNode == NULL) origNameNode = identifier; @@ -145,7 +145,7 @@ BfAstNode* BfResolvePassData::FindBaseNode(BfAstNode* node) void BfResolvePassData::HandleTypeReference(BfAstNode* node, BfTypeDef* typeDef) { - if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Type) && (mSymbolReferenceTypeDef == typeDef)) + if ((mGetSymbolReferenceKind == BfGetSymbolReferenceKind_Type) && (mSymbolReferenceTypeDef == typeDef->GetDefinition())) { auto baseNode = FindBaseNode(node); if (baseNode != NULL) diff --git a/IDEHelper/Compiler/BfSystem.cpp b/IDEHelper/Compiler/BfSystem.cpp index 7b61e008..862e23bc 100644 --- a/IDEHelper/Compiler/BfSystem.cpp +++ b/IDEHelper/Compiler/BfSystem.cpp @@ -2141,18 +2141,21 @@ void BfSystem::SanityCheckAtomComposite(const BfAtomComposite& atomComposite) void BfSystem::TrackName(BfTypeDef* typeDef) { - for (int i = 0; i < (int)typeDef->mFullName.mSize - 1; i++) + if (!typeDef->IsEmitted()) { - auto prevAtom = typeDef->mFullName.mParts[i]; - auto atom = typeDef->mFullName.mParts[i + 1]; - int* countPtr; - if (atom->mPrevNamesMap.TryAdd(prevAtom, NULL, &countPtr)) + for (int i = 0; i < (int)typeDef->mFullName.mSize - 1; i++) { - *countPtr = 1; - } - else - { - (*countPtr)++; + auto prevAtom = typeDef->mFullName.mParts[i]; + auto atom = typeDef->mFullName.mParts[i + 1]; + int* countPtr; + if (atom->mPrevNamesMap.TryAdd(prevAtom, NULL, &countPtr)) + { + *countPtr = 1; + } + else + { + (*countPtr)++; + } } } } @@ -2165,7 +2168,7 @@ void BfSystem::UntrackName(BfTypeDef* typeDef) nameAtom->mAtomUpdateIdx = ++mAtomUpdateIdx; } - if (!typeDef->mIsCombinedPartial) + if ((!typeDef->mIsCombinedPartial) && (!typeDef->IsEmitted())) { for (int i = 0; i < (int)typeDef->mFullName.mSize - 1; i++) { @@ -3036,7 +3039,7 @@ void BfSystem::AddToCompositePartial(BfPassInstance* passInstance, BfTypeDef* co { BfPropertyDef* newProp = new BfPropertyDef(); *newProp = *prop; - + BF_ASSERT(newProp->mDeclaringType != NULL); for (int methodIdx = 0; methodIdx < (int)newProp->mMethods.size(); methodIdx++) newProp->mMethods[methodIdx] = typeDef->mMethods[startMethodIdx + newProp->mMethods[methodIdx]->mIdx]; typeDef->mProperties.push_back(newProp); @@ -3298,7 +3301,7 @@ void BfSystem::CopyTypeDef(BfTypeDef* typeDef, BfTypeDef* fromTypeDef) if (typeDef->mNameEx != NULL) typeDef->mNameEx->mRefCount++; //typeDef->mNameEx = fromTypeDef->mNameEx; - //typeDef->mFullName = fromTypeDef->mFullName; + typeDef->mFullName = fromTypeDef->mFullName; typeDef->mFullNameEx = fromTypeDef->mFullNameEx; //RefAtomComposite(typeDef->mFullNameEx);