NathanReb / ppx_yojson

OCaml PPX extension for JSON literals and patterns
BSD 2-Clause "Simplified" License
43 stars 5 forks source link

OCaml 5.2 support #45

Closed kit-ty-kate closed 6 months ago

kit-ty-kate commented 7 months ago

Using the preview of ppxlib for OCaml 5.2 I get the following failure when in the tests of ppx_yojson:

#=== ERROR while compiling ppx_yojson.1.3.0 ===================================#
# context              2.2.0~beta2~dev | linux/x86_64 | ocaml-variants.5.2.0+trunk | file:///home/opam/opam-repository
# path                 ~/.opam/5.2/.opam-switch/build/ppx_yojson.1.3.0
# command              ~/.opam/5.2/bin/dune build -p ppx_yojson -j 1 @install @runtest
# exit-code            1
# env-file             ~/.opam/log/ppx_yojson-183-904b4b.env
# output-file          ~/.opam/log/ppx_yojson-183-904b4b.out
### output ###
# File "test/rewriter/errors/expr_anti_quotation_payload.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_anti_quotation_payload.expected _build/default/test/rewriter/errors/expr_anti_quotation_payload.actual
# diff --git a/_build/default/test/rewriter/errors/expr_anti_quotation_payload.expected b/_build/default/test/rewriter/errors/expr_anti_quotation_payload.actual
# index 0bc8ed5..05faae9 100644
# --- a/_build/default/test/rewriter/errors/expr_anti_quotation_payload.expected
# +++ b/_build/default/test/rewriter/errors/expr_anti_quotation_payload.actual
# @@ -1,4 +1,2 @@
#  File "expr_anti_quotation_payload.ml", line 1, characters 38-45:
# -1 | let bad_anti_quote_payload = [%yojson [%y? _]]
# -                                          ^^^^^^^
#  Error: ppx_yojson: bad antiquotation payload, should be a single expression
# File "test/rewriter/errors/expr_integer_literal_binary.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_integer_literal_binary.expected _build/default/test/rewriter/errors/expr_integer_literal_binary.actual
# diff --git a/_build/default/test/rewriter/errors/expr_integer_literal_binary.expected b/_build/default/test/rewriter/errors/expr_integer_literal_binary.actual
# index 7ca0aae..264ae9d 100644
# --- a/_build/default/test/rewriter/errors/expr_integer_literal_binary.expected
# +++ b/_build/default/test/rewriter/errors/expr_integer_literal_binary.actual
# @@ -1,4 +1,2 @@
#  File "expr_integer_literal_binary.ml", line 1, characters 39-150:
# -1 | let invalid_integer_literal = [%yojson 0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111]
# -                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/expr_integer_literal_hex.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_integer_literal_hex.expected _build/default/test/rewriter/errors/expr_integer_literal_hex.actual
# diff --git a/_build/default/test/rewriter/errors/expr_integer_literal_hex.expected b/_build/default/test/rewriter/errors/expr_integer_literal_hex.actual
# index 801b52a..86d1959 100644
# --- a/_build/default/test/rewriter/errors/expr_integer_literal_hex.expected
# +++ b/_build/default/test/rewriter/errors/expr_integer_literal_hex.actual
# @@ -1,4 +1,2 @@
#  File "expr_integer_literal_hex.ml", line 1, characters 39-83:
# -1 | let invalid_integer_literal = [%yojson 0xffffffffffffffffffffffffffffffffffffffffff]
# -                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/expr_integer_literal_octal.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_integer_literal_octal.expected _build/default/test/rewriter/errors/expr_integer_literal_octal.actual
# diff --git a/_build/default/test/rewriter/errors/expr_integer_literal_octal.expected b/_build/default/test/rewriter/errors/expr_integer_literal_octal.actual
# index 9ac6775..3fee815 100644
# --- a/_build/default/test/rewriter/errors/expr_integer_literal_octal.expected
# +++ b/_build/default/test/rewriter/errors/expr_integer_literal_octal.actual
# @@ -1,4 +1,2 @@
#  File "expr_integer_literal_octal.ml", line 1, characters 39-86:
# -1 | let invalid_integer_literal = [%yojson 0o777777777777777777777777777777777777777777777]
# -                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/expr_unsupported_payload.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_unsupported_payload.expected _build/default/test/rewriter/errors/expr_unsupported_payload.actual
# diff --git a/_build/default/test/rewriter/errors/expr_unsupported_payload.expected b/_build/default/test/rewriter/errors/expr_unsupported_payload.actual
# index 5e5333b..796cee0 100644
# --- a/_build/default/test/rewriter/errors/expr_unsupported_payload.expected
# +++ b/_build/default/test/rewriter/errors/expr_unsupported_payload.actual
# @@ -1,4 +1,2 @@
#  File "expr_unsupported_payload.ml", line 1, characters 35-40:
# -1 | let unsupported_payload = [%yojson Ok ()]
# -                                       ^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/expr_unsupported_record_field.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/expr_unsupported_record_field.expected _build/default/test/rewriter/errors/expr_unsupported_record_field.actual
# diff --git a/_build/default/test/rewriter/errors/expr_unsupported_record_field.expected b/_build/default/test/rewriter/errors/expr_unsupported_record_field.actual
# index a69dcac..b6a7be9 100644
# --- a/_build/default/test/rewriter/errors/expr_unsupported_record_field.expected
# +++ b/_build/default/test/rewriter/errors/expr_unsupported_record_field.actual
# @@ -1,4 +1,2 @@
#  File "expr_unsupported_record_field.ml", line 1, characters 41-48:
# -1 | let unsupported_record_field = [%yojson {A.field = 0}]
# -                                             ^^^^^^^
#  Error: ppx_yojson: unsupported record field
# File "test/rewriter/errors/pat_anti_quotation_payload.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_anti_quotation_payload.expected _build/default/test/rewriter/errors/pat_anti_quotation_payload.actual
# diff --git a/_build/default/test/rewriter/errors/pat_anti_quotation_payload.expected b/_build/default/test/rewriter/errors/pat_anti_quotation_payload.actual
# index 972110f..86b71e4 100644
# --- a/_build/default/test/rewriter/errors/pat_anti_quotation_payload.expected
# +++ b/_build/default/test/rewriter/errors/pat_anti_quotation_payload.actual
# @@ -1,4 +1,2 @@
#  File "pat_anti_quotation_payload.ml", line 2, characters 14-26:
# -2 |   | [%yojson? [%y `Int _a]] -> false
# -                  ^^^^^^^^^^^^
#  Error: ppx_yojson: bad antiquotation payload, should be a pattern
# File "test/rewriter/errors/pat_integer_literal_binary.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_integer_literal_binary.expected _build/default/test/rewriter/errors/pat_integer_literal_binary.actual
# diff --git a/_build/default/test/rewriter/errors/pat_integer_literal_binary.expected b/_build/default/test/rewriter/errors/pat_integer_literal_binary.actual
# index 1c8e521..14b4be3 100644
# --- a/_build/default/test/rewriter/errors/pat_integer_literal_binary.expected
# +++ b/_build/default/test/rewriter/errors/pat_integer_literal_binary.actual
# @@ -1,4 +1,2 @@
#  File "pat_integer_literal_binary.ml", line 2, characters 14-125:
# -2 |   | [%yojson? 0b1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111] -> false
# -                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/pat_integer_literal_hex.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_integer_literal_hex.expected _build/default/test/rewriter/errors/pat_integer_literal_hex.actual
# diff --git a/_build/default/test/rewriter/errors/pat_integer_literal_hex.expected b/_build/default/test/rewriter/errors/pat_integer_literal_hex.actual
# index ec866aa..f3c14ca 100644
# --- a/_build/default/test/rewriter/errors/pat_integer_literal_hex.expected
# +++ b/_build/default/test/rewriter/errors/pat_integer_literal_hex.actual
# @@ -1,4 +1,2 @@
#  File "pat_integer_literal_hex.ml", line 2, characters 14-58:
# -2 |   | [%yojson? 0xffffffffffffffffffffffffffffffffffffffffff] -> false
# -                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/pat_integer_literal_octal.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_integer_literal_octal.expected _build/default/test/rewriter/errors/pat_integer_literal_octal.actual
# diff --git a/_build/default/test/rewriter/errors/pat_integer_literal_octal.expected b/_build/default/test/rewriter/errors/pat_integer_literal_octal.actual
# index be23b49..e9d6d2a 100644
# --- a/_build/default/test/rewriter/errors/pat_integer_literal_octal.expected
# +++ b/_build/default/test/rewriter/errors/pat_integer_literal_octal.actual
# @@ -1,4 +1,2 @@
#  File "pat_integer_literal_octal.ml", line 2, characters 14-61:
# -2 |   | [%yojson? 0o777777777777777777777777777777777777777777777] -> false
# -                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/pat_too_many_record_field.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_too_many_record_field.expected _build/default/test/rewriter/errors/pat_too_many_record_field.actual
# diff --git a/_build/default/test/rewriter/errors/pat_too_many_record_field.expected b/_build/default/test/rewriter/errors/pat_too_many_record_field.actual
# index e17d9e2..e826e7b 100644
# --- a/_build/default/test/rewriter/errors/pat_too_many_record_field.expected
# +++ b/_build/default/test/rewriter/errors/pat_too_many_record_field.actual
# @@ -1,4 +1,2 @@
#  File "pat_too_many_record_field.ml", line 2, characters 14-49:
# -2 |   | [%yojson? {a = 1; b = 2; c = 3; d = 4; e = 5}] -> false
# -                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#  Error: ppx_yojson: record patterns with more than 4 fields aren't supported. Consider using ppx_deriving_yojson to handle more complex json objects.
# File "test/rewriter/errors/pat_unsupported_payload.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_unsupported_payload.expected _build/default/test/rewriter/errors/pat_unsupported_payload.actual
# diff --git a/_build/default/test/rewriter/errors/pat_unsupported_payload.expected b/_build/default/test/rewriter/errors/pat_unsupported_payload.actual
# index 83fdd52..4cdb066 100644
# --- a/_build/default/test/rewriter/errors/pat_unsupported_payload.expected
# +++ b/_build/default/test/rewriter/errors/pat_unsupported_payload.actual
# @@ -1,4 +1,2 @@
#  File "pat_unsupported_payload.ml", line 2, characters 14-19:
# -2 |   | [%yojson? Ok ()] -> false
# -                  ^^^^^
#  Error: ppx_yojson: unsupported payload
# File "test/rewriter/errors/pat_unsupported_record_field.expected", line 1, characters 0-0:
# /usr/bin/git --no-pager diff --no-index --color=always -u _build/default/test/rewriter/errors/pat_unsupported_record_field.expected _build/default/test/rewriter/errors/pat_unsupported_record_field.actual
# diff --git a/_build/default/test/rewriter/errors/pat_unsupported_record_field.expected b/_build/default/test/rewriter/errors/pat_unsupported_record_field.actual
# index 6ef63b6..b947acd 100644
# --- a/_build/default/test/rewriter/errors/pat_unsupported_record_field.expected
# +++ b/_build/default/test/rewriter/errors/pat_unsupported_record_field.actual
# @@ -1,4 +1,2 @@
#  File "pat_unsupported_record_field.ml", line 2, characters 15-22:
# -2 |   | [%yojson? {A.field = 0}] -> false
# -                   ^^^^^^^
#  Error: ppx_yojson: unsupported record field
# (cd _build/default/test/lib && ./test_ppx_yojson_lib.exe -e)
# Testing `ppx_yojson_lib'.
# This run has ID `9ABEOHI9'.
# 
#   [OK]          Integer_const          0   is_binary: "0b1".
#   [OK]          Integer_const          1   is_binary: "0B1".
#   [OK]          Integer_const          2   is_binary: "123".
#   [OK]          Integer_const          3   is_octal: "0o1".
#   [OK]          Integer_const          4   is_octal: "0O1".
#   [OK]          Integer_const          5   is_octal: "123".
#   [OK]          Integer_const          6   is_hexadecimal: "0x1".
#   [OK]          Integer_const          7   is_hexadecimal: "0X1".
#   [OK]          Integer_const          8   is_hexadecimal: "123".
#   [OK]          Utils                  0   remove: Empty.
#   [OK]          Utils                  1   remove: First.
#   [OK]          Utils                  2   remove: Last.
#   [OK]          Utils                  3   remove: Some.
#   [OK]          Utils                  4   permutations: Empty.
#   [OK]          Utils                  5   permutations: One.
#   [OK]          Utils                  6   permutations: Two.
#   [OK]          Utils                  7   permutations: Three.
# 
# Full test results in `~/.opam/5.2/.opam-switch/build/ppx_yojson.1.3.0/_build/default/test/lib/_build/_tests/ppx_yojson_lib'.
# Test Successful in 0.001s. 17 tests run.

I'm not sure if it's a ppxlib issue or a ppx_yojson issue but given you're currently maintaining both I trust you'll know where to move this if this needs to be moved.

NathanReb commented 7 months ago

Thanks for reporting this, I'll look into it ASAP!

NathanReb commented 6 months ago

Ah, looking at it now, I think it should be fixed by the source quotation fix in the latest preview release in ppxlib. Closing this but feel free to re-open if it shows up again!