Reputation: 1235
I was looking at the manual and found that there are attributes in OCaml for declaring things as deprecated (see http://caml.inria.fr/pub/docs/manual-ocaml/extn.html), but I can not figure out how to get them to be recognized by the compiler.
Here's the program that I wrote:
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
(I also tried [@@deprecated ...]
rather than [@@ocaml.deprecated ...]
with the same results). I don't get any warnings when I run:
ocamlbuild src/trial.byte
Is there something that I need to set up in my _tags
file? Is there something else that I'm missing here?
Upvotes: 4
Views: 952
Reputation: 3739
The deprecated annotation is only available for values (not on types), and mostly in signatures. In your case, here how it should be done:
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
Upvotes: 3
Reputation: 4431
Seems to work from 4.02.3, for this version, #require "ppx_jane";;
before your code. With 4.03.0, it works natively.
Upvotes: 1