From c5a0e56e6030d475ae2e71da91ba5447b7151f35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 30 Aug 2023 15:34:39 +0200 Subject: [PATCH 1/3] Client/Michelson: use Micheline printer for stacks Instead of directly printing curly braces and semi-columns inside Michelson_v1_printer, we reuse the Micheline printer. This commit fixes the indentation of the stacks outputted by the `normalize stack` command. --- .../lib_client/michelson_v1_printer.ml | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/proto_alpha/lib_client/michelson_v1_printer.ml b/src/proto_alpha/lib_client/michelson_v1_printer.ml index 13d16dc254a8..c375f30dd393 100644 --- a/src/proto_alpha/lib_client/michelson_v1_printer.ml +++ b/src/proto_alpha/lib_client/michelson_v1_printer.ml @@ -31,15 +31,21 @@ open Micheline_printer let anon = {comment = None} -let print_expr ppf expr = +let node_of_expr expr = expr |> Michelson_v1_primitives.strings_of_prims |> Micheline.inject_locations (fun _ -> anon) - |> print_expr ppf -let print_expr_unwrapped ppf expr = - expr |> Michelson_v1_primitives.strings_of_prims - |> Micheline.inject_locations (fun _ -> anon) - |> print_expr_unwrapped ppf +let node_of_stack_elt (ty, x) = + let ty = node_of_expr ty in + let x = node_of_expr x in + Micheline.Prim (anon, "Stack_elt", [ty; x], []) + +let print_typed_stack out l = + print_expr out (Micheline.Seq (anon, List.map node_of_stack_elt l)) + +let print_expr ppf expr = print_expr ppf (node_of_expr expr) + +let print_expr_unwrapped ppf expr = print_expr_unwrapped ppf (node_of_expr expr) let print_stack ppf = function | [] -> Format.fprintf ppf "[]" @@ -52,18 +58,6 @@ let print_stack ppf = function print_expr_unwrapped) more -let print_stack_elt out (ty, x) = - Format.fprintf out "Stack_elt %a %a" print_expr ty print_expr x - -let print_typed_stack out l = - Format.fprintf - out - "{%a}" - (Format.pp_print_list - ~pp_sep:(fun out () -> Format.fprintf out "; ") - print_stack_elt) - l - let print_execution_trace ppf (trace : Script_typed_ir.execution_trace) = Format.pp_print_list (fun ppf (loc, gas, stack) -> -- GitLab From 5a850b22915d983a0d5916f109e45599ff2636ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 30 Aug 2023 09:03:43 +0200 Subject: [PATCH 2/3] Tests/Regressions: reset traces This commit was produced with the following command: dune exec tezt/tests/main.exe -- --file tezt/tests/normalize.ml --title 'Alpha: Test Michelson stack normalization' --reset-regressions --- ...ha- Test Michelson stack normalization.out | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/tezt/tests/expected/normalize.ml/Alpha- Test Michelson stack normalization.out b/tezt/tests/expected/normalize.ml/Alpha- Test Michelson stack normalization.out index f589e253f3f7..73dc5219be36 100644 --- a/tezt/tests/expected/normalize.ml/Alpha- Test Michelson stack normalization.out +++ b/tezt/tests/expected/normalize.ml/Alpha- Test Michelson stack normalization.out @@ -3,49 +3,61 @@ {} ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)}' -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10)))}' -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) ; + Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10))); Stack_elt (pair nat nat (pair nat nat)) {2; 5; 8; 11}}' -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10); Stack_elt (pair nat nat nat nat) (Pair 2 5 8 11)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) ; + Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10) ; + Stack_elt (pair nat nat nat nat) (Pair 2 5 8 11) } ./octez-client --mode mockup normalize stack '{}' --unparsing-mode Readable {} ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)}' --unparsing-mode Readable -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10)))}' --unparsing-mode Readable -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) ; + Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10))); Stack_elt (pair nat nat (pair nat nat)) {2; 5; 8; 11}}' --unparsing-mode Readable -{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10); Stack_elt (pair nat nat nat nat) (Pair 2 5 8 11)} +{ Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9) ; + Stack_elt (pair nat nat nat nat) (Pair 1 4 7 10) ; + Stack_elt (pair nat nat nat nat) (Pair 2 5 8 11) } ./octez-client --mode mockup normalize stack '{}' --unparsing-mode Optimized {} ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)}' --unparsing-mode Optimized -{Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 }} +{ Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 } } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10)))}' --unparsing-mode Optimized -{Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 }; Stack_elt (pair nat nat nat nat) { 1 ; 4 ; 7 ; 10 }} +{ Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 } ; + Stack_elt (pair nat nat nat nat) { 1 ; 4 ; 7 ; 10 } } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10))); Stack_elt (pair nat nat (pair nat nat)) {2; 5; 8; 11}}' --unparsing-mode Optimized -{Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 }; Stack_elt (pair nat nat nat nat) { 1 ; 4 ; 7 ; 10 }; Stack_elt (pair nat nat nat nat) { 2 ; 5 ; 8 ; 11 }} +{ Stack_elt (pair nat nat nat nat) { 0 ; 3 ; 6 ; 9 } ; + Stack_elt (pair nat nat nat nat) { 1 ; 4 ; 7 ; 10 } ; + Stack_elt (pair nat nat nat nat) { 2 ; 5 ; 8 ; 11 } } ./octez-client --mode mockup normalize stack '{}' --unparsing-mode Optimized_legacy {} ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9)}' --unparsing-mode Optimized_legacy -{Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9)))} +{ Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9))) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10)))}' --unparsing-mode Optimized_legacy -{Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9))); Stack_elt (pair nat nat nat nat) (Pair 1 (Pair 4 (Pair 7 10)))} +{ Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9))) ; + Stack_elt (pair nat nat nat nat) (Pair 1 (Pair 4 (Pair 7 10))) } ./octez-client --mode mockup normalize stack '{Stack_elt (pair nat nat nat nat) (Pair 0 3 6 9); Stack_elt (pair nat (pair nat (pair nat nat))) (Pair 1 (Pair 4 (Pair 7 10))); Stack_elt (pair nat nat (pair nat nat)) {2; 5; 8; 11}}' --unparsing-mode Optimized_legacy -{Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9))); Stack_elt (pair nat nat nat nat) (Pair 1 (Pair 4 (Pair 7 10))); Stack_elt (pair nat nat nat nat) (Pair 2 (Pair 5 (Pair 8 11)))} +{ Stack_elt (pair nat nat nat nat) (Pair 0 (Pair 3 (Pair 6 9))) ; + Stack_elt (pair nat nat nat nat) (Pair 1 (Pair 4 (Pair 7 10))) ; + Stack_elt (pair nat nat nat nat) (Pair 2 (Pair 5 (Pair 8 11))) } ./octez-client --mode mockup normalize stack Error: -- GitLab From 4758bc01312e347e665f371ef9a34c80a6fedbba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Cauderlier?= Date: Wed, 30 Aug 2023 18:22:02 +0200 Subject: [PATCH 3/3] Changes: mention !9944 --- CHANGES.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index ba8d4606e109..90047775b624 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -42,6 +42,9 @@ Client support legacy ``endorsement`` kind instead of ``attestation``. (MR :gl:`!9832`) +- Fixed indentation of the stacks outputted by the ``normalize stack`` + command. (MR :gl:`!9944`) + Baker ----- -- GitLab