dotnet/roslyn

Duplicate (confusing) CS0455 error

Open

#5053 aperta il 7 set 2015

Vedi su GitHub
 (0 commenti) (0 reazioni) (0 assegnatari)C# (4257 fork)batch import
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted

Metriche repository

Star
 (20.414 star)
Metriche merge PR
 (Merge medio 6g 17h) (256 PR mergiate in 30 g)

Descrizione

using System;

public abstract class ThingWithOrganizationId
{
    public Guid OrganizationId;
}

public class Thing : ThingWithOrganizationId
{
}

public abstract class BaseService<TConstraint, U> 
{
    public abstract void Save<T> (T newThing) where T : struct, TConstraint;
}

public class DerivedService:BaseService<Thing, X>
{
    public override void Save<TThing>(TThing newThing)
    {
        Console.WriteLine(newThing.OrganizationId);
    }

    static void Main ()
    {
    }
}

Roslyn csc produces following errors (24,31): error CS0455: Type parameter 'TThing' inherits conflicting constraints 'Thing' and 'ValueType' (24,31): error CS0455: Type parameter 'TThing' inherits conflicting constraints 'ValueType' and 'struct'

It should print something like this instead (24,31): error CS0455: Type parameter 'TThing' inherits conflicting constraints 'Thing' and 'struct'

Guida contributor