When enum case marked with [<Obsolete>], compiler doesn't give warning.
Even with [<Obsolete("Hello, world!", true)>] it still compiles.
Repro steps
-
Make enum
-
Tag some case with [<Obsolete>] attribute
-
Try use it somewhere
Example script:
open System
type MyDU =
| Case1
| [<Obsolete>] Case2
let xx = MyDU.Case2 // <- gives warning
type MyEnum =
| Case3 = 0
| [<Obsolete>] Case4 = 1
let yy = MyEnum.Case4 // <- no warning
printfn "%A %A" xx yy
Expected behavior
When enum case is marked as obsolete, compiler should give warning or error depending on Obsolete attribute configuration
Actual behavior
No compiler warning or error
Related information
OS: Ubuntu 16.04
$ dotnet --version
2.2.203
dotnet fsi output:
Microsoft (R) F# Interactive version 10.4.0 for F# 4.6
Copyright (c) Microsoft Corporation. All Rights Reserved.
For help type #help;;
> open System
type MyDU =
| Case1
| [<Obsolete>] Case2
let xx = MyDU.Case2
type MyEnum =
| Case3 = 0
| [<Obsolete("hello, world!", true)>] Case4 = 1
let yy = MyEnum.Case4
printfn "%A %A" xx yy ;;
let xx = MyDU.Case2
---------^^^^^^^^^^
/home/lkmfwe/stdin(7,10): warning FS0044: This construct is deprecated
Case2 Case4
type MyDU =
| Case1
| Case2
val xx : MyDU = Case2
type MyEnum =
| Case3 = 0
| Case4 = 1
val yy : MyEnum = Case4
val it : unit = ()
When enum case marked with
[<Obsolete>], compiler doesn't give warning.Even with
[<Obsolete("Hello, world!", true)>]it still compiles.Repro steps
Make enum
Tag some case with
[<Obsolete>]attributeTry use it somewhere
Example script:
Expected behavior
When enum case is marked as obsolete, compiler should give warning or error depending on Obsolete attribute configuration
Actual behavior
No compiler warning or error
Related information
OS: Ubuntu 16.04
dotnet fsioutput: