mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Expanded detection of unqualified-dot-attempt in arguments
This commit is contained in:
parent
ded495a07b
commit
fe6d5fa16f
1 changed files with 30 additions and 20 deletions
|
@ -6103,26 +6103,7 @@ void BfExprEvaluator::ResolveArgValues(BfResolvedArgs& resolvedArgs, BfResolveAr
|
|||
{
|
||||
resolvedArg.mArgFlags = (BfArgFlags)(resolvedArg.mArgFlags | BfArgFlag_LambdaBindAttempt);
|
||||
handled = true;
|
||||
}
|
||||
else if (auto memberRef = BfNodeDynCast<BfMemberReferenceExpression>(argExpr))
|
||||
{
|
||||
if (memberRef->mTarget == NULL)
|
||||
{
|
||||
resolvedArg.mArgFlags = (BfArgFlags)(resolvedArg.mArgFlags | BfArgFlag_UnqualifiedDotAttempt);
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
else if (auto invokeExpr = BfNodeDynCast<BfInvocationExpression>(argExpr))
|
||||
{
|
||||
if (auto memberRef = BfNodeDynCast<BfMemberReferenceExpression>(invokeExpr->mTarget))
|
||||
{
|
||||
if (memberRef->mTarget == NULL)
|
||||
{
|
||||
resolvedArg.mArgFlags = (BfArgFlags)(resolvedArg.mArgFlags | BfArgFlag_UnqualifiedDotAttempt);
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (auto defaultExpr = BfNodeDynCast<BfDefaultExpression>(argExpr))
|
||||
{
|
||||
if (defaultExpr->mTypeRef == NULL)
|
||||
|
@ -6161,6 +6142,35 @@ void BfExprEvaluator::ResolveArgValues(BfResolvedArgs& resolvedArgs, BfResolveAr
|
|||
}
|
||||
}*/
|
||||
|
||||
if (!handled)
|
||||
{
|
||||
BfAstNode* checkArgExpr = argExpr;
|
||||
while (checkArgExpr != NULL)
|
||||
{
|
||||
if (auto memberRef = BfNodeDynCast<BfMemberReferenceExpression>(checkArgExpr))
|
||||
{
|
||||
if (memberRef->mTarget == NULL)
|
||||
{
|
||||
resolvedArg.mArgFlags = (BfArgFlags)(resolvedArg.mArgFlags | BfArgFlag_UnqualifiedDotAttempt);
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
checkArgExpr = memberRef->mTarget;
|
||||
}
|
||||
else if (auto invokeExpr = BfNodeDynCast<BfInvocationExpression>(checkArgExpr))
|
||||
{
|
||||
checkArgExpr = invokeExpr->mTarget;
|
||||
}
|
||||
else if (auto parenExpr = BfNodeDynCast<BfParenthesizedExpression>(checkArgExpr))
|
||||
{
|
||||
checkArgExpr = parenExpr->mExpression;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((argExpr != NULL) && (!handled))
|
||||
{
|
||||
bool deferParamValues = (flags & BfResolveArgsFlag_DeferParamValues) != 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue