diff --git a/ppx/ppx_deriving_json/lib/ppx_deriving_json.ml b/ppx/ppx_deriving_json/lib/ppx_deriving_json.ml index c83c5f3cda..a5742f4216 100644 --- a/ppx/ppx_deriving_json/lib/ppx_deriving_json.ml +++ b/ppx/ppx_deriving_json/lib/ppx_deriving_json.ml @@ -48,7 +48,7 @@ let parse_lid s = match i, c with | 0, ('a' .. 'z' | '_') -> () | 0, _ -> assert false - | _, ('a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9') -> () + | _, ('a' .. 'z' | 'A' .. 'Z' | '_' | '\'' | '0' .. '9') -> () | _ -> assert false) in let assert_uid = @@ -56,7 +56,7 @@ let parse_lid s = match i, c with | 0, 'A' .. 'Z' -> () | 0, _ -> assert false - | _, ('a' .. 'z' | 'A' .. 'Z' | '_' | '0' .. '9') -> () + | _, ('a' .. 'z' | 'A' .. 'Z' | '_' | '\'' | '0' .. '9') -> () | _ -> assert false) in let rec check = function diff --git a/ppx/ppx_deriving_json/tests/gen.mlt b/ppx/ppx_deriving_json/tests/gen.mlt index d1c01490c7..5189c21aa3 100644 --- a/ppx/ppx_deriving_json/tests/gen.mlt +++ b/ppx/ppx_deriving_json/tests/gen.mlt @@ -695,3 +695,27 @@ let t s = (Deriving_Json_lexer.init_lexer (Lexing.from_string s));; val t : string -> t * t = |}] + +;; +type id' = int [@@deriving json] +[%%expect {| + +type id' = int[@@deriving json] +include + struct + let _ = fun (_ : id') -> () + let rec (id'_of_json : Deriving_Json_lexer.lexbuf -> id') = + fun buf -> Deriving_Json.Json_int.read buf + let _ = id'_of_json + let rec (id'_to_json : Buffer.t -> id' -> unit) = + fun buf -> fun a -> Deriving_Json.Json_int.write buf a + let _ = id'_to_json + let (id'_json : id' Deriving_Json.t) = + Deriving_Json.make id'_to_json id'_of_json + let _ = id'_json + end[@@ocaml.doc "@inline"][@@merlin.hide ];; +type id' = int +val id'_of_json : Deriving_Json_lexer.lexbuf -> id' = +val id'_to_json : Buffer.t -> id' -> unit = +val id'_json : id' Deriving_Json.t = +|}] \ No newline at end of file