[Mono-bugs] [Bug 355256] New: gmcs emits invalid code in some generic scenarios

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Jan 22 07:03:36 EST 2008


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


           Summary: gmcs emits invalid code in some generic scenarios
           Product: Mono: Compilers
           Version: SVN
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: msafar at novell.com
        ReportedBy: jbevain at novell.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


The following code compiled with gmcs generates invalid IL.

--
using System;
using System.Collections.Generic;

static class Enumerable {

        public static int Sum<TSource> (this IEnumerable<TSource> source,
Func<TSource, int> selector)
        {
                return Sum<TSource, int> (source, (a, b) => a + selector (b));
        }

        static TR Sum<TA, TR> (this IEnumerable<TA> source, Func<TR, TA, TR>
selector)
        {
                if (source == null)
                        throw new ArgumentNullException ("source");
                if (selector == null)
                        throw new ArgumentNullException ("selector");

                TR total = default (TR);
                int counter = 0;
                foreach (var element in source) {
                        total = selector (total, element);
                        ++counter;
                }

                if (counter == 0)
                        throw new InvalidOperationException ();

                return total;
        }

}

class Repro {

        static void Main ()
        {
                var sum = new [] {"1", "2", "3", "4",
                        "5", "6", "7"}.Sum ((Func<string, int>) null);
                Console.WriteLine (sum);
        }
}
--

peverify output:

Microsoft (R) .NET Framework PE Verifier.  Version  2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

[IL] : Erreur : [C:\Tmp\test.exe : Enumerable::Sum[TSource]][offset 0x0000001D]
Arguments non reconnus pour le .ctor délégué.
[IL] : Erreur : [C:\Tmp\test.exe :
Enumerable+<>c__CompilerGenerated0`1[TSource]
::<Sum>c__1[T1,T2,TResult]][offset 0x00000008][(unboxed) 'T1'
trouvé][(unboxed)
'TSource' attendu] Type inattendu sur la pile.
2 Errors Verifying test.exe


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list