[Mono-bugs] [Bug 561149] New: gmcs fails to compile class with two IEnumerable's

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Sat Dec 5 14:01:26 EST 2009


http://bugzilla.novell.com/show_bug.cgi?id=561149

http://bugzilla.novell.com/show_bug.cgi?id=561149#c0


           Summary: gmcs fails to compile class with two IEnumerable's
    Classification: Mono
           Product: Mono: Compilers
           Version: 2.4.x
          Platform: x86
        OS/Version: Windows XP
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: rvesse at vdesign-studios.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---
           Blocker: ---


Created an attachment (id=331201)
 --> (http://bugzilla.novell.com/attachment.cgi?id=331201)
Code which fails to compile

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5)
Gecko/20091102 Firefox/3.5.5

When attempting to compile a class which contains two definitions of the
IEnumerable GetEnumerator() method the compiler fails and emits the following
stack trace when it attempts to compile the second GetEnumerator definition:

Exception caught by the compiler while emitting:
   Block that caused the problem begin at: HashTable.cs(348,9):
System.NullReferenceException: Object reference not set to an instance of an
object
Internal compiler error at HashTable.cs(347,49):: exception caught while
emitting MethodBuilder
[HashTable`2::System.Collections.Generic.IEnumerable<TValue>.GetEnumerator]

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object

  at Mono.CSharp.AnonymousMethodBody.DoCreateMethodHost
(Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.AnonymousMethodBody.Emit (Mono.CSharp.EmitContext ec)
[0x00000] 

  at Mono.CSharp.Argument.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Invocation.EmitArguments (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments, Boolean dup_args,
Mono.CSharp.LocalTemporary this_arg) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc, Boolean dup_args,
Boolean omit_args) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc) [0x00000] 

  at Mono.CSharp.MethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.ExtensionMethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.Invocation.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc, Boolean dup_args,
Boolean omit_args) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc) [0x00000] 

  at Mono.CSharp.MethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.Invocation.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Return.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.EmitContext.EmitResolvedTopBlock (Mono.CSharp.ToplevelBlock
block, Boolean unreachable) [0x00000] 

  at Mono.CSharp.EmitContext.EmitTopBlock (IMethodData md,
Mono.CSharp.ToplevelBlock block) [0x00000] 

In an email conversation with Marek Safar starting on the Mono develop mailing
list Marek believes this to be a bug and asked me to report it.

This code should compile fine and does so using Microsoft's C# compiler.

Reproducible: Always

Steps to Reproduce:
1. At the Mono command prompt type the following
gmcs -out:dotNetRDF.Mono.dll -t:library -v HashTable.cs
Actual Results:  
Compiler fails and following Stack Trace is produced:


Exception caught by the compiler while emitting:
   Block that caused the problem begin at: HashTable.cs(348,9):
System.NullReferenceException: Object reference not set to an instance of an
object
Internal compiler error at HashTable.cs(347,49):: exception caught while
emitting MethodBuilder
[HashTable`2::System.Collections.Generic.IEnumerable<TValue>.GetEnumerator]

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object

  at Mono.CSharp.AnonymousMethodBody.DoCreateMethodHost
(Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.AnonymousMethodBody.Emit (Mono.CSharp.EmitContext ec)
[0x00000] 

  at Mono.CSharp.Argument.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Invocation.EmitArguments (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments, Boolean dup_args,
Mono.CSharp.LocalTemporary this_arg) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc, Boolean dup_args,
Boolean omit_args) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc) [0x00000] 

  at Mono.CSharp.MethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.ExtensionMethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.Invocation.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc, Boolean dup_args,
Boolean omit_args) [0x00000] 

  at Mono.CSharp.Invocation.EmitCall (Mono.CSharp.EmitContext ec, Boolean
is_base, Mono.CSharp.Expression instance_expr, System.Reflection.MethodBase
method, System.Collections.ArrayList Arguments, Location loc) [0x00000] 

  at Mono.CSharp.MethodGroupExpr.EmitCall (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList arguments) [0x00000] 

  at Mono.CSharp.Invocation.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Return.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Block.DoEmit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.Block.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.ExplicitBlock.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.ToplevelBlock.Emit (Mono.CSharp.EmitContext ec) [0x00000] 

  at Mono.CSharp.EmitContext.EmitResolvedTopBlock (Mono.CSharp.ToplevelBlock
block, Boolean unreachable) [0x00000] 

  at Mono.CSharp.EmitContext.EmitTopBlock (IMethodData md,
Mono.CSharp.ToplevelBlock block) [0x00000] 

Expected Results:  
Compile without issue

-- 
Configure bugmail: http://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