diff --git a/IDEHelper/Compiler/BfExprEvaluator.cpp b/IDEHelper/Compiler/BfExprEvaluator.cpp index 1af83073..cbf87c90 100644 --- a/IDEHelper/Compiler/BfExprEvaluator.cpp +++ b/IDEHelper/Compiler/BfExprEvaluator.cpp @@ -9563,13 +9563,7 @@ BfTypedValue BfExprEvaluator::CheckEnumCreation(BfAstNode* targetSrc, BfTypeInst continue; argValue = mModule->AggregateSplat(argValue); - argValues.mResolvedArgs[tupleFieldIdx].mExpectedType = resolvedFieldType; - if ((argValues.mResolvedArgs[tupleFieldIdx].mArgFlags & (BfArgFlag_DelegateBindAttempt | BfArgFlag_LambdaBindAttempt | BfArgFlag_UnqualifiedDotAttempt)) != 0) - { - auto expr = BfNodeDynCast(argValues.mResolvedArgs[tupleFieldIdx].mExpression); - BF_ASSERT(expr != NULL); - argValue = mModule->CreateValueFromExpression(expr, resolvedFieldType, (BfEvalExprFlags)(mBfEvalExprFlags & BfEvalExprFlags_InheritFlags)); - } + argValues.mResolvedArgs[tupleFieldIdx].mExpectedType = resolvedFieldType; if (argValue) { diff --git a/IDEHelper/Tests/src/Enums.bf b/IDEHelper/Tests/src/Enums.bf index 8309ee11..6c8a4a58 100644 --- a/IDEHelper/Tests/src/Enums.bf +++ b/IDEHelper/Tests/src/Enums.bf @@ -1,3 +1,4 @@ +#pragma warning disable 4200 #pragma warning disable 168 using System; @@ -127,6 +128,13 @@ namespace Tests D = 4 } + public enum EnumO + { + case None; + case EnumN(EnumN n); + case Delegate(delegate void()); + } + [Test] static void TestBasic() { @@ -227,6 +235,16 @@ namespace Tests const EnumE e0 = .A; const EnumE e1 = .B(1); + + EnumO eo = .Delegate((delegate void()) new () => {}); + if (eo case .Delegate(var dlg)) + delete dlg; + + eo = .EnumN(.A); + + eo = .Delegate(new () => {}); + if (eo case .Delegate(var dlg)) + delete dlg; } [Test]