[Mono-bugs] [Bug 363218] New: Cannot use an anonymous method returning a multidimensional array as a delegate

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Feb 20 06:59:15 EST 2008


https://bugzilla.novell.com/show_bug.cgi?id=363218


           Summary: Cannot use an anonymous method returning a
                    multidimensional array as a delegate
           Product: Mono: Compilers
           Version: 1.9.0
          Platform: i686
        OS/Version: Other
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: rook at roo.k.pl
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


The code:

static class Foo
{
  delegate string[,] SimpleDelegate();

  static void Baz(SimpleDelegate sd)
  {
        sd();
  }

  public static void Main(string[] args)
  {
      Baz(delegate() {
        return new string[,] { "aa", "bb" };
      });
  }
}

Crashes gmcs 1.9 (downloaded from
http://mono.ximian.com/monobuild/preview/download-preview/)

Stac trace:
Unhandled Exception: Mono.CSharp.InternalErrorException: aa.cs(12,11): --->
System.InvalidCastException: Cannot cast from source type to destination type.
  at Mono.CSharp.ArrayCreation.CloneTo (Mono.CSharp.CloneContext clonectx,
Mono.CSharp.Expression t) [0x00000]
  at Mono.CSharp.Expression.Clone (Mono.CSharp.CloneContext clonectx) [0x00000]
  at Mono.CSharp.Return.CloneTo (Mono.CSharp.CloneContext clonectx,
Mono.CSharp.Statement t) [0x00000]
  at Mono.CSharp.Statement.Clone (Mono.CSharp.CloneContext clonectx) [0x00000]
  at Mono.CSharp.Block.CloneTo (Mono.CSharp.CloneContext clonectx,
Mono.CSharp.Statement t) [0x00000]
  at Mono.CSharp.ExplicitBlock.CloneTo (Mono.CSharp.CloneContext clonectx,
Mono.CSharp.Statement t) [0x00000]
  at Mono.CSharp.ToplevelBlock.CloneTo (Mono.CSharp.CloneContext clonectx,
Mono.CSharp.Statement t) [0x00000]
  at Mono.CSharp.Statement.Clone (Mono.CSharp.CloneContext clonectx) [0x00000]
  at Mono.CSharp.Statement.PerformClone () [0x00000]
  at Mono.CSharp.AnonymousMethodExpression.CompatibleMethod
(Mono.CSharp.EmitContext ec, Mono.CSharp.TypeInferenceContext tic, System.Type
return_type, System.Type delegate_type) [0x00000]
  at Mono.CSharp.AnonymousMethodExpression.Compatible (Mono.CSharp.EmitContext
ec, System.Type type) [0x00000] --- End of inner exception stack trace ---

  at Mono.CSharp.AnonymousMethodExpression.Compatible (Mono.CSharp.EmitContext
ec, System.Type type) [0x00000]
  at Mono.CSharp.AnonymousMethodExpression.ImplicitStandardConversionExists
(System.Type delegate_type) [0x00000]
  at Mono.CSharp.Convert.ImplicitStandardConversionExists
(Mono.CSharp.Expression expr, System.Type target_type) [0x00000]
  at Mono.CSharp.Convert.ImplicitConversionExists (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression expr, System.Type target_type) [0x00000]
  at Mono.CSharp.MethodGroupExpr.IsArgumentCompatible (Mono.CSharp.EmitContext
ec, Modifier arg_mod, Mono.CSharp.Argument argument, Modifier param_mod,
System.Type parameter) [0x00000]
  at Mono.CSharp.MethodGroupExpr.IsApplicable (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments, Int32 arg_count,
System.Reflection.MethodBase& method, System.Boolean& params_expanded_form)
[0x00000]
  at Mono.CSharp.MethodGroupExpr.OverloadResolve (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList& Arguments, Boolean may_fail, Location loc)
[0x00000]
  at Mono.CSharp.Invocation.DoResolveOverload (Mono.CSharp.EmitContext ec)
[0x00000]
  at Mono.CSharp.Invocation.DoResolve (Mono.CSharp.EmitContext ec) [0x00000]
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000]
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec) [0x00000]
  at Mono.CSharp.ExpressionStatement.ResolveStatement (Mono.CSharp.EmitContext
ec) [0x00000]
  at Mono.CSharp.StatementExpression.Resolve (Mono.CSharp.EmitContext ec)
[0x00000]
  at Mono.CSharp.Block.Resolve (Mono.CSharp.EmitContext ec) [0x00000]
  at Mono.CSharp.EmitContext.ResolveTopBlock (Mono.CSharp.EmitContext
anonymous_method_host, Mono.CSharp.ToplevelBlock block, Mono.CSharp.Parameters
ip, IMethodData md, System.Boolean& unreachable) [0x00000]


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the mono-bugs mailing list