[Mono-bugs] [Bug 406702] New: Compiler bug with anonymous method
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Mon Jul 7 05:39:50 EDT 2008
https://bugzilla.novell.com/show_bug.cgi?id=406702
Summary: Compiler bug with anonymous method
Product: Mono: Compilers
Version: SVN
Platform: Other
OS/Version: Other
Status: NEW
Severity: Normal
Priority: P5 - None
Component: C#
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: informatique.internet at fiducial.fr
QAContact: mono-bugs at lists.ximian.com
Found By: ---
I've found this problem while trying to compile galaxium from svn with mono
from svn... (http://monoport.com/27829)
I've extracted a mini test case which shows the problem :
try to compile this :
// Main.cs created with MonoDevelop
// User: hubert at 11:12 07/07/2008
//
// To change standard headers go to Edit->Preferences->Coding->Standard Headers
//
using System;
namespace AnonTest
{
public interface IMsnCommand
{
string Command { get; }
int TransactionID { get; set; }
bool ExpectResponse { get; }
bool IsPayloadIn { get; }
bool IsPayloadOut { get; }
bool IsTransIn { get; }
bool IsTransOut { get; }
string ToCommandString ();
byte[] ToByteArray ();
}
public delegate void CommandHandler<T> (T cmd) where T : IMsnCommand;
public delegate void CommandHandler (IMsnCommand cmd);
public delegate void VoidDelegate ();
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
MainClass mainclass=new MainClass();
mainclass.Test="1";
}
public string Test
{
get{
return "";
}
set
{
Session.Send(new CommandHandler(delegate{
MyClass handle=new MyClass();
Remove(handle,delegate{
MyClass exprhandle=new
MyClass();
Remove(exprhandle,delegate{
Store(handle);
});
});
}));
}
}
public void Remove(MyClass handle,VoidDelegate callback)
{
callback();
}
public void Store(MyClass handle)
{
}
}
public class MyClass{
}
public class Session{
public static void Send(CommandHandler handler){
}
}
}
It crashes with :
Exception caught by the compiler while emitting:
Block that caused the problem begin at:
/home/hubert/Projects/AnonTest/Main.cs(52,63):
System.NullReferenceException: Object reference not set to an instance of an
object
Internal compiler error at /home/hubert/Projects/AnonTest/Main.cs(52,55)::
exception caught while emitting MethodBuilder [<Test>c__AnonStorey0::<>m__1]
Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object
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.Invocation.Emit (Mono.CSharp.EmitContext ec) [0x00000]
at Mono.CSharp.Invocation.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.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]
It will crash with
--
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