每行禁用编译器警告

时间:2011-08-29 16:11:27

标签: f# compiler-warnings

是否可以禁用特定行的编译器警告?

在C#中,这有效:

[Obsolete]
class Old { }

#pragma warning disable 612
    var oldWithoutWarning = new Old();
#pragma warning restore 612
    var oldWithWarning = new Old();

这对于禁用不完整模式匹配警告非常有用,尤其是当函数接受DU的特定情况时。

2 个答案:

答案 0 :(得分:6)

不,使用#nowarn时,每个文件(或可能从此处到文件的底部)都会关闭警告。 (或者在使用项目属性/ --nowarn命令行时每个编译/项目。)

答案 1 :(得分:1)

由于所有内容都是F#中的表达式,因此不难拉出一行或一部分行并将其放入其自己的文件中。

我的问题示例,其中::模式匹配警告空列表可能性,但我传递给Seq.fold的状态总是有一个至少包含一个项目的列表。

module FoldBookmarks
#nowarn "25"

let foldIntoBookmarks: (string * int * int) seq -> XamlReport.PDF.Bookmark seq = 
        Seq.fold (fun ((tl,pl,acc)::l) (t,p,_) -> (t,acc,p+acc)::((tl,pl,acc)::l)) [("",0,1)]
        >> Seq.map(fun (x,y,_) -> PDF.Bookmark(Title=x, PageNumber= System.Nullable(y)))