[Mono-bugs] [Bug 357047] New: Invalid ambiguous method error with extension methods

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Tue Jan 29 14:25:41 EST 2008


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


           Summary: Invalid ambiguous method error with extension methods
           Product: Mono: Compilers
           Version: SVN
          Platform: i686
        OS/Version: Ubuntu
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: C#
        AssignedTo: mono-bugs at lists.ximian.com
        ReportedBy: cmarshall at pacificbiosciences.com
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


Created an attachment (id=192207)
 --> (https://bugzilla.novell.com/attachment.cgi?id=192207)
Test case.

gmcs seems to have trouble inferring the type of the function passed to an
extension method, whether it's a lambda expression or a plain anonymous
function. From my reading, the type of the function should be inferable by the
return value.

The attached test case illustrates what's going on.

Steps to reproduce:

$ gmcs -target:library -out:test.dll test.cs

Expected results:

Compilation succeeds.

Actual results:

Compilation fails with:

test.cs(27,19): error CS0121: The call is ambiguous between the following
methods or properties:
`System.Linq.Enumerable.Average<point>(System.Collections.Generic.IEnumerable<point>,
System.Func<point,double>)' and
`System.Linq.Enumerable.Average<point>(System.Collections.Generic.IEnumerable<point>,
System.Func<point,double?>)'
/opt/mono/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
(Location of the symbol related to previous error)
/opt/mono/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
(Location of the symbol related to previous error)
test.cs(27,5): error CS0266: Cannot implicitly convert type `double?' to
`double'. An explicit conversion exists (are you missing a cast?)
test.cs(38,19): error CS0121: The call is ambiguous between the following
methods or properties:
`System.Linq.Enumerable.Average<point>(System.Collections.Generic.IEnumerable<point>,
System.Func<point,double>)' and
`System.Linq.Enumerable.Average<point>(System.Collections.Generic.IEnumerable<point>,
System.Func<point,double?>)'
/opt/mono/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
(Location of the symbol related to previous error)
/opt/mono/lib/mono/gac/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
(Location of the symbol related to previous error)
test.cs(38,5): error CS0266: Cannot implicitly convert type `double?' to
`double'. An explicit conversion exists (are you missing a cast?)
Compilation failed: 4 error(s), 0 warnings


-- 
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