dotnet/roslyn
Unexpected diagnostic in `with` expression with indexer on a struct
Offen
#81.666 geöffnet am 12.12.2025
Area-CompilersConcept-Diagnostic Clarityhelp wanted
Repository-Metriken
- Stars
- (20.414 Sterne)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)
Beschreibung
Although this is an error scenario, the first diagnostic is unexpected.
[Fact]
public void TODO2()
{
var src = """
var c = new S() with { [0] = 1 };
public struct S
{
public int this[int i] { set { } }
}
""";
CreateCompilation(src).VerifyEmitDiagnostics(
// (1,24): error CS0131: The left-hand side of an assignment must be a variable, property or indexer
// var c = new S() with { [0] = 1 };
Diagnostic(ErrorCode.ERR_AssgLvalueExpected, "[0]").WithLocation(1, 24),
// (1,24): error CS0747: Invalid initializer member declarator
// var c = new S() with { [0] = 1 };
Diagnostic(ErrorCode.ERR_InvalidInitializerElementInitializer, "[0] = 1").WithLocation(1, 24));
}