http://bugzilla.novell.com/show_bug.cgi?id=619192
http://bugzilla.novell.com/show_bug.cgi?id=619192#c0 Summary: gmcs generates unverifiable code for a null coalescing expression involving generic parameters Classification: Mono Product: Mono: Compilers Version: 2.6.x Platform: x86-64 OS/Version: openSUSE 11.2 Status: NEW Severity: Normal Priority: P5 - None Component: C# AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1 gmcs generates unverifiable code for the following valid c# program: public static class CoalescingWithGenericsBug { class Service { public void Foo() {} } static void Main(string[] args) { Provide<Service>().Foo(); } static T Provide<T>() where T: class { return FindExisting<T>() ?? System.Activator.CreateInstance<T>(); } static T FindExisting<T>() where T: class { return null; } } 'pedump --verify code' complains with: In method: CoalescingWithGenericsBug::Provide() Not Verifiable: Argument type Complex not valid for brtrue/brfalse at 0x0006 It turns out gmcs is missing a 'box !! T' before the brtrue instruction indicated above. Reproducible: Always Steps to Reproduce: 1. save the c# code to CoalescingWithGenericsBug.cs 2. gmcs CoalescingWithGenericsBug.cs && pedump --verify code CoalescingWithGenericsBug.exe 3. Actual Results: In method: CoalescingWithGenericsBug::Provide() Not Verifiable: Argument type Complex not valid for brtrue/brfalse at 0x0006 -- 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 - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
