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);
|
resolvedArg.mArgFlags = (BfArgFlags)(resolvedArg.mArgFlags | BfArgFlag_LambdaBindAttempt);
|
||||||
handled = true;
|
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))
|
else if (auto defaultExpr = BfNodeDynCast<BfDefaultExpression>(argExpr))
|
||||||
{
|
{
|
||||||
if (defaultExpr->mTypeRef == NULL)
|
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))
|
if ((argExpr != NULL) && (!handled))
|
||||||
{
|
{
|
||||||
bool deferParamValues = (flags & BfResolveArgsFlag_DeferParamValues) != 0;
|
bool deferParamValues = (flags & BfResolveArgsFlag_DeferParamValues) != 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue