This code throws an internal compiler error.
public delegate IEnumerator SimpleRoutine ();
public void FUNC (SimpleRoutine onStarted = null) {
onStarted = onStarted ?? delegate { yield break; };
}
Looking at the console log, Mono throws this:
Unhandled Exception: Mono.CSharp.InternalErrorException: myscriptatsomepath.cs (174,42): ---> System.NotSupportedException: Operation is not supported.
at Mono.CSharp.YieldBreak.CloneTo (Mono.CSharp.CloneContext clonectx, Mono.CSharp.Statement target) [0x00000] in <filename unknown>:0
at Mono.CSharp.Statement.Clone (Mono.CSharp.CloneContext clonectx) [0x00000] in <filename unknown>:0
at Mono.CSharp.Block.CloneTo (Mono.CSharp.CloneContext clonectx, Mono.CSharp.Statement t) [0x00000] in <filename unknown>:0
at Mono.CSharp.ExplicitBlock.CloneTo (Mono.CSharp.CloneContext clonectx, Mono.CSharp.Statement t) [0x00000] in <filename unknown>:0
at Mono.CSharp.ToplevelBlock.CloneTo (Mono.CSharp.CloneContext clonectx, Mono.CSharp.Statement t) [0x00000] in <filename unknown>:0
at Mono.CSharp.Statement.Clone (Mono.CSharp.CloneContext clonectx) [0x00000] in <filename unknown>:0
at Mono.CSharp.Statement.PerformClone () [0x00000] in <filename unknown>:0
at Mono.CSharp.AnonymousMethodExpression.CompatibleMethod (Mono.CSharp.ResolveContext ec, Mono.CSharp.TypeInferenceContext tic, System.Type return_type, System.Type delegate_type) [0x00000] in <filename unknown>:0
at Mono.CSharp.AnonymousMethodExpression.Compatible (Mono.CSharp.ResolveContext ec, System.Type type) [0x00000] in <filename unknown>:0
--- End of inner exception stack trace ---
at Mono.CSharp.AnonymousMethodExpression.Compatible (Mono.CSharp.ResolveContext ec, System.Type type) [0x00000] in <filename unknown>:0
at Mono.CSharp.AnonymousMethodExpression.ImplicitStandardConversionExists (Mono.CSharp.ResolveContext ec, System.Type delegate_type) [0x00000] in <filename unknown>:0
at Mono.CSharp.Convert.ImplicitConversionExists (Mono.CSharp.ResolveContext ec, Mono.CSharp.Expression expr, System.Type target_type) [0x00000] in <filename unknown>:0
at Mono.CSharp.Nullable.NullCoalescingOperator.ConvertExpression (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Nullable.NullCoalescingOperator.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Assign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.SimpleAssign.DoResolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec, ResolveFlags flags) [0x00000] in <filename unknown>:0
at Mono.CSharp.Expression.Resolve (Mono.CSharp.ResolveContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.ExpressionStatement.ResolveStatement (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.StatementExpression.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.Block.Resolve (Mono.CSharp.BlockContext ec) [0x00000] in <filename unknown>:0
at Mono.CSharp.ToplevelBlock.Resolve (Mono.CSharp.FlowBranching parent, Mono.CSharp.BlockContext rc, Mono.CSharp.ParametersCompiled ip, IMethodData md) [0x00000] in <filename unknown>:0
(Filename: Line: 0)
Is this a known issue? Any workaround? Thanks!