mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Fixed autocomplete LookupTypeRefOrIdentifier local/type lookup order
This commit is contained in:
parent
9bce9f2ce7
commit
63ef0fed7a
1 changed files with 16 additions and 11 deletions
|
@ -384,21 +384,16 @@ BfTypedValue BfAutoComplete::LookupTypeRefOrIdentifier(BfAstNode* node, bool* is
|
|||
};
|
||||
|
||||
if (auto typeRef = BfNodeDynCast<BfTypeReference>(node))
|
||||
{
|
||||
auto type = mModule->ResolveTypeRef(typeRef);
|
||||
if (type != NULL)
|
||||
{
|
||||
*isStatic = true;
|
||||
return _FixType(BfTypedValue(type));
|
||||
}
|
||||
|
||||
{
|
||||
if (auto namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(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<BfQualifiedTypeReference>(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<BfIdentifierNode>(node))
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue