From 00907c2bcc33cca29a30f10135ec143781f0bf2e Mon Sep 17 00:00:00 2001 From: rvcas Date: Thu, 8 Aug 2024 12:56:01 -0400 Subject: [PATCH] fix: format snapshot tests --- crates/aiken-lang/src/format.rs | 26 +++++++++-- .../snapshots/double_validator.snap | 2 +- .../definition/snapshots/validator.snap | 2 +- .../src/parser/definition/validator.rs | 2 +- crates/aiken-lang/src/tests/check.rs | 46 +++++++++---------- crates/aiken-lang/src/tests/format.rs | 36 +++++++-------- .../snapshots/format_double_validator.snap | 12 +++-- .../format_double_validator_public.snap | 12 +++-- .../src/tests/snapshots/format_validator.snap | 19 +++++--- .../snapshots/format_validator_pattern.snap | 34 ++++++++++---- 10 files changed, 119 insertions(+), 72 deletions(-) diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 1d176021..82f2cd60 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -232,7 +232,15 @@ impl<'comments> Formatter<'comments> { return_annotation, end_position, .. - }) => self.definition_fn(public, name, args, return_annotation, body, *end_position), + }) => self.definition_fn( + public, + name, + args, + return_annotation, + body, + *end_position, + false, + ), Definition::Validator(Validator { end_position, @@ -513,12 +521,18 @@ impl<'comments> Formatter<'comments> { return_annotation: &'a Option, body: &'a UntypedExpr, end_location: usize, + is_validator: bool, ) -> Document<'a> { // Fn name and args - let head = pub_(*public) - .append("fn ") - .append(name) - .append(wrap_args(args.iter().map(|e| (self.fn_arg(e), false)))); + let head = if !is_validator { + pub_(*public) + .append("fn ") + .append(name) + .append(wrap_args(args.iter().map(|e| (self.fn_arg(e), false)))) + } else { + name.to_doc() + .append(wrap_args(args.iter().map(|e| (self.fn_arg(e), false)))) + }; // Add return annotation let head = match return_annotation { @@ -613,6 +627,7 @@ impl<'comments> Formatter<'comments> { &handler.return_annotation, &handler.body, handler.end_position, + true, ) .group(); @@ -632,6 +647,7 @@ impl<'comments> Formatter<'comments> { &fallback.return_annotation, &fallback.body, fallback.end_position, + true, ) .group(); diff --git a/crates/aiken-lang/src/parser/definition/snapshots/double_validator.snap b/crates/aiken-lang/src/parser/definition/snapshots/double_validator.snap index dc58908b..9d8e5725 100644 --- a/crates/aiken-lang/src/parser/definition/snapshots/double_validator.snap +++ b/crates/aiken-lang/src/parser/definition/snapshots/double_validator.snap @@ -129,7 +129,7 @@ Validator( }, doc: None, location: 0..0, - name: "fallback", + name: "else", public: true, return_annotation: None, return_type: (), diff --git a/crates/aiken-lang/src/parser/definition/snapshots/validator.snap b/crates/aiken-lang/src/parser/definition/snapshots/validator.snap index 25419d58..a37a91f8 100644 --- a/crates/aiken-lang/src/parser/definition/snapshots/validator.snap +++ b/crates/aiken-lang/src/parser/definition/snapshots/validator.snap @@ -87,7 +87,7 @@ Validator( }, doc: None, location: 0..0, - name: "fallback", + name: "else", public: true, return_annotation: None, return_type: (), diff --git a/crates/aiken-lang/src/parser/definition/validator.rs b/crates/aiken-lang/src/parser/definition/validator.rs index dd5b46d9..d2a951b5 100644 --- a/crates/aiken-lang/src/parser/definition/validator.rs +++ b/crates/aiken-lang/src/parser/definition/validator.rs @@ -69,7 +69,7 @@ pub fn parser() -> impl Parser params.foo == 1 D1(_params) -> False @@ -359,8 +359,8 @@ fn expect_multi_patterns() { #[test] fn validator_correct_form() { let source_code = r#" - validator { - fn foo(d, r, c) { + validator foo { + spend(d, r, c) { True } } @@ -372,8 +372,8 @@ fn validator_correct_form() { #[test] fn validator_in_lib_warning() { let source_code = r#" - validator { - fn foo(c) { + validator foo { + spend(c) { True } } @@ -390,12 +390,12 @@ fn validator_in_lib_warning() { #[test] fn multi_validator() { let source_code = r#" - validator(foo: ByteArray, bar: Int) { - fn spend(_d, _r, _c) { + validator foo(foo: ByteArray, bar: Int) { + spend(_d, _r, _c) { foo == #"aabb" } - fn mint(_r, _c) { + mint(_r, _c) { bar == 0 } } @@ -409,12 +409,12 @@ fn multi_validator() { #[test] fn multi_validator_warning() { let source_code = r#" - validator(foo: ByteArray, bar: Int) { - fn spend(_d, _r, _c) { + validator foo(foo: ByteArray, bar: Int) { + spend(_d, _r, _c) { foo == #"aabb" } - fn mint(_r, _c) { + mint(_r, _c) { True } } @@ -460,7 +460,7 @@ fn exhaustiveness_simple() { fn validator_args_no_annotation() { let source_code = r#" validator hello(d) { - foo (a, b, c) { + spend(a, b, c) { True } } @@ -2472,8 +2472,8 @@ fn validator_private_type_leak() { bar: Int, } - validator { - pub fn bar(datum: Datum, redeemer: Redeemer, _ctx) { + validator bar { + spend(datum: Datum, redeemer: Redeemer, _ctx) { datum.foo == redeemer.bar } } @@ -2496,8 +2496,8 @@ fn validator_public() { bar: Int, } - validator { - pub fn bar(datum: Datum, redeemer: Redeemer, _ctx) { + validator bar { + spend(datum: Datum, redeemer: Redeemer, _ctx) { datum.foo == redeemer.bar } } @@ -2517,8 +2517,8 @@ fn validator_private_everything() { bar: Int, } - validator { - fn bar(datum: Datum, redeemer: Redeemer, _ctx) { + validator bar { + spend(datum: Datum, redeemer: Redeemer, _ctx) { datum.foo == redeemer.bar } } diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs index d2015390..65bd4f06 100644 --- a/crates/aiken-lang/src/tests/format.rs +++ b/crates/aiken-lang/src/tests/format.rs @@ -198,18 +198,18 @@ fn format_preserve_newline_after_bool_expect() { fn format_validator() { assert_format!( r#" - validator ( ) { + validator thing ( ) { // What is the purpose of life - fn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } } // What? - validator { + validator foo { /// Some documentation for foo - fn foo() { + foo() { Void } @@ -223,12 +223,12 @@ fn format_validator() { fn format_double_validator() { assert_format!( r#" - validator ( param1 : ByteArray ) { - fn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { + validator foo( param1 : ByteArray ) { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } /// This is bar - fn bar(r: Redeemer, ctx : ScriptContext ) -> Bool { True } + mint(r: Redeemer, ctx : ScriptContext ) -> Bool { True } } "# ); @@ -238,12 +238,12 @@ fn format_double_validator() { fn format_double_validator_public() { assert_format!( r#" - validator ( param1 : ByteArray ) { - pub fn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { + validator foo ( param1 : ByteArray ) { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } /// This is bar - pub fn bar(r: Redeemer, ctx : ScriptContext ) -> Bool { True } + mint(r: Redeemer, ctx : ScriptContext ) -> Bool { True } } "# ); @@ -967,20 +967,20 @@ fn format_anon_fn_pattern() { fn format_validator_pattern() { assert_format!( r#" - validator(Foo { a, b, .. }) { - fn foo() { todo } + validator foo(Foo { a, b, .. }) { + spend() { todo } } - validator([Bar] : List) { - fn bar() { todo } + validator foo([Bar] : List) { + spend() { todo } } - validator((Baz, Baz) as x) { - fn baz() { todo } + validator foo((Baz, Baz) as x) { + mint() { todo } } - validator((fst, snd) as x: Pair) { - fn fiz() { todo } + validator fiz((fst, snd) as x: Pair) { + spend() { todo } } "# ); diff --git a/crates/aiken-lang/src/tests/snapshots/format_double_validator.snap b/crates/aiken-lang/src/tests/snapshots/format_double_validator.snap index 6a4b92c9..f8538605 100644 --- a/crates/aiken-lang/src/tests/snapshots/format_double_validator.snap +++ b/crates/aiken-lang/src/tests/snapshots/format_double_validator.snap @@ -1,14 +1,18 @@ --- source: crates/aiken-lang/src/tests/format.rs -description: "Code:\n\n validator ( param1 : ByteArray ) {\n fn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\n True\n }\n /// This is bar\nfn bar(r: Redeemer, ctx : ScriptContext ) -> Bool { True }\n }\n" +description: "Code:\n\n validator foo( param1 : ByteArray ) {\n spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\n True\n }\n /// This is bar\nmint(r: Redeemer, ctx : ScriptContext ) -> Bool { True }\n }\n" --- -validator(param1: ByteArray) { - fn foo(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { +validator foo(param1: ByteArray) { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } /// This is bar - fn bar(r: Redeemer, ctx: ScriptContext) -> Bool { + mint(r: Redeemer, ctx: ScriptContext) -> Bool { True } + + else(_ctx) { + fail + } } diff --git a/crates/aiken-lang/src/tests/snapshots/format_double_validator_public.snap b/crates/aiken-lang/src/tests/snapshots/format_double_validator_public.snap index 7582c958..7c5296e4 100644 --- a/crates/aiken-lang/src/tests/snapshots/format_double_validator_public.snap +++ b/crates/aiken-lang/src/tests/snapshots/format_double_validator_public.snap @@ -1,14 +1,18 @@ --- source: crates/aiken-lang/src/tests/format.rs -description: "Code:\n\n validator ( param1 : ByteArray ) {\n pub fn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\n True\n }\n /// This is bar\npub fn bar(r: Redeemer, ctx : ScriptContext ) -> Bool { True }\n }\n" +description: "Code:\n\n validator foo ( param1 : ByteArray ) {\n spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\n True\n }\n /// This is bar\nmint(r: Redeemer, ctx : ScriptContext ) -> Bool { True }\n }\n" --- -validator(param1: ByteArray) { - pub fn foo(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { +validator foo(param1: ByteArray) { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } /// This is bar - pub fn bar(r: Redeemer, ctx: ScriptContext) -> Bool { + mint(r: Redeemer, ctx: ScriptContext) -> Bool { True } + + else(_ctx) { + fail + } } diff --git a/crates/aiken-lang/src/tests/snapshots/format_validator.snap b/crates/aiken-lang/src/tests/snapshots/format_validator.snap index cf306c77..c008e442 100644 --- a/crates/aiken-lang/src/tests/snapshots/format_validator.snap +++ b/crates/aiken-lang/src/tests/snapshots/format_validator.snap @@ -1,21 +1,28 @@ --- source: crates/aiken-lang/src/tests/format.rs -description: "Code:\n\nvalidator ( ) {\n// What is the purpose of life\n\nfn foo (d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\nTrue\n}\n}\n\n// What?\nvalidator {\n /// Some documentation for foo\n fn foo() {\n Void\n }\n\n // I am lost\n}\n" +description: "Code:\n\nvalidator thing ( ) {\n// What is the purpose of life\n\nspend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool {\nTrue\n}\n}\n\n// What?\nvalidator foo {\n /// Some documentation for foo\n foo() {\n Void\n }\n\n // I am lost\n}\n" --- -validator { +validator thing { // What is the purpose of life - fn foo(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { + spend(d: Datum, r: Redeemer, ctx: ScriptContext) -> Bool { True } + + else(_ctx) { + fail + } } // What? -validator { +validator foo { /// Some documentation for foo - fn foo() { + foo() { Void } - // I am lost + else(_ctx) { + fail + // I am lost + } } diff --git a/crates/aiken-lang/src/tests/snapshots/format_validator_pattern.snap b/crates/aiken-lang/src/tests/snapshots/format_validator_pattern.snap index 74023392..e12b4829 100644 --- a/crates/aiken-lang/src/tests/snapshots/format_validator_pattern.snap +++ b/crates/aiken-lang/src/tests/snapshots/format_validator_pattern.snap @@ -1,27 +1,43 @@ --- source: crates/aiken-lang/src/tests/format.rs -description: "Code:\n\nvalidator(Foo { a, b, .. }) {\n fn foo() { todo }\n}\n\nvalidator([Bar] : List) {\n fn bar() { todo }\n}\n\nvalidator((Baz, Baz) as x) {\n fn baz() { todo }\n}\n\nvalidator((fst, snd) as x: Pair) {\n fn fiz() { todo }\n}\n" +description: "Code:\n\nvalidator foo(Foo { a, b, .. }) {\n spend() { todo }\n}\n\nvalidator foo([Bar] : List) {\n spend() { todo }\n}\n\nvalidator foo((Baz, Baz) as x) {\n mint() { todo }\n}\n\nvalidator fiz((fst, snd) as x: Pair) {\n spend() { todo }\n}\n" --- -validator(Foo { a, b, .. }) { - fn foo() { +validator foo(Foo { a, b, .. }) { + spend() { todo } + + else(_ctx) { + fail + } } -validator([Bar]: List) { - fn bar() { +validator foo([Bar]: List) { + spend() { todo } + + else(_ctx) { + fail + } } -validator((Baz, Baz) as x) { - fn baz() { +validator foo((Baz, Baz) as x) { + mint() { todo } + + else(_ctx) { + fail + } } -validator((fst, snd) as x: Pair) { - fn fiz() { +validator fiz((fst, snd) as x: Pair) { + spend() { todo } + + else(_ctx) { + fail + } }