mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-16 23:34:10 +02:00
Fixed unary '+' overload
This commit is contained in:
parent
6975d1ce40
commit
783bdb15be
1 changed files with 13 additions and 9 deletions
|
@ -2174,10 +2174,7 @@ BfExpression* BfReducer::CreateExpression(BfAstNode* node, CreateExprFlags creat
|
||||||
BfUnaryOp unaryOp = BfTokenToUnaryOp(tokenNode->GetToken());
|
BfUnaryOp unaryOp = BfTokenToUnaryOp(tokenNode->GetToken());
|
||||||
|
|
||||||
if (unaryOp != BfUnaryOp_None)
|
if (unaryOp != BfUnaryOp_None)
|
||||||
{
|
{
|
||||||
if (unaryOp == BfUnaryOp_Positive)
|
|
||||||
Fail("Unary operator '+' not allowed", tokenNode);
|
|
||||||
|
|
||||||
unaryOpExpr = mAlloc->Alloc<BfUnaryOperatorExpression>();
|
unaryOpExpr = mAlloc->Alloc<BfUnaryOperatorExpression>();
|
||||||
unaryOpExpr->mOp = unaryOp;
|
unaryOpExpr->mOp = unaryOp;
|
||||||
unaryOpExpr->mOpToken = tokenNode;
|
unaryOpExpr->mOpToken = tokenNode;
|
||||||
|
@ -6625,12 +6622,19 @@ BfAstNode* BfReducer::ReadTypeMember(BfAstNode* node, int depth)
|
||||||
}
|
}
|
||||||
|
|
||||||
ParseMethod(operatorDecl, ¶ms, &commas);
|
ParseMethod(operatorDecl, ¶ms, &commas);
|
||||||
|
|
||||||
// This was the one ambiguous case
|
if (params.size() == 1)
|
||||||
if ((operatorDecl->mBinOp == BfBinaryOp_Subtract) && (params.size() == 1))
|
|
||||||
{
|
{
|
||||||
operatorDecl->mBinOp = BfBinaryOp_None;
|
if (operatorDecl->mBinOp == BfBinaryOp_Add)
|
||||||
operatorDecl->mUnaryOp = BfUnaryOp_Negate;
|
{
|
||||||
|
operatorDecl->mBinOp = BfBinaryOp_None;
|
||||||
|
operatorDecl->mUnaryOp = BfUnaryOp_Positive;
|
||||||
|
}
|
||||||
|
else if (operatorDecl->mBinOp == BfBinaryOp_Subtract)
|
||||||
|
{
|
||||||
|
operatorDecl->mBinOp = BfBinaryOp_None;
|
||||||
|
operatorDecl->mUnaryOp = BfUnaryOp_Negate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return operatorDecl;
|
return operatorDecl;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue