Skip to content

Compiler silently drops diagnostics with unknown range #14653

@Smaug123

Description

@Smaug123

If a diagnostic would be emitted but it has an unknown range, we sometimes drop it on the floor. This seems non-ideal.

Repro steps

See the F# compiler built from Smaug123@76ea258 . The test "Three types refined to obj are all warned" in ObjInference.fs incorrectly fails because it reports that no diagnostics were emitted. In fact diagnostics were requested, but were suppressed just before reporting: place a breakpoint at FSharpDiagnostic.fs line 203 in ReportDiagnostic to observe our decision not to emit the errors that arose on line 185 of TypeRelations.fs because their associated ranges were all the unknown range.

Expected behavior

The test "Three types refined to obj are all warned" should pass, because it notes that three diagnostics were emitted.

Actual behavior

No diagnostics were emitted, so the test fails.

Known workarounds

We could possibly just make sure that every diagnostic always has a meaningful range (which seems invasive and difficult), or we could run in "all errors" mode (but I don't understand the implications of that).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Area-Diagnosticsmistakes and possible improvements to diagnosticsBugImpact-Medium(Internal MS Team use only) Describes an issue with moderate impact on existing code.

    Type

    Projects

    Status

    New

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions