dotnet/roslyn

Unreachable code detection does not respect local scopes and throw statements

Open

#75.605 aberto em 23 de out. de 2024

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)C# (4.257 forks)batch import
Area-Compilershelp wanted

Métricas do repositório

Stars
 (20.414 stars)
Métricas de merge de PR
 (Mesclagem média 6d 17h) (256 fundiu PRs em 30d)

Description

Version Used

VS 2022 Version 17.11.5 Roslyn 4.11.0 (5649376e0e5f)

Project info C# 12.0 .NET 8.0

Steps to Reproduce

Use the following code:

public static int Add(int a, int b)
{
    {
        return a + b;
    }

    throw new InvalidOperationException();

    {
        throw new InvalidOperationException();
    }

    {
        const int x = 523;
        throw new InvalidOperationException();
    }

    {
        throw new InvalidOperationException();
    }
}

Expected Behavior

In VS, the unreachable code will dim out showing that the dimmed out region is unreachable. In the above example, we expect all the code from the throw statement onwards to be dimmed out.

Actual Behavior

The resulting dimming is very different and limited to the scope that starts with non-throw statements. Image

Guia do colaborador