diff --git a/IDEHelper/Compiler/BfAutoComplete.cpp b/IDEHelper/Compiler/BfAutoComplete.cpp index be87a627..84d9ba6f 100644 --- a/IDEHelper/Compiler/BfAutoComplete.cpp +++ b/IDEHelper/Compiler/BfAutoComplete.cpp @@ -384,21 +384,16 @@ BfTypedValue BfAutoComplete::LookupTypeRefOrIdentifier(BfAstNode* node, bool* is }; if (auto typeRef = BfNodeDynCast(node)) - { - auto type = mModule->ResolveTypeRef(typeRef); - if (type != NULL) - { - *isStatic = true; - return _FixType(BfTypedValue(type)); - } - + { if (auto namedTypeRef = BfNodeDynCast(typeRef)) { BfExprEvaluator exprEvaluator(mModule); auto identifierResult = exprEvaluator.LookupIdentifier(namedTypeRef->mNameNode); if (identifierResult) return identifierResult; - return _FixType(exprEvaluator.GetResult()); // We need 'GetResult' to read property values + identifierResult = exprEvaluator.GetResult();// We need 'GetResult' to read property values + if (identifierResult.HasType()) + return _FixType(identifierResult); } else if (auto qualifiedTypeRef = BfNodeDynCast(typeRef)) { @@ -423,11 +418,21 @@ BfTypedValue BfAutoComplete::LookupTypeRefOrIdentifier(BfAstNode* node, bool* is auto fieldResult = exprEvaluator.LookupField(qualifiedTypeRef->mRight, leftValue, rightNamedTypeRef->mNameNode->ToString()); if (!fieldResult) // Was property? fieldResult = exprEvaluator.GetResult(); - *isStatic = false; - return _FixType(fieldResult); + if (fieldResult.HasType()) + { + *isStatic = false; + return _FixType(fieldResult); + } } } } + + auto type = mModule->ResolveTypeRef(typeRef); + if (type != NULL) + { + *isStatic = true; + return _FixType(BfTypedValue(type)); + } } if (auto identifier = BfNodeDynCast(node)) {