Bug 18473

Summary: Mono C# compiler incorrectly emits CS0411
Product: [Mono] Compilers Reporter: emoriarty
Component: C#Assignee: Marek Safar <masafa>
Status: RESOLVED FIXED    
Severity: normal CC: mono-bugs+mono, sig-rnd-sat-mono-bugs
Priority: ---    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Tags: Is this bug a regression?: ---
Last known good build:

Description emoriarty 2014-03-19 15:14:34 UTC
The Mono C# compiler does not compile the following code that csc accepts. 

===== Test.cs =====
     1  using System;
     2  using System.Collections.Generic;
     3  using System.Linq;
     4  public interface IA<T> {
     5      void Foo<T2>(IEnumerable<T2> a) where T2 : T;
     6  }
     7  public class B<T, TBase> : IA<T> where T : TBase {
     8      IA<TBase> _d;
     9      Func<TBase, bool> _m;
    10      public B(IA<TBase> d) {
    11          _d = d;
    12          _m = (bo => bo is T);
    13      }
    14      public void Foo<T2>(IEnumerable<T2> a) where T2 : T {
    15          _d.Foo(a.Where(bo => _m(bo)));  
    16      }
    17  }
===== End of Test.cs =====

Command lines:
# From Visual Studio 2013 command prompt
$ csc /target:library Test.cs
Microsoft (R) Visual C# Compiler version 12.0.21005.1
Copyright (C) Microsoft Corporation. All rights reserved.

# From Mono-3.2.6 command prompt
$ mcs /target:library Test.cs
Test.cs(15,30): error CS1594: Delegate `System.Func<TBase,bool>' has some invalid arguments
Test.cs(15,33): error CS1503: Argument `#1' cannot convert `T2' expression to type `TBase'
Test.cs(15,12): error CS0411: The type arguments for method `IA<TBase>.Foo<T2>(System.Collections.Generic.IEnumerable<T2>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
Compilation failed: 3 error(s), 0 warnings

Other Testing:
# Mono
2.11.4.0: fail
3.0.0.0: fail
3.0.7.0: fail
3.1.1.0: fail
3.2.6.0: fail
master/652615f0a22: fail

# csc via developer command prompts.
VS2008: pass
VS2010: pass
VS2013: pass


Edward Moriarty | Junior Engineer
Coverity | The Leader in Development Testing
Comment 1 Marek Safar 2014-05-06 10:53:02 UTC
Fixed in master