[Mono-bugs] [Bug 63143][Wis] New - mcs crashes if array initializer contains a delegate which references an instance member
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Mon, 16 Aug 2004 08:37:16 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by colin@breame.com.
http://bugzilla.ximian.com/show_bug.cgi?id=63143
--- shadow/63143 2004-08-16 08:37:16.000000000 -0400
+++ shadow/63143.tmp.16103 2004-08-16 08:37:16.000000000 -0400
@@ -0,0 +1,60 @@
+Bug#: 63143
+Product: Mono: Compilers
+Version: unspecified
+OS:
+OS Details: Gentoo
+Status: NEW
+Resolution:
+Severity:
+Priority: Wishlist
+Component: C#
+AssignedTo: mono-bugs@ximian.com
+ReportedBy: colin@breame.com
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: mcs crashes if array initializer contains a delegate which references an instance member
+
+mcs 1.0.1.
+
+public class A {
+ D[] d = {
+ new D(f)
+ };
+
+ public void f() {}
+}
+
+public delegate void D();
+
+$ mcs test.cs
+test.cs(3) error CS0236: A field initializer cannot reference the
+non-static field, method or property `f'
+
+Unhandled Exception: System.Exception: Expression Mono.CSharp.New ExprClass
+is Invalid after resolve
+in <0x0039c> Mono.CSharp.Expression:Resolve
+(Mono.CSharp.EmitContext,Mono.CSharp.ResolveFlags)
+in <0x00017> Mono.CSharp.Expression:Resolve (Mono.CSharp.EmitContext)
+in <0x003a7> Mono.CSharp.ArrayCreation:CheckIndices
+(Mono.CSharp.EmitContext,System.Collections.ArrayList,int,bool)
+in <0x000b3> Mono.CSharp.ArrayCreation:ValidateInitializers
+(Mono.CSharp.EmitContext,System.Type)
+in <0x00090> Mono.CSharp.ArrayCreation:DoResolve (Mono.CSharp.EmitContext)
+in <0x000ed> Mono.CSharp.Expression:Resolve
+(Mono.CSharp.EmitContext,Mono.CSharp.ResolveFlags)
+in <0x00017> Mono.CSharp.Expression:Resolve (Mono.CSharp.EmitContext)
+in <0x000df> Mono.CSharp.Assign:DoResolve (Mono.CSharp.EmitContext)
+in <0x000ed> Mono.CSharp.Expression:Resolve
+(Mono.CSharp.EmitContext,Mono.CSharp.ResolveFlags)
+in <0x00017> Mono.CSharp.Expression:Resolve (Mono.CSharp.EmitContext)
+in <0x00020> Mono.CSharp.ExpressionStatement:ResolveStatement
+(Mono.CSharp.EmitContext)
+in <0x001b7> Mono.CSharp.TypeContainer:EmitFieldInitializers
+(Mono.CSharp.EmitContext)
+in <0x00388> Mono.CSharp.Constructor:Emit (Mono.CSharp.TypeContainer)
+in <0x00427> Mono.CSharp.TypeContainer:Emit ()
+in <0x00896> Mono.CSharp.RootContext:EmitCode ()
+in <0x00c35> Mono.CSharp.Driver:MainDriver (string[])
+in <0x00012> Mono.CSharp.Driver:Main (string[])