[Mono-bugs] [Bug 38291][Min] Changed - Strange Reflection crash.

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
Thu, 27 Feb 2003 08:39:19 -0500 (EST)

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 martin@ximian.com.


--- shadow/38291	Tue Feb 25 05:50:12 2003
+++ shadow/38291.tmp.29874	Thu Feb 27 08:39:19 2003
@@ -171,6 +171,40 @@
 I put martin on the cc line because he seems to be the author of the
 cast checking code for Array.Copy() and he was also involved in the
 MemberLookup in mcs, so he might have some clues about both bugs.
+------- Additional Comments From martin@ximian.com  2003-02-27 08:39 -------
+By inserting a Console.WriteLine, I get the following on Windows, so this explains the InvalidCastException
+martin@ATLANTIS //townsville/martin/monocvs/work
+$ /home/martin/mcs.exe A.cs
+MEMBER: System.String Item [Int32] System.Reflection.RuntimePropertyInfo
+MEMBER: System.String Item [System.String] System.Reflection.RuntimePropertyInfo
+Exception caught by the compiler while compiling:
+   Block that caused the problem begin at: A.cs: (3)
+                     Block being compiled: [A.cs: (3),A.cs: (6)]
+Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.
+   at Mono.CSharp.MethodGroupExpr.get_IsInstance()
+   at Mono.CSharp.MemberAccess.ResolveMemberAccess(EmitContext ec, Expression member_lookup, Expression left, Location loc, 
+Expression left_original)
+   at Mono.CSharp.MemberAccess.DoResolve(EmitContext ec, Expression right_side, ResolveFlags flags)
+   at Mono.CSharp.MemberAccess.DoResolve(EmitContext ec)
+   at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags flags)
+   at Mono.CSharp.ElementAccess.CommonResolve(EmitContext ec)
+   at Mono.CSharp.ElementAccess.DoResolveLValue(EmitContext ec, Expression right_side)
+   at Mono.CSharp.Expression.ResolveLValue(EmitContext ec, Expression right_side)
+   at Mono.CSharp.Assign.DoResolve(EmitContext ec)
+   at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags flags)
+   at Mono.CSharp.StatementExpression.Resolve(EmitContext ec)
+   at Mono.CSharp.Block.Resolve(EmitContext ec)
+   at Mono.CSharp.EmitContext.EmitTopBlock(Block block, InternalParameters ip, Location loc)
+   at Mono.CSharp.MethodData.Emit(TypeContainer parent, Block block, Object kind)
+   at Mono.CSharp.TypeContainer.Emit()
+   at Mono.CSharp.RootContext.EmitCode()
+   at Mono.CSharp.Driver.MainDriver(String[] args)
+   at Mono.CSharp.Driver.Main(String[] args)