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

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


           Summary: System.ArgumentException thrown while compiling
                    exception code with generic method
    Classification: Mono
           Product: Mono: Compilers
           Version: SVN
          Platform: x86-64
        OS/Version: RHEL 4
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs@lists.ximian.com
        ReportedBy: billholme...@gmail.com
         QAContact: mono-bugs@lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.3)
Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)

In the sample below notice that the catch block names an unused variable.  If
you remove the variable name from the catch argument list the bug does not
occur.

Reproducible: Always

Steps to Reproduce:
//Compile the attached sample - gmcs -target:library throwBug.cs

using System;

public class Test
{
        public System.Collections.Generic.IEnumerable<int> TestMethod ()
        {
                try
                {

                }
                catch (Exception ex)
                {
                        throw;
                }
                yield break;
        }
}
Actual Results:  
Internal compiler error at throwBug.cs(5,60):: exception caught while emitting
MethodBuilder [<TestMethod>c__Iterator0::MoveNext]

Unhandled Exception: Mono.CSharp.InternalErrorException: Helper class already
defined!
  at Mono.CSharp.CompilerGeneratedClass.CheckMembersDefined () [0x00000]
  at Mono.CSharp.AnonymousMethodStorey.AddCapturedVariable (System.String name,
System.Type type) [0x00000]
  at Mono.CSharp.HoistedVariable..ctor (Mono.CSharp.AnonymousMethodStorey
storey, System.String name, System.Type type) [0x00000]
  at Mono.CSharp.HoistedLocalVariable..ctor (Mono.CSharp.AnonymousMethodStorey
scope, Mono.CSharp.LocalInfo local, System.String name) [0x00000]
  at Mono.CSharp.AnonymousMethodStorey.CaptureLocalVariable
(Mono.CSharp.EmitContext ec, Mono.CSharp.LocalInfo local_info) [0x00000]
  at Mono.CSharp.LocalVariableReference.DoResolveBase (Mono.CSharp.EmitContext
ec) [0x00000]
  at Mono.CSharp.LocalVariableReference.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.Catch.DoEmit (Mono.CSharp.EmitContext ec) [0x00000]
  at Mono.CSharp.Statement.Emit (Mono.CSharp.EmitContext ec) [0x00000]
  at Mono.CSharp.TryCatch.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.Iterator.EmitMoveNext_NoResumePoints (Mono.CSharp.EmitContext
ec, Mono.CSharp.Block original_block) [0x00000]
  at Mono.CSharp.Iterator.EmitMoveNext (Mono.CSharp.EmitContext ec,
Mono.CSharp.Block original_block) [0x00000]
  at Mono.CSharp.IteratorStatement.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]
  at Mono.CSharp.MethodData.Emit (Mono.CSharp.DeclSpace parent) [0x00000]
  at Mono.CSharp.MethodOrOperator.Emit () [0x00000]
  at Mono.CSharp.Method.Emit () [0x00000]

-- 
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.
_______________________________________________
mono-bugs maillist  -  mono-bugs@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to