dotnet / dotnet/fsharp

Compiler silently drops diagnostics with unknown range

オープン
#14,653 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
Area-Diagnostics Bug Impact-Medium
主要言語
F#
スター
4.3k
フォーク
876
平均マージ
4日 22時間
マージ済み PR(30日)
144

説明

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 https://github.com/Smaug123/fsharp-1/commit/76ea258b45dbea90e2ea28069d76065f1de6c354 . 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](https://github.com/Smaug123/fsharp-1/commit/76ea258b45dbea90e2ea28069d76065f1de6c354#diff-99e9d8b56b1879061a50d28265e437772930bfe5c5ba465ede161a735e19adafR185) 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).

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。