[Mono-bugs] [Bug 378542] New: Compiler will throw exception in a special case related to lambda expressions

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Wed Apr 9 16:33:43 EDT 2008


https://bugzilla.novell.com/show_bug.cgi?id=378542


           Summary: Compiler will throw exception in a special case related
                    to lambda expressions
           Product: Mono: Compilers
           Version: 1.9.0
          Platform: PowerPC
        OS/Version: Mac OS X 10.4
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: johannes at jroith.de
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


The following code will throw the exception below:

using System;

class TestCase
{
        string a;
        string b;
        string c;

        public void Testing ()
        {
                string z = a + b + "blah1" + c + "blah2";
                Action test = () => {
                        string x = a;
                };
        }

}



Internal compiler error at test.cs(9,21):: exception caught while emitting
MethodBuilder [TestCase::Testing]

Unhandled Exception: Mono.CSharp.InternalErrorException: Helper class already
defined!
  at Mono.CSharp.CompilerGeneratedClass.CheckMembersDefined () [0x00000] 
  at Mono.CSharp.RootScopeInfo.CaptureThis () [0x00000] 
  at Mono.CSharp.This.ResolveBase (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.This.DoResolve (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.Expression.Resolve (Mono.CSharp.EmitContext ec, ResolveFlags
flags) [0x00000] 
  at Mono.CSharp.FieldExpr.DoResolve (Mono.CSharp.EmitContext ec, Boolean
lvalue_instance, Boolean out_access) [0x00000] 
  at Mono.CSharp.FieldExpr.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.ArrayCreation.ResolveArrayElement (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression element) [0x00000] 
  at Mono.CSharp.ArrayCreation.CheckIndices (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList probe, Int32 idx, Boolean specified_dims)
[0x00000] 
  at Mono.CSharp.ArrayCreation.ResolveInitializers (Mono.CSharp.EmitContext ec)
[0x00000] 
  at Mono.CSharp.ArrayCreation.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.MethodGroupExpr.VerifyArgumentsCompat (Mono.CSharp.EmitContext
ec, System.Collections.ArrayList& arguments, Int32 arg_count,
System.Reflection.MethodBase method, Boolean chose_params_expanded, Boolean
may_fail, Location loc) [0x00000] 
  at Mono.CSharp.MethodGroupExpr.OverloadResolve (Mono.CSharp.EmitContext ec,
System.Collections.ArrayList& Arguments, Boolean may_fail, Location loc)
[0x00000] 
  at Mono.CSharp.Invocation.DoResolveOverload (Mono.CSharp.EmitContext ec)
[0x00000] 
  at Mono.CSharp.Invocation.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.StringConcat.Emit (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.VariableReference.EmitAssign (Mono.CSharp.EmitContext ec,
Mono.CSharp.Expression source, Boolean leave_copy, Boolean prepare_for_load)
[0x00000] 
  at Mono.CSharp.Assign.Emit (Mono.CSharp.EmitContext ec, Boolean is_statement)
[0x00000] 
  at Mono.CSharp.Assign.EmitStatement (Mono.CSharp.EmitContext ec) [0x00000] 
  at Mono.CSharp.StatementExpression.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.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.Method.Emit () [0x00000]


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