From a23406d9dd242ce8d6b28d771abb4f94f8d567e5 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 1 Aug 2022 08:25:07 -0400 Subject: [PATCH] Fixed boxing in cast in ternary expression --- IDEHelper/Compiler/BfExprEvaluator.cpp | 4 ++-- IDEHelper/Tests/src/Boxing.bf | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 7b53e9f9..255b0f86 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -19742,8 +19742,6 @@ void BfExprEvaluator::Visit(BfConditionalExpression* condExpr) mModule->FixIntUnknown(falseValue); } - prevInCondBlock.Restore(); - bool isValid = trueValue && falseValue; if (isValid) @@ -19780,6 +19778,8 @@ void BfExprEvaluator::Visit(BfConditionalExpression* condExpr) } } + prevInCondBlock.Restore(); + mModule->mBfIRBuilder->SetInsertPoint(trueBlockPos); if (isValid) trueValue = mModule->LoadValue(trueValue); diff --git a/IDEHelper/Tests/src/Boxing.bf b/IDEHelper/Tests/src/Boxing.bf index d984c001..fd6e069a 100644 --- a/IDEHelper/Tests/src/Boxing.bf +++ b/IDEHelper/Tests/src/Boxing.bf @@ -1,6 +1,7 @@ #pragma warning disable 168 using System; +using System.Collections; namespace Tests { @@ -86,6 +87,9 @@ namespace Tests var scObjResult = scVariant.GetBoxed(); Test.Assert(scObjResult case .Err); scVariant.Dispose(); + + List l = scope .(); + IEnumerator e = (l != null) ? (.)null : l.GetEnumerator(); } [Test]