From 39ad1dbe8564b38e9ac75c3552a94f1c6c676d27 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 4 Jul 2020 10:38:46 -0700 Subject: [PATCH] Improved 'var' inference for binary operations --- IDEHelper/Compiler/BfExprEvaluator.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 474a5a75..cd5ada5f 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -18512,7 +18512,13 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod if ((resultType->IsVar()) || (otherType->IsVar())) { - mResult = mModule->GetDefaultTypedValue(resultType); + bool isComparison = (binaryOp >= BfBinaryOp_Equality) && (binaryOp <= BfBinaryOp_LessThanOrEqual); + if (isComparison) + mResult = mModule->GetDefaultTypedValue(mModule->GetPrimitiveType(BfTypeCode_Boolean), false, BfDefaultValueKind_Addr); + else if (mExpectingType != NULL) + mResult = mModule->GetDefaultTypedValue(mExpectingType, false, BfDefaultValueKind_Addr); + else + mResult = mModule->GetDefaultTypedValue(resultType, false, BfDefaultValueKind_Addr); return; }