From 0b71897461537ef18cb3e8980e12835f008aba1b Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Tue, 28 Jan 2020 10:57:57 -0800 Subject: [PATCH] Added mouseover for let/var fields --- IDEHelper/Compiler/BfCompiler.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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))) {