Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/release-notes/.FSharp.Compiler.Service/11.0.100.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@
* Direct delegate construction ([PR ##19993](https://github.com/dotnet/fsharp/pull/19993))

### Changed
* The `--warnaserror` option now ignores unrecognized diagnostic identifiers in warning lists while still applying recognized F# warning codes. ([PR #20246](https://github.com/dotnet/fsharp/pull/20246))

* Improvements in error and warning messages: new error FS3885 when `let!`/`use!` is the final expression in a computation expression; new warning FS3886 when a list literal contains a single tuple element (likely missing `;` separator); improved wording for FS0003, FS0025, FS0039, FS0072, FS0247, FS0597, FS0670, FS3082, and SRTP operator-not-in-scope hints. ([PR #19398](https://github.com/dotnet/fsharp/pull/19398))
* Exception field serialization (`GetObjectData` and field-restoring constructor) is now gated behind `langversion:11` (`LanguageFeature.ExceptionFieldSerializationSupport`). With langversion ≤10, exception codegen is unchanged from pre-#19342 behavior. ([PR #19746](https://github.com/dotnet/fsharp/pull/19746))
Expand Down
17 changes: 8 additions & 9 deletions src/Compiler/Driver/CompilerOptions.fs
Original file line number Diff line number Diff line change
Expand Up @@ -791,14 +791,6 @@ let inputFileFlagsFsi (tcConfigB: TcConfigBuilder) =
//---------------------------------

let errorsAndWarningsFlags (tcConfigB: TcConfigBuilder) =
let trimFS (s: string) =
if s.StartsWithOrdinal "FS" then s.Substring 2 else s

let trimFStoInt (s: string) =
match Int32.TryParse(trimFS s) with
| true, n -> Some n
| false, _ -> None

[
CompilerOption(
"warnaserror",
Expand All @@ -816,7 +808,14 @@ let errorsAndWarningsFlags (tcConfigB: TcConfigBuilder) =
"warnaserror",
tagWarnList,
OptionStringListSwitch(fun n switch ->
match trimFStoInt n with
match
GetWarningNumber(
rangeCmdArgs,
WarningDescription.String n,
tcConfigB.langVersion,
WarningNumberSource.CommandLineOption
)
with
| Some n ->
let options = tcConfigB.diagnosticsOptions

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,14 @@ match None with None -> () // creates FS0025 - ignored due to flag
(Warning 988, Line 3, Col 3, Line 3, Col 3, "Main module of program is empty: nothing will happen when it is run")
]

[<Fact>]
let ``--warnaserror ignores unknown diagnostic identifiers`` () =
FSharp """ "" """
|> withOptions ["--warnaserror:NU1605;FS20"]
|> typecheck
|> shouldFail
|> withErrorCode 20


[<InlineData("8.0")>]
[<InlineData("9.0")>]
Expand Down
Loading