mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +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))
|
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))
|
if (auto namedTypeRef = BfNodeDynCast<BfNamedTypeReference>(typeRef))
|
||||||
{
|
{
|
||||||
BfExprEvaluator exprEvaluator(mModule);
|
BfExprEvaluator exprEvaluator(mModule);
|
||||||
auto identifierResult = exprEvaluator.LookupIdentifier(namedTypeRef->mNameNode);
|
auto identifierResult = exprEvaluator.LookupIdentifier(namedTypeRef->mNameNode);
|
||||||
if (identifierResult)
|
if (identifierResult)
|
||||||
return 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))
|
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());
|
auto fieldResult = exprEvaluator.LookupField(qualifiedTypeRef->mRight, leftValue, rightNamedTypeRef->mNameNode->ToString());
|
||||||
if (!fieldResult) // Was property?
|
if (!fieldResult) // Was property?
|
||||||
fieldResult = exprEvaluator.GetResult();
|
fieldResult = exprEvaluator.GetResult();
|
||||||
*isStatic = false;
|
if (fieldResult.HasType())
|
||||||
return _FixType(fieldResult);
|
{
|
||||||
|
*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))
|
if (auto identifier = BfNodeDynCast<BfIdentifierNode>(node))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue