1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 04:22:20 +02:00

Fixed valueless alias, warn on unused attribute

This commit is contained in:
Brian Fiete 2020-08-16 15:56:09 -07:00
parent 83ed41e81a
commit 5a3701fa90
4 changed files with 17 additions and 13 deletions

View file

@ -2582,6 +2582,7 @@ void BfExprEvaluator::Visit(BfTypeReference* typeRef)
void BfExprEvaluator::Visit(BfAttributedExpression* attribExpr)
{
BfAttributeState attributeState;
attributeState.mSrc = attribExpr->mAttributes;
attributeState.mTarget = (BfAttributeTargets)(BfAttributeTargets_Invocation | BfAttributeTargets_MemberAccess);
if (auto block = BfNodeDynCast<BfBlock>(attribExpr->mExpression))
attributeState.mTarget = BfAttributeTargets_Block;
@ -2606,10 +2607,7 @@ void BfExprEvaluator::Visit(BfAttributedExpression* attribExpr)
VisitChild(attribExpr->mExpression);
}
if (!attributeState.mUsed)
{
mModule->Fail("Unused attributes", attribExpr->mAttributes);
}
mModule->FinishAttributeState(&attributeState);
}
void BfExprEvaluator::Visit(BfBlock* blockExpr)
@ -13769,6 +13767,10 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
{
//TODO: Implement
}
else if (newLocalVar->mResolvedType->IsValuelessType())
{
// Do nothing
}
else
{
BfIRValue value = newLocalVar->mValue;
@ -14682,10 +14684,8 @@ void BfExprEvaluator::DoInvocation(BfAstNode* target, BfMethodBoundExpression* m
mResult = MatchMethod(methodNodeSrc, methodBoundExpr, thisValue, allowImplicitThis, bypassVirtual, targetFunctionName, argValues, methodGenericArguments, checkedKind);
argValues.HandleFixits(mModule);
if ((mModule->mAttributeState == &attributeState) && (!attributeState.mUsed))
{
mModule->Fail("Unused attributes", attributeState.mSrc);
}
if (mModule->mAttributeState == &attributeState)
mModule->FinishAttributeState(&attributeState);
if (isCascade)
{