dotnet/roslyn

Duplicate (confusing) CS0455 error

Open

#5,053 opened on Sep 7, 2015

View on GitHub
 (0 comments) (0 reactions) (0 assignees)C# (4,257 forks)batch import
Area-CompilersBugConcept-Diagnostic Clarityhelp wanted

Repository metrics

Stars
 (20,414 stars)
PR merge metrics
 (Avg merge 6d 17h) (256 merged PRs in 30d)

Description

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'

Contributor guide