迁移到最新的 FSharp.Core 生成警告
Migrating to the latest FSharp.Core generates warnings
我刚刚迁移了我的项目以使用 FSharp.Core 6.0.3 而不是 6.0.1。
我注意到现在在我的代码中每次使用度量单位引用 uint32
时都会出现警告。更具体地说:
LanguagePrimitives.UInt32WithMeasure
函数
uint32<cm>
作为参数类型
我想设置编译标志以忽略此警告是安全的,但我想了解发生了什么以及为什么现在将其视为问题。
确切的警告消息是:FS0057: Experimental library feature, requires '--langversion:preview'. This warning can be disabled using '--nowarn:57' or '#nowarn "57"'
。
旧版本的 F# 仅支持 signed integer values(和浮点数)的度量单位。
根据 this comment on an F# language issue,现在实验性地支持无符号整数的度量单位。
在尝试示例时,我注意到您可以使用 uint<cm>
而不是 uint32<cm>
来避免警告,但我不确定这是否是故意的。
我的 0.02 美元:我查看了 fsharp
GH 存储库并找到了 LanguagePrimitives.UInt32WithMeasure
的声明。
[<Experimental("Experimental library feature, requires '--langversion:preview'")>]
val inline UInt32WithMeasure: input: uint -> uint<'Measure>
但是,Experimental
属性是在 this commit 中添加的,所以我猜 FSharp.Core
6.0.1 一定是在那之前创建的,因此它没有报告警告。
我刚刚迁移了我的项目以使用 FSharp.Core 6.0.3 而不是 6.0.1。
我注意到现在在我的代码中每次使用度量单位引用 uint32
时都会出现警告。更具体地说:
LanguagePrimitives.UInt32WithMeasure
函数uint32<cm>
作为参数类型
我想设置编译标志以忽略此警告是安全的,但我想了解发生了什么以及为什么现在将其视为问题。
确切的警告消息是:FS0057: Experimental library feature, requires '--langversion:preview'. This warning can be disabled using '--nowarn:57' or '#nowarn "57"'
。
旧版本的 F# 仅支持 signed integer values(和浮点数)的度量单位。
根据 this comment on an F# language issue,现在实验性地支持无符号整数的度量单位。
在尝试示例时,我注意到您可以使用 uint<cm>
而不是 uint32<cm>
来避免警告,但我不确定这是否是故意的。
我的 0.02 美元:我查看了 fsharp
GH 存储库并找到了 LanguagePrimitives.UInt32WithMeasure
的声明。
[<Experimental("Experimental library feature, requires '--langversion:preview'")>]
val inline UInt32WithMeasure: input: uint -> uint<'Measure>
但是,Experimental
属性是在 this commit 中添加的,所以我猜 FSharp.Core
6.0.1 一定是在那之前创建的,因此它没有报告警告。