[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[])