dotnet/roslyn

Cascaded diagnostic when label not found.

Open

#5,243 opened on Sep 15, 2015

View on GitHub
 (0 comments) (1 reaction) (1 assignee)C# (20,414 stars) (4,257 forks)batch import
Area-CompilersBugConcept-Diagnostic ClarityLanguage-C#help wanted

Description

Here are some examples demonstrating that flow analysis reports redundant errors when labels are not found. In each case the compiler reports that a label was not found, but then also reports a reachability error that would not be an error if a label had been found. The later error should be suppressed.

class Program
{
    static void Main(string[] args)
    {
        int s = 23;
        switch (s)
        {
            case 21:
                goto case 1;
                // redundant error "Control cannot fall through from one case label ('case 21:') to another
            case 23:
                goto default;
                // redundant error "Control cannot fall out of switch from final case label ('case 23:')"
        }
    }

    static int M()
    {
        goto foo;
        // redundant error "not all code paths return a value"
    }
}

Contributor guide