dotnet/roslyn

Cascaded diagnostic when label not found.

Open

#5,243 创建于 2015年9月15日

在 GitHub 查看
 (0 评论) (1 反应) (1 负责人)C# (20,414 star) (4,257 fork)batch import
Area-CompilersBugConcept-Diagnostic ClarityLanguage-C#help wanted

描述

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

贡献者指南