4

我正在查看手册,发现 OCaml 中有一些属性用于将事物声明为已弃用(请参阅http://caml.inria.fr/pub/docs/manual-ocaml/extn.html),但我无法弄清楚如何让它们被编译器识别。

这是我写的程序:

let x = 1 [@@ocaml.deprecated "don't use this"]

type t = X | Y [@@ocaml.deprecated "don't use this"]

let _ =
  let y = Y in
  match y with
  | X ->
    print_string (string_of_int x)
  | Y -> assert false

(我也尝试过[@@deprecated ...]而不是[@@ocaml.deprecated ...]相同的结果)。我运行时没有收到任何警告:

ocamlbuild src/trial.byte

我需要在我的_tags文件中设置什么吗?还有什么我在这里想念的吗?

4

2 回答 2

3

不推荐使用的注释仅可用于值(不适用于类型),并且主要用于签名。在你的情况下,这里应该怎么做:

module M : sig
  val x : int [@@deprecated "don't use this"]
  type t =
    | X [@deprecated "don't use this"]
    | Y [@deprecated "don't use this"]
end = struct
  let x = 1
  type t = X | Y
end
open M

let _ =
  let y = Y in
  match y with
  | X ->
    print_string (string_of_int x)
  | Y -> assert false
于 2016-05-04T21:52:50.340 回答
1

#require "ppx_jane";;似乎在您的代码之前从 4.02.3 开始工作,对于这个版本。在 4.03.0 中,它可以原生运行。

于 2016-05-04T18:36:10.210 回答