diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 745fd450..bbe00723 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -3822,20 +3822,31 @@ void BfCompiler::ProcessAutocompleteTempType() continue; // Don't process auto-generated property fields if (fieldDef->mTypeRef != NULL) - module->ResolveTypeRef(fieldDef->mTypeRef); + { + module->ResolveTypeRef(fieldDef->mTypeRef); + } mResolvePassData->mAutoComplete->CheckTypeRef(fieldDef->mTypeRef, true); + actualTypeDef->PopulateMemberSets(); + BfFieldDef* actualFieldDef = NULL; - for (auto checkFieldDef : actualTypeDef->mFields) - { - if ((checkFieldDef->mName == fieldDef->mName) && - (checkFieldDef->mIsConst == fieldDef->mIsConst) && + BfMemberSetEntry* memberSetEntry = NULL; + if (actualTypeDef->mFieldSet.TryGetWith(fieldDef->mName, &memberSetEntry)) + { + auto checkFieldDef = (BfFieldDef*)memberSetEntry->mMemberDef; + if ((checkFieldDef->mIsConst == fieldDef->mIsConst) && (checkFieldDef->mIsStatic == fieldDef->mIsStatic)) { actualFieldDef = checkFieldDef; } } + if (actualFieldDef != NULL) + { + auto fieldInstance = &typeInst->mFieldInstances[actualFieldDef->mIdx]; + autoComplete->CheckVarResolution(fieldDef->mTypeRef, fieldInstance->mResolvedType); + } + if (((autoComplete->mIsGetDefinition) || (autoComplete->mResolveType == BfResolveType_GetResultString)) && (fieldDef->mFieldDeclaration != NULL) && (autoComplete->IsAutocompleteNode(fieldDef->mFieldDeclaration->mNameNode))) {