我试图使用一些ppx扩展,我发现OCaml没有发出未使用/无效属性的警告。例如,如果我写了类似的东西:
let[@blaa] () = ()
即使使用-w +A
,OCaml也不会说任何关于@blaa
从未使用过,并且可能输入错误的事实。
当尝试使用ppx重写器并错误输入给定属性(例如@blaa
而非@bla
)并且无法找到它时,这尤其令人沮丧。或者当一个给定的ppx重写器从未被启用时,所有属性都被默默地忽略。
有没有办法为这种情况启用警告?
注意:我尝试使用4.03.0和4.04.0,并且在两种情况下都没有收到任何警告。
答案 0 :(得分:2)
通常情况下,这是不可能的,因为属性只是添加到语法树元素中,然后树被多次处理,处理器可能会查找不同的属性,而忽略其他属性。处理器不需要报告他们已经处理了属性,或者他们没有找到预期的属性。属性语义非常通用,默认情况下所有属性都是不必要的。
但是,您可以在它们之上构建自己的语义。例如,JaneStreet中的WHERE a.Last_Name = 'Duncan' AND a.First_name = 'Andrew'
GROUP BY b.ID
HAVING COUNT(*) = 1
driver会施加限制,预处理器应该存在:
deriving