From c555b8b7ef080db067159f7d9e91f8f3136ecac4 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 2 Dec 2024 12:27:49 -0500 Subject: [PATCH] Fixed int-unknown shift, wantType with int(X) style cast --- IDEHelper/Compiler/BfExprEvaluator.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index fb2694a9..68af0188 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -7460,7 +7460,7 @@ void BfExprEvaluator::FinishDeferredEvals(SizedArrayImpl& argValu { auto expr = BfNodeDynCast(argValues[argIdx].mExpression); if (expr != NULL) - argValue = mModule->CreateValueFromExpression(expr); + argValue = mModule->CreateValueFromExpression(expr, argValues[argIdx].mExpectedType); } } } @@ -10076,6 +10076,9 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp if ((refType != NULL) && (refType->IsPrimitiveType())) { + for (auto& resolvedArg : argValues.mResolvedArgs) + resolvedArg.mExpectedType = refType; + FinishDeferredEvals(argValues); if (argValues.mResolvedArgs.IsEmpty()) @@ -23882,6 +23885,7 @@ void BfExprEvaluator::PerformBinaryOperation(BfAstNode* leftExpression, BfAstNod if ((binaryOp == BfBinaryOp_LeftShift) || (binaryOp == BfBinaryOp_RightShift)) { forceLeftType = true; + mModule->FixIntUnknown(leftValue); } if (rightValue.mType->IsRef())