用于处理"不完整模式匹配的F#代码属性"作为一个错误

时间:2017-08-07 19:12:27

标签: f# pattern-matching

我想知道F#中是否存在代码功能(不是编译器功能),因为不完整的模式匹配会出现错误,而不是警告。

我需要这个能够根据具体情况而定。即,在代码中的某些地方,我希望不完整的模式匹配是一个警告,而在同一个程序集中的其他地方,我希望它是一个错误。因此,设置编译器标志以将 all 不完整模式匹配警告视为错误是不够的,如Compile-time constraint for complete pattern match所示。

这看起来可能像

type MyUnion = First | Second

let foo x =
  match x with
  | First -> "hello"
  // raises a compile-time warning

let bar x =
  [<AssertCompleteMatch>]
  match x with
  | First -> "hello"
  // raises a compile-time error

或者该属性可能会应用于该类型,以确保所有与该特定类型匹配的模式都已完成。

1 个答案:

答案 0 :(得分:4)

您可以将警告25视为错误,然后使用

#nowarn "0025"

在要明确忽略它的文件中。但是禁用警告是文件范围,而不是匹配范围。我认为这是你能做的最好的事情。