From ee01a9f5b5e2e76f7aed519629b2c77f8de6dbb6 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Wed, 29 Dec 2021 20:24:27 +0100 Subject: [PATCH] use cargo insta in parser --- Cargo.lock | 218 ++++++++ Cargo.toml | 3 + .../script_lang__parse__test__add.snap | 33 ++ .../script_lang__parse__test__and-2.snap | 33 ++ .../script_lang__parse__test__and.snap | 33 ++ ...g__parse__test__assignment__call_expr.snap | 67 +++ ...lang__parse__test__assignment__simple.snap | 32 ++ ...cript_lang__parse__test__block__empty.snap | 13 + ...ript_lang__parse__test__block__nested.snap | 23 + ...__parse__test__block__two_expressions.snap | 36 ++ ...lang__parse__test__call__field_simple.snap | 32 ++ ...ript_lang__parse__test__call__fn_args.snap | 45 ++ ...cript_lang__parse__test__call__nested.snap | 60 +++ ...cript_lang__parse__test__call__simple.snap | 26 + ...t_lang__parse__test__call__with_exprs.snap | 82 +++ .../script_lang__parse__test__divide.snap | 33 ++ .../script_lang__parse__test__equal.snap | 33 ++ ...lang__parse__test__expr__add_multiply.snap | 51 ++ ..._lang__parse__test__expr__equal_unary.snap | 42 ++ ...arse__test__expr__parentheses_mul_add.snap | 51 ++ .../script_lang__parse__test__greater.snap | 33 ++ ...ript_lang__parse__test__greater_equal.snap | 33 ++ .../script_lang__parse__test__less.snap | 33 ++ .../script_lang__parse__test__less_equal.snap | 33 ++ .../script_lang__parse__test__modulo.snap | 33 ++ .../script_lang__parse__test__multiply.snap | 33 ++ .../script_lang__parse__test__not_equal.snap | 33 ++ ...t_lang__parse__test__number_literal-2.snap | 15 + ...t_lang__parse__test__number_literal-3.snap | 15 + ...t_lang__parse__test__number_literal-4.snap | 15 + ...t_lang__parse__test__number_literal-5.snap | 15 + ...t_lang__parse__test__number_literal-6.snap | 15 + ...t_lang__parse__test__number_literal-7.snap | 15 + ...t_lang__parse__test__number_literal-8.snap | 15 + ...ipt_lang__parse__test__number_literal.snap | 15 + ...ng__parse__test__primary__empty_array.snap | 15 + ...e__test__primary__empty_array_literal.snap | 15 + ...g__parse__test__primary__empty_object.snap | 14 + ...ang__parse__test__primary__ident_test.snap | 15 + ...ript_lang__parse__test__primary__null.snap | 14 + ...pt_lang__parse__test__primary__number.snap | 15 + ...t_lang__parse__test__primary__r#false.snap | 15 + ...pt_lang__parse__test__primary__r#true.snap | 15 + ...__test__primary__single_array_literal.snap | 25 + ...__single_array_literal_trailing_comma.snap | 25 + ...pt_lang__parse__test__primary__string.snap | 15 + ...rse__test__primary__two_array_literal.snap | 34 ++ ...ary__two_array_literal_trailing_comma.snap | 34 ++ ..._lang__parse__test__print__print_true.snap | 21 + ...script_lang__parse__test__r#fn__empty.snap | 29 + ..._lang__parse__test__r#fn__params_body.snap | 74 +++ ...script_lang__parse__test__r#if__empty.snap | 29 + ...ript_lang__parse__test__r#if__if_else.snap | 43 ++ ...t_lang__parse__test__r#if__if_else_if.snap | 59 ++ ...g__parse__test__r#if__if_else_if_else.snap | 73 +++ ...arse__test__r#loop__break_after_inner.snap | 39 ++ ...ript_lang__parse__test__r#loop__empty.snap | 19 + ...lang__parse__test__r#loop__with_break.snap | 26 + ...ipt_lang__parse__test__r#while__empty.snap | 30 ++ ...se__test__r#while__or_condition_break.snap | 55 ++ .../script_lang__parse__test__sub.snap | 33 ++ .../script_lang__parse__test__unary__neg.snap | 24 + .../script_lang__parse__test__unary__not.snap | 24 + src/parse/test.rs | 509 +++--------------- 64 files changed, 2212 insertions(+), 423 deletions(-) create mode 100644 src/parse/snapshots/script_lang__parse__test__add.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__and-2.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__and.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__assignment__call_expr.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__assignment__simple.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__block__empty.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__block__nested.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__block__two_expressions.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__call__field_simple.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__call__fn_args.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__call__nested.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__call__simple.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__call__with_exprs.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__divide.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__equal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__expr__add_multiply.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__expr__equal_unary.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__expr__parentheses_mul_add.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__greater.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__greater_equal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__less.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__less_equal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__modulo.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__multiply.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__not_equal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-2.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-3.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-4.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-5.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-6.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-7.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal-8.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__number_literal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__empty_array.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__empty_array_literal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__empty_object.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__ident_test.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__null.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__number.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__r#false.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__r#true.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__single_array_literal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__single_array_literal_trailing_comma.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__string.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__two_array_literal.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__primary__two_array_literal_trailing_comma.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__print__print_true.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#fn__empty.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#fn__params_body.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#if__empty.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#if__if_else.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#if__if_else_if.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#if__if_else_if_else.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#loop__break_after_inner.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#loop__empty.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#loop__with_break.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#while__empty.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__r#while__or_condition_break.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__sub.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__unary__neg.snap create mode 100644 src/parse/snapshots/script_lang__parse__test__unary__not.snap diff --git a/Cargo.lock b/Cargo.lock index 017fa33..aed4131 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,15 +2,233 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "console" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3993e6445baa160675931ec041a5e03ca84b9c6e32a056150d3aa2bdda0a1f45" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "terminal_size", + "winapi", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "indexmap" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "insta" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86c4e56d571b4cc829f0ce71506bd865a90369eeab5f3d3657ba96230beb8012" +dependencies = [ + "console", + "lazy_static", + "serde", + "serde_json", + "serde_yaml", + "similar", + "uuid", +] + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.112" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" + +[[package]] +name = "linked-hash-map" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47aa80447ce4daf1717500037052af176af5d38cc3e571d9ec1c7353fc10c87d" +dependencies = [ + "proc-macro2", +] + [[package]] name = "rustc-hash" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "ryu" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" + [[package]] name = "script_lang" version = "0.1.0" dependencies = [ + "insta", "rustc-hash", ] + +[[package]] +name = "serde" +version = "1.0.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a521f2940385c165a24ee286aa8599633d162077a54bdcae2a6fd5a7bfa7a0" +dependencies = [ + "indexmap", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "similar" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e24979f63a11545f5f2c60141afe249d4f19f84581ea2138065e400941d83d3" + +[[package]] +name = "syn" +version = "1.0.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecb2e6da8ee5eb9a61068762a32fa9619cc591ceb055b3687f4cd4051ec2e06b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "terminal_size" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] diff --git a/Cargo.toml b/Cargo.toml index 88c10e8..6f7c5e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,6 @@ rustc-hash = { version = "1.1.0", optional = true } [features] fxhash = ["rustc-hash"] + +[dev-dependencies] +insta = "1.9.0" diff --git a/src/parse/snapshots/script_lang__parse__test__add.snap b/src/parse/snapshots/script_lang__parse__test__add.snap new file mode 100644 index 0000000..15db0dc --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__add.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Add, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__and-2.snap b/src/parse/snapshots/script_lang__parse__test__and-2.snap new file mode 100644 index 0000000..e77b2b0 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__and-2.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Or, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__and.snap b/src/parse/snapshots/script_lang__parse__test__and.snap new file mode 100644 index 0000000..f465dcd --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__and.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: And, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__assignment__call_expr.snap b/src/parse/snapshots/script_lang__parse__test__assignment__call_expr.snap new file mode 100644 index 0000000..cd9a3cd --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__assignment__call_expr.snap @@ -0,0 +1,67 @@ +--- +source: src/parse/test.rs +assertion_line: 107 +expression: ast + +--- +Assignment( + Assignment { + span: Span { + start: 0, + end: 0, + }, + lhs: Call( + Call { + callee: Ident( + Ident { + sym: "hugo", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Field( + Ident { + sym: "age", + span: Span { + start: 0, + end: 0, + }, + }, + ), + }, + ), + rhs: BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 2021.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 1986.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Sub, + }, + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__assignment__simple.snap b/src/parse/snapshots/script_lang__parse__test__assignment__simple.snap new file mode 100644 index 0000000..3eb6e75 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__assignment__simple.snap @@ -0,0 +1,32 @@ +--- +source: src/parse/test.rs +assertion_line: 89 +expression: ast + +--- +Assignment( + Assignment { + span: Span { + start: 0, + end: 0, + }, + lhs: Ident( + Ident { + sym: "hugo", + span: Span { + start: 0, + end: 0, + }, + }, + ), + rhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__block__empty.snap b/src/parse/snapshots/script_lang__parse__test__block__empty.snap new file mode 100644 index 0000000..ec5a100 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__block__empty.snap @@ -0,0 +1,13 @@ +--- +source: src/parse/test.rs +assertion_line: 251 +expression: ast + +--- +Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, +} diff --git a/src/parse/snapshots/script_lang__parse__test__block__nested.snap b/src/parse/snapshots/script_lang__parse__test__block__nested.snap new file mode 100644 index 0000000..0621efe --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__block__nested.snap @@ -0,0 +1,23 @@ +--- +source: src/parse/test.rs +assertion_line: 267 +expression: ast + +--- +Block { + stmts: [ + Block( + Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + ), + ], + span: Span { + start: 0, + end: 0, + }, +} diff --git a/src/parse/snapshots/script_lang__parse__test__block__two_expressions.snap b/src/parse/snapshots/script_lang__parse__test__block__two_expressions.snap new file mode 100644 index 0000000..04f186b --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__block__two_expressions.snap @@ -0,0 +1,36 @@ +--- +source: src/parse/test.rs +assertion_line: 260 +expression: ast + +--- +Block { + stmts: [ + Expr( + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ), + Expr( + Literal( + Number( + 20.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ), + ], + span: Span { + start: 0, + end: 0, + }, +} diff --git a/src/parse/snapshots/script_lang__parse__test__call__field_simple.snap b/src/parse/snapshots/script_lang__parse__test__call__field_simple.snap new file mode 100644 index 0000000..05f795f --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__call__field_simple.snap @@ -0,0 +1,32 @@ +--- +source: src/parse/test.rs +assertion_line: 519 +expression: ast + +--- +Call( + Call { + callee: Ident( + Ident { + sym: "hugo", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Field( + Ident { + sym: "name", + span: Span { + start: 0, + end: 0, + }, + }, + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__call__fn_args.snap b/src/parse/snapshots/script_lang__parse__test__call__fn_args.snap new file mode 100644 index 0000000..e043fe0 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__call__fn_args.snap @@ -0,0 +1,45 @@ +--- +source: src/parse/test.rs +assertion_line: 543 +expression: ast + +--- +Call( + Call { + callee: Ident( + Ident { + sym: "print", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Fn( + [ + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + Literal( + Number( + 5.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ], + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__call__nested.snap b/src/parse/snapshots/script_lang__parse__test__call__nested.snap new file mode 100644 index 0000000..d355fb8 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__call__nested.snap @@ -0,0 +1,60 @@ +--- +source: src/parse/test.rs +assertion_line: 560 +expression: ast + +--- +Call( + Call { + callee: Call( + Call { + callee: Call( + Call { + callee: Ident( + Ident { + sym: "hugo", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Field( + Ident { + sym: "name", + span: Span { + start: 0, + end: 0, + }, + }, + ), + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Field( + Ident { + sym: "print", + span: Span { + start: 0, + end: 0, + }, + }, + ), + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Fn( + [], + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__call__simple.snap b/src/parse/snapshots/script_lang__parse__test__call__simple.snap new file mode 100644 index 0000000..f2cb5e5 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__call__simple.snap @@ -0,0 +1,26 @@ +--- +source: src/parse/test.rs +assertion_line: 526 +expression: ast + +--- +Call( + Call { + callee: Ident( + Ident { + sym: "print", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Fn( + [], + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__call__with_exprs.snap b/src/parse/snapshots/script_lang__parse__test__call__with_exprs.snap new file mode 100644 index 0000000..7881ad2 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__call__with_exprs.snap @@ -0,0 +1,82 @@ +--- +source: src/parse/test.rs +assertion_line: 583 +expression: ast + +--- +Call( + Call { + callee: Ident( + Ident { + sym: "print", + span: Span { + start: 0, + end: 0, + }, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Fn( + [ + Call( + Call { + callee: Call( + Call { + callee: BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 5.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Add, + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Field( + Ident { + sym: "abs", + span: Span { + start: 0, + end: 0, + }, + }, + ), + }, + ), + span: Span { + start: 0, + end: 0, + }, + kind: Fn( + [], + ), + }, + ), + ], + ), + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__divide.snap b/src/parse/snapshots/script_lang__parse__test__divide.snap new file mode 100644 index 0000000..f600ad1 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__divide.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Div, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__equal.snap b/src/parse/snapshots/script_lang__parse__test__equal.snap new file mode 100644 index 0000000..259684c --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__equal.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Equal, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__expr__add_multiply.snap b/src/parse/snapshots/script_lang__parse__test__expr__add_multiply.snap new file mode 100644 index 0000000..10d0a11 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__expr__add_multiply.snap @@ -0,0 +1,51 @@ +--- +source: src/parse/test.rs +assertion_line: 300 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 20.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 100.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Mul, + }, + ), + kind: Add, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__expr__equal_unary.snap b/src/parse/snapshots/script_lang__parse__test__expr__equal_unary.snap new file mode 100644 index 0000000..197a232 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__expr__equal_unary.snap @@ -0,0 +1,42 @@ +--- +source: src/parse/test.rs +assertion_line: 309 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: UnaryOp( + UnaryOp { + span: Span { + start: 0, + end: 0, + }, + expr: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Neg, + }, + ), + kind: Equal, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__expr__parentheses_mul_add.snap b/src/parse/snapshots/script_lang__parse__test__expr__parentheses_mul_add.snap new file mode 100644 index 0000000..6ba87fc --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__expr__parentheses_mul_add.snap @@ -0,0 +1,51 @@ +--- +source: src/parse/test.rs +assertion_line: 326 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 20.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 30.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Add, + }, + ), + kind: Mul, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__greater.snap b/src/parse/snapshots/script_lang__parse__test__greater.snap new file mode 100644 index 0000000..ee36f22 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__greater.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Greater, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__greater_equal.snap b/src/parse/snapshots/script_lang__parse__test__greater_equal.snap new file mode 100644 index 0000000..82cdf82 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__greater_equal.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: GreaterEqual, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__less.snap b/src/parse/snapshots/script_lang__parse__test__less.snap new file mode 100644 index 0000000..cfa8253 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__less.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Less, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__less_equal.snap b/src/parse/snapshots/script_lang__parse__test__less_equal.snap new file mode 100644 index 0000000..80f443d --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__less_equal.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: LessEqual, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__modulo.snap b/src/parse/snapshots/script_lang__parse__test__modulo.snap new file mode 100644 index 0000000..7a42820 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__modulo.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Mod, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__multiply.snap b/src/parse/snapshots/script_lang__parse__test__multiply.snap new file mode 100644 index 0000000..e2c8277 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__multiply.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Mul, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__not_equal.snap b/src/parse/snapshots/script_lang__parse__test__not_equal.snap new file mode 100644 index 0000000..135f58c --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__not_equal.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: NotEqual, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-2.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-2.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-2.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-3.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-3.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-3.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-4.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-4.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-4.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-5.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-5.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-5.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-6.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-6.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-6.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-7.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-7.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-7.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal-8.snap b/src/parse/snapshots/script_lang__parse__test__number_literal-8.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal-8.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__number_literal.snap b/src/parse/snapshots/script_lang__parse__test__number_literal.snap new file mode 100644 index 0000000..81b4f92 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__number_literal.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 41 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__empty_array.snap b/src/parse/snapshots/script_lang__parse__test__primary__empty_array.snap new file mode 100644 index 0000000..fd9cc69 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__empty_array.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 627 +expression: ast + +--- +Literal( + Array( + [], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__empty_array_literal.snap b/src/parse/snapshots/script_lang__parse__test__primary__empty_array_literal.snap new file mode 100644 index 0000000..67f59f3 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__empty_array_literal.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 655 +expression: ast + +--- +Literal( + Array( + [], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__empty_object.snap b/src/parse/snapshots/script_lang__parse__test__primary__empty_object.snap new file mode 100644 index 0000000..2e5d502 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__empty_object.snap @@ -0,0 +1,14 @@ +--- +source: src/parse/test.rs +assertion_line: 620 +expression: ast + +--- +Literal( + Object( + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__ident_test.snap b/src/parse/snapshots/script_lang__parse__test__primary__ident_test.snap new file mode 100644 index 0000000..777eb0c --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__ident_test.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 599 +expression: ast + +--- +Ident( + Ident { + sym: "tokens", + span: Span { + start: 0, + end: 0, + }, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__null.snap b/src/parse/snapshots/script_lang__parse__test__primary__null.snap new file mode 100644 index 0000000..d9c57f1 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__null.snap @@ -0,0 +1,14 @@ +--- +source: src/parse/test.rs +assertion_line: 648 +expression: ast + +--- +Literal( + Null( + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__number.snap b/src/parse/snapshots/script_lang__parse__test__primary__number.snap new file mode 100644 index 0000000..968a338 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__number.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 613 +expression: ast + +--- +Literal( + String( + "uwu", + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__r#false.snap b/src/parse/snapshots/script_lang__parse__test__primary__r#false.snap new file mode 100644 index 0000000..83381b2 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__r#false.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 634 +expression: ast + +--- +Literal( + Boolean( + false, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__r#true.snap b/src/parse/snapshots/script_lang__parse__test__primary__r#true.snap new file mode 100644 index 0000000..a3df71d --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__r#true.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 641 +expression: ast + +--- +Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal.snap b/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal.snap new file mode 100644 index 0000000..425f19d --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal.snap @@ -0,0 +1,25 @@ +--- +source: src/parse/test.rs +assertion_line: 662 +expression: ast + +--- +Literal( + Array( + [ + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal_trailing_comma.snap b/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal_trailing_comma.snap new file mode 100644 index 0000000..a3ff615 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__single_array_literal_trailing_comma.snap @@ -0,0 +1,25 @@ +--- +source: src/parse/test.rs +assertion_line: 669 +expression: ast + +--- +Literal( + Array( + [ + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__string.snap b/src/parse/snapshots/script_lang__parse__test__primary__string.snap new file mode 100644 index 0000000..4bb9db0 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__string.snap @@ -0,0 +1,15 @@ +--- +source: src/parse/test.rs +assertion_line: 606 +expression: ast + +--- +Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal.snap b/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal.snap new file mode 100644 index 0000000..619c4be --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal.snap @@ -0,0 +1,34 @@ +--- +source: src/parse/test.rs +assertion_line: 678 +expression: ast + +--- +Literal( + Array( + [ + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal_trailing_comma.snap b/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal_trailing_comma.snap new file mode 100644 index 0000000..4918979 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__primary__two_array_literal_trailing_comma.snap @@ -0,0 +1,34 @@ +--- +source: src/parse/test.rs +assertion_line: 687 +expression: ast + +--- +Literal( + Array( + [ + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + ], + Span { + start: 0, + end: 0, + }, + ), +) diff --git a/src/parse/snapshots/script_lang__parse__test__print__print_true.snap b/src/parse/snapshots/script_lang__parse__test__print__print_true.snap new file mode 100644 index 0000000..76bac38 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__print__print_true.snap @@ -0,0 +1,21 @@ +--- +source: src/parse/test.rs +assertion_line: 209 +expression: ast + +--- +Print( + Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + Span { + start: 0, + end: 0, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#fn__empty.snap b/src/parse/snapshots/script_lang__parse__test__r#fn__empty.snap new file mode 100644 index 0000000..f4494d6 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#fn__empty.snap @@ -0,0 +1,29 @@ +--- +source: src/parse/test.rs +assertion_line: 125 +expression: ast + +--- +FnDecl( + FnDecl { + span: Span { + start: 0, + end: 0, + }, + name: Ident { + sym: "empty", + span: Span { + start: 0, + end: 0, + }, + }, + params: [], + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#fn__params_body.snap b/src/parse/snapshots/script_lang__parse__test__r#fn__params_body.snap new file mode 100644 index 0000000..4029797 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#fn__params_body.snap @@ -0,0 +1,74 @@ +--- +source: src/parse/test.rs +assertion_line: 148 +expression: ast + +--- +FnDecl( + FnDecl { + span: Span { + start: 0, + end: 0, + }, + name: Ident { + sym: "empty", + span: Span { + start: 0, + end: 0, + }, + }, + params: [ + Ident { + sym: "a", + span: Span { + start: 0, + end: 0, + }, + }, + Ident { + sym: "b", + span: Span { + start: 0, + end: 0, + }, + }, + ], + body: Block { + stmts: [ + Expr( + BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 20.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Add, + }, + ), + ), + ], + span: Span { + start: 0, + end: 0, + }, + }, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#if__empty.snap b/src/parse/snapshots/script_lang__parse__test__r#if__empty.snap new file mode 100644 index 0000000..53ebe5a --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#if__empty.snap @@ -0,0 +1,29 @@ +--- +source: src/parse/test.rs +assertion_line: 164 +expression: ast + +--- +IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: None, +} diff --git a/src/parse/snapshots/script_lang__parse__test__r#if__if_else.snap b/src/parse/snapshots/script_lang__parse__test__r#if__if_else.snap new file mode 100644 index 0000000..fae566d --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#if__if_else.snap @@ -0,0 +1,43 @@ +--- +source: src/parse/test.rs +assertion_line: 173 +expression: ast + +--- +IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: Some( + Else( + Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, + ), + ), +} diff --git a/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if.snap b/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if.snap new file mode 100644 index 0000000..5f8292a --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if.snap @@ -0,0 +1,59 @@ +--- +source: src/parse/test.rs +assertion_line: 182 +expression: ast + +--- +IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: None, + }, + Span { + start: 0, + end: 0, + }, + ), + ), +} diff --git a/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if_else.snap b/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if_else.snap new file mode 100644 index 0000000..2e76d11 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#if__if_else_if_else.snap @@ -0,0 +1,73 @@ +--- +source: src/parse/test.rs +assertion_line: 193 +expression: ast + +--- +IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: Some( + ElseIf( + IfStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + else_part: Some( + Else( + Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, + ), + ), + }, + Span { + start: 0, + end: 0, + }, + ), + ), +} diff --git a/src/parse/snapshots/script_lang__parse__test__r#loop__break_after_inner.snap b/src/parse/snapshots/script_lang__parse__test__r#loop__break_after_inner.snap new file mode 100644 index 0000000..37c3860 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#loop__break_after_inner.snap @@ -0,0 +1,39 @@ +--- +source: src/parse/test.rs +assertion_line: 234 +expression: ast + +--- +Loop( + Block { + stmts: [ + Loop( + Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, + ), + Break( + Span { + start: 0, + end: 0, + }, + ), + ], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#loop__empty.snap b/src/parse/snapshots/script_lang__parse__test__r#loop__empty.snap new file mode 100644 index 0000000..7e74145 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#loop__empty.snap @@ -0,0 +1,19 @@ +--- +source: src/parse/test.rs +assertion_line: 218 +expression: ast + +--- +Loop( + Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#loop__with_break.snap b/src/parse/snapshots/script_lang__parse__test__r#loop__with_break.snap new file mode 100644 index 0000000..b1f4049 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#loop__with_break.snap @@ -0,0 +1,26 @@ +--- +source: src/parse/test.rs +assertion_line: 225 +expression: ast + +--- +Loop( + Block { + stmts: [ + Break( + Span { + start: 0, + end: 0, + }, + ), + ], + span: Span { + start: 0, + end: 0, + }, + }, + Span { + start: 0, + end: 0, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#while__empty.snap b/src/parse/snapshots/script_lang__parse__test__r#while__empty.snap new file mode 100644 index 0000000..4dfe82f --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#while__empty.snap @@ -0,0 +1,30 @@ +--- +source: src/parse/test.rs +assertion_line: 193 +expression: ast + +--- +While( + WhileStmt { + span: Span { + start: 0, + end: 0, + }, + cond: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + body: Block { + stmts: [], + span: Span { + start: 0, + end: 0, + }, + }, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__r#while__or_condition_break.snap b/src/parse/snapshots/script_lang__parse__test__r#while__or_condition_break.snap new file mode 100644 index 0000000..8da1db4 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__r#while__or_condition_break.snap @@ -0,0 +1,55 @@ +--- +source: src/parse/test.rs +assertion_line: 202 +expression: ast + +--- +While( + WhileStmt { + span: Span { + start: 0, + end: 0, + }, + cond: BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Boolean( + false, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Or, + }, + ), + body: Block { + stmts: [ + Break( + Span { + start: 0, + end: 0, + }, + ), + ], + span: Span { + start: 0, + end: 0, + }, + }, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__sub.snap b/src/parse/snapshots/script_lang__parse__test__sub.snap new file mode 100644 index 0000000..66e3020 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__sub.snap @@ -0,0 +1,33 @@ +--- +source: src/parse/test.rs +assertion_line: 35 +expression: ast + +--- +BinaryOp( + BinaryOp { + span: Span { + start: 0, + end: 0, + }, + lhs: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + rhs: Literal( + Number( + 4.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Sub, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__unary__neg.snap b/src/parse/snapshots/script_lang__parse__test__unary__neg.snap new file mode 100644 index 0000000..0bbc2d3 --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__unary__neg.snap @@ -0,0 +1,24 @@ +--- +source: src/parse/test.rs +assertion_line: 503 +expression: ast + +--- +UnaryOp( + UnaryOp { + span: Span { + start: 0, + end: 0, + }, + expr: Literal( + Number( + 10.0, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Neg, + }, +) diff --git a/src/parse/snapshots/script_lang__parse__test__unary__not.snap b/src/parse/snapshots/script_lang__parse__test__unary__not.snap new file mode 100644 index 0000000..e3fde4d --- /dev/null +++ b/src/parse/snapshots/script_lang__parse__test__unary__not.snap @@ -0,0 +1,24 @@ +--- +source: src/parse/test.rs +assertion_line: 496 +expression: ast + +--- +UnaryOp( + UnaryOp { + span: Span { + start: 0, + end: 0, + }, + expr: Literal( + Boolean( + true, + Span { + start: 0, + end: 0, + }, + ), + ), + kind: Not, + }, +) diff --git a/src/parse/test.rs b/src/parse/test.rs index 2374ac4..657e716 100644 --- a/src/parse/test.rs +++ b/src/parse/test.rs @@ -1,12 +1,9 @@ -use crate::ast::BinaryOp; use crate::parse::Parser; use prelude::*; mod prelude { - pub(super) use super::{ - empty_block, ident, num_lit, parser, test_literal_bin_op, test_number_literal, token, - }; - pub(super) use crate::ast::*; + pub(super) use super::{parser, test_literal_bin_op, test_number_literal, token}; + pub(super) use crate::ast::{Expr, Stmt}; pub(super) use crate::errors::Span; pub(super) use crate::lex::{ Token, @@ -21,24 +18,6 @@ fn token(kind: TokenType) -> Token { } } -fn num_lit(number: f64) -> Expr { - Expr::Literal(Literal::Number(number, Span::dummy())) -} - -fn ident(name: &str) -> Ident { - Ident { - sym: name.to_string(), - span: Default::default(), - } -} - -fn empty_block() -> Block { - Block { - stmts: vec![], - span: Span::dummy(), - } -} - fn parser(tokens: Vec) -> Parser { Parser { tokens: tokens.into_iter().peekable(), @@ -48,30 +27,18 @@ fn parser(tokens: Vec) -> Parser { } } -fn test_literal_bin_op>) -> Expr>( - token_type: TokenType, - expected_op_kind: BinaryOpKind, - parser: F, -) { +fn test_literal_bin_op>) -> Expr>(token_type: TokenType, parser: F) { let tokens = [TokenType::Number(10.0), token_type, TokenType::Number(4.0)] .map(token) .into(); - let factor = parser(tokens); - assert_eq!( - Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(10.0), - rhs: num_lit(4.0), - kind: expected_op_kind - })), - factor - ); + let ast = parser(tokens); + insta::assert_debug_snapshot!(ast); } fn test_number_literal>) -> Expr>(parser: F) { let tokens = [TokenType::Number(10.0)].map(token).into(); - let unary = parser(tokens); - assert_eq!(num_lit(10.0), unary); + let ast = parser(tokens); + insta::assert_debug_snapshot!(ast); } mod assignment { @@ -86,14 +53,7 @@ mod assignment { fn simple() { let tokens = [Ident("hugo"), Equal, Number(10.0), Semi].map(token).into(); let ast = parse_assignment(tokens); - assert_eq!( - Stmt::Assignment(Assignment { - span: Default::default(), - lhs: Expr::Ident(ident("hugo")), - rhs: num_lit(10.0) - }), - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -111,23 +71,7 @@ mod assignment { .map(token) .into(); let ast = parse_assignment(tokens); - assert_eq!( - Stmt::Assignment(Assignment { - span: Default::default(), - lhs: Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("hugo")), - span: Default::default(), - kind: CallKind::Field(ident("age")) - })), - rhs: Expr::BinaryOp(Box::new(BinaryOp { - span: Default::default(), - lhs: num_lit(2021.0), - rhs: num_lit(1986.0), - kind: BinaryOpKind::Sub - })) - }), - ast - ); + insta::assert_debug_snapshot!(ast); } } @@ -145,18 +89,7 @@ mod r#fn { .map(token) .into(); let ast = parse_fn(tokens); - assert_eq!( - Stmt::FnDecl(FnDecl { - span: Span::dummy(), - name: ident("empty"), - params: vec![], - body: Block { - stmts: vec![], - span: Default::default() - } - }), - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -179,28 +112,13 @@ mod r#fn { .map(token) .into(); let ast = parse_fn(tokens); - assert_eq!( - Stmt::FnDecl(FnDecl { - span: Span::dummy(), - name: ident("empty"), - params: vec![ident("a"), ident("b")], - body: Block { - stmts: vec![Stmt::Expr(Expr::BinaryOp(Box::new(BinaryOp { - span: Default::default(), - lhs: num_lit(10.0), - rhs: num_lit(20.0), - kind: BinaryOpKind::Add, - })))], - span: Default::default() - } - }), - ast - ); + insta::assert_debug_snapshot!(ast); } } mod r#if { use super::prelude::*; + use crate::ast::IfStmt; fn parse_if(tokens: Vec) -> IfStmt { let mut parser = parser(tokens); @@ -211,15 +129,7 @@ mod r#if { fn empty() { let tokens = [If, True, BraceO, BraceC].map(token).into(); let ast = parse_if(tokens); - assert_eq!( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: None - }, - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -228,15 +138,7 @@ mod r#if { .map(token) .into(); let ast = parse_if(tokens); - assert_eq!( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: Some(Box::new(ElsePart::Else(empty_block(), Span::dummy()))) - }, - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -245,23 +147,7 @@ mod r#if { .map(token) .into(); let ast = parse_if(tokens); - assert_eq!( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: Some(Box::new(ElsePart::ElseIf( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: None - }, - Span::dummy() - ))) - }, - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -272,23 +158,7 @@ mod r#if { .map(token) .into(); let ast = parse_if(tokens); - assert_eq!( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: Some(Box::new(ElsePart::ElseIf( - IfStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block(), - else_part: Some(Box::new(ElsePart::Else(empty_block(), Span::dummy()))) - }, - Span::dummy() - ))) - }, - ast - ); + insta::assert_debug_snapshot!(ast); } } @@ -302,15 +172,9 @@ mod print { #[test] fn print_true() { - let tokens = [Print, True].map(token).into(); + let tokens = [Print, True, Semi].map(token).into(); let ast = parse_print(tokens); - assert_eq!( - Stmt::Print( - Expr::Literal(Literal::Boolean(true, Span::dummy())), - Span::dummy() - ), - ast - ); + insta::assert_debug_snapshot!(ast); } } @@ -326,14 +190,7 @@ mod r#while { fn empty() { let tokens = [While, True, BraceO, BraceC].map(token).into(); let ast = parse_while(tokens); - assert_eq!( - Stmt::While(WhileStmt { - span: Span::dummy(), - cond: Expr::Literal(Literal::Boolean(true, Span::dummy())), - body: empty_block() - }), - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -342,22 +199,7 @@ mod r#while { .map(token) .into(); let ast = parse_while(tokens); - assert_eq!( - Stmt::While(WhileStmt { - span: Span::dummy(), - cond: Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: Expr::Literal(Literal::Boolean(false, Span::dummy())), - rhs: Expr::Literal(Literal::Boolean(true, Span::dummy())), - kind: BinaryOpKind::Or - })), - body: Block { - stmts: vec![Stmt::Break(Span::dummy())], - span: Span::dummy() - } - }), - ast - ); + insta::assert_debug_snapshot!(ast); } } @@ -373,23 +215,14 @@ mod r#loop { fn empty() { let tokens = [Loop, BraceO, BraceC].map(token).into(); let ast = parse_loop(tokens); - assert_eq!(Stmt::Loop(empty_block(), Span::dummy()), ast); + insta::assert_debug_snapshot!(ast); } #[test] fn with_break() { let tokens = [Loop, BraceO, Break, Semi, BraceC].map(token).into(); let ast = parse_loop(tokens); - assert_eq!( - Stmt::Loop( - Block { - stmts: vec![Stmt::Break(Span::dummy())], - span: Default::default() - }, - Span::dummy() - ), - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] @@ -398,24 +231,13 @@ mod r#loop { .map(token) .into(); let ast = parse_loop(tokens); - assert_eq!( - Stmt::Loop( - Block { - stmts: vec![ - Stmt::Loop(empty_block(), Span::dummy()), - Stmt::Break(Span::dummy()) - ], - span: Span::dummy() - }, - Span::dummy() - ), - ast - ); + insta::assert_debug_snapshot!(ast); } } mod block { use super::prelude::*; + use crate::ast::Block; fn parse_block(tokens: Vec) -> Block { let mut parser = parser(tokens); @@ -426,7 +248,7 @@ mod block { fn empty() { let tokens = [BraceO, BraceC].map(token).into(); let ast = parse_block(tokens); - assert_eq!(empty_block(), ast); + insta::assert_debug_snapshot!(ast); } #[test] @@ -435,32 +257,19 @@ mod block { .map(token) .into(); let ast = parse_block(tokens); - assert_eq!( - Block { - stmts: vec![Stmt::Expr(num_lit(10.0)), Stmt::Expr(num_lit(20.0)),], - span: Span::dummy() - }, - ast - ); + insta::assert_debug_snapshot!(ast); } #[test] fn nested() { let tokens = [BraceO, BraceO, BraceC, BraceC].map(token).into(); let ast = parse_block(tokens); - assert_eq!( - Block { - stmts: vec![Stmt::Block(empty_block())], - span: Span::dummy() - }, - ast - ); + insta::assert_debug_snapshot!(ast); } } mod expr { use super::prelude::*; - use crate::ast::{UnaryOp, UnaryOpKind}; fn parse_expr(tokens: Vec) -> Expr { let mut parser = parser(tokens); @@ -487,22 +296,8 @@ mod expr { let tokens = [Number(10.0), Plus, Number(20.0), Asterisk, Number(100.0)] .map(token) .into(); - let expr = parse_expr(tokens); - assert_eq!( - Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(10.0), - rhs: Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(20.0), - rhs: num_lit(100.0), - - kind: BinaryOpKind::Mul - })), - kind: BinaryOpKind::Add - })), - expr - ); + let ast = parse_expr(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -510,20 +305,8 @@ mod expr { let tokens = [Number(10.0), EqualEqual, Minus, Number(10.0)] .map(token) .into(); - let expr = parse_expr(tokens); - assert_eq!( - Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(10.0), - rhs: Expr::UnaryOp(Box::new(UnaryOp { - span: Span::dummy(), - expr: num_lit(10.0), - kind: UnaryOpKind::Neg - })), - kind: BinaryOpKind::Equal - })), - expr - ); + let ast = parse_expr(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -539,22 +322,8 @@ mod expr { ] .map(token) .into(); - let expr = parse_expr(tokens); - assert_eq!( - Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(10.0), - rhs: Expr::BinaryOp(Box::new(BinaryOp { - span: Span::dummy(), - lhs: num_lit(20.0), - rhs: num_lit(30.0), - - kind: BinaryOpKind::Add - })), - kind: BinaryOpKind::Mul - })), - expr - ); + let ast = parse_expr(tokens); + insta::assert_debug_snapshot!(ast); } } @@ -573,7 +342,7 @@ mod logical_or { #[test] fn and() { - test_literal_bin_op(Or, BinaryOpKind::Or, parse_logical_or); + test_literal_bin_op(Or, parse_logical_or); } } @@ -592,7 +361,7 @@ mod logical_and { #[test] fn and() { - test_literal_bin_op(And, BinaryOpKind::And, parse_logical_and); + test_literal_bin_op(And, parse_logical_and); } } @@ -611,12 +380,12 @@ mod equality { #[test] fn not_equal() { - test_literal_bin_op(BangEqual, BinaryOpKind::NotEqual, parse_equality); + test_literal_bin_op(BangEqual, parse_equality); } #[test] fn equal() { - test_literal_bin_op(EqualEqual, BinaryOpKind::Equal, parse_equality); + test_literal_bin_op(EqualEqual, parse_equality); } } @@ -635,22 +404,22 @@ mod comparison { #[test] fn greater() { - test_literal_bin_op(Greater, BinaryOpKind::Greater, parse_comparison); + test_literal_bin_op(Greater, parse_comparison); } #[test] fn greater_equal() { - test_literal_bin_op(GreaterEqual, BinaryOpKind::GreaterEqual, parse_comparison); + test_literal_bin_op(GreaterEqual, parse_comparison); } #[test] fn less() { - test_literal_bin_op(Less, BinaryOpKind::Less, parse_comparison); + test_literal_bin_op(Less, parse_comparison); } #[test] fn less_equal() { - test_literal_bin_op(LessEqual, BinaryOpKind::LessEqual, parse_comparison); + test_literal_bin_op(LessEqual, parse_comparison); } } @@ -669,12 +438,12 @@ mod term { #[test] fn add() { - test_literal_bin_op(Plus, BinaryOpKind::Add, parse_term); + test_literal_bin_op(Plus, parse_term); } #[test] fn sub() { - test_literal_bin_op(Minus, BinaryOpKind::Sub, parse_term); + test_literal_bin_op(Minus, parse_term); } } @@ -693,23 +462,22 @@ mod factor { #[test] fn multiply() { - test_literal_bin_op(Asterisk, BinaryOpKind::Mul, parse_factor); + test_literal_bin_op(Asterisk, parse_factor); } #[test] fn divide() { - test_literal_bin_op(Slash, BinaryOpKind::Div, parse_factor); + test_literal_bin_op(Slash, parse_factor); } #[test] fn modulo() { - test_literal_bin_op(Percent, BinaryOpKind::Mod, parse_factor); + test_literal_bin_op(Percent, parse_factor); } } mod unary { use super::prelude::*; - use crate::ast::{UnaryOp, UnaryOpKind}; fn parse_unary(tokens: Vec) -> Expr { let mut parser = parser(tokens); @@ -721,34 +489,18 @@ mod unary { test_number_literal(parse_unary); } - // needs expr support - #[test] fn not() { let tokens = [Not, True].map(token).into(); - let unary = parse_unary(tokens); - assert_eq!( - Expr::UnaryOp(Box::new(UnaryOp { - span: Span::dummy(), - expr: Expr::Literal(Literal::Boolean(true, Span::dummy())), - kind: UnaryOpKind::Not - })), - unary - ); + let ast = parse_unary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn neg() { let tokens = [Minus, Number(10.0)].map(token).into(); - let unary = parse_unary(tokens); - assert_eq!( - Expr::UnaryOp(Box::new(UnaryOp { - span: Span::dummy(), - expr: num_lit(10.0), - kind: UnaryOpKind::Neg - })), - unary - ); + let ast = parse_unary(tokens); + insta::assert_debug_snapshot!(ast); } } @@ -763,29 +515,15 @@ mod call { #[test] fn field_simple() { let tokens = [Ident("hugo"), Dot, Ident("name")].map(token).into(); - let literal = parse_call(tokens); - assert_eq!( - Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("hugo")), - span: Default::default(), - kind: CallKind::Field(ident("name")) - })), - literal - ); + let ast = parse_call(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn simple() { let tokens = [Ident("print"), ParenO, ParenC].map(token).into(); - let literal = parse_call(tokens); - assert_eq!( - Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("print")), - span: Default::default(), - kind: CallKind::Fn(Vec::new()) - })), - literal - ); + let ast = parse_call(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -801,15 +539,8 @@ mod call { ] .map(token) .into(); - let literal = parse_call(tokens); - assert_eq!( - Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("print")), - span: Default::default(), - kind: CallKind::Fn(vec![num_lit(10.0), num_lit(5.0)]) - })), - literal - ); + let ast = parse_call(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -825,23 +556,8 @@ mod call { ] .map(token) .into(); - let literal = parse_call(tokens); - assert_eq!( - Expr::Call(Box::new(Call { - callee: Expr::Call(Box::new(Call { - callee: Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("hugo")), - span: Default::default(), - kind: CallKind::Field(ident("name")) - })), - span: Default::default(), - kind: CallKind::Field(ident("print")) - })), - span: Default::default(), - kind: CallKind::Fn(vec![]) - })), - literal - ); + let ast = parse_call(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -863,28 +579,8 @@ mod call { ] .map(token) .into(); - let literal = parse_call(tokens); - assert_eq!( - Expr::Call(Box::new(Call { - callee: Expr::Ident(ident("print")), - span: Default::default(), - kind: CallKind::Fn(vec![Expr::Call(Box::new(Call { - callee: Expr::Call(Box::new(Call { - callee: Expr::BinaryOp(Box::new(BinaryOp { - span: Default::default(), - lhs: num_lit(10.0), - rhs: num_lit(5.0), - kind: BinaryOpKind::Add - })), - span: Default::default(), - kind: CallKind::Field(ident("abs")) - })), - span: Default::default(), - kind: CallKind::Fn(vec![]) - })),]) - })), - literal - ); + let ast = parse_call(tokens); + insta::assert_debug_snapshot!(ast); } } @@ -899,99 +595,78 @@ mod primary { #[test] fn ident_test() { let tokens = [Ident("tokens")].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!(Expr::Ident(ident("tokens")), literal); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn string() { let tokens = [Number(10.0)].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!(num_lit(10.0), literal); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn number() { let tokens = [String("uwu".to_string())].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::String("uwu".to_string(), Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn empty_object() { let tokens = [BraceO, BraceC].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!(Expr::Literal(Literal::Object(Span::dummy())), literal); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn empty_array() { let tokens = [BracketO, BracketC].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array(Vec::new(), Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn r#false() { let tokens = [False].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Boolean(false, Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn r#true() { let tokens = [True].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Boolean(true, Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn null() { let tokens = [Null].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!(Expr::Literal(Literal::Null(Span::dummy())), literal); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn empty_array_literal() { let tokens = [BracketO, BracketC].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array(Vec::new(), Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn single_array_literal() { let tokens = [BracketO, Number(10.0), BracketC].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array(vec![num_lit(10.0)], Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] fn single_array_literal_trailing_comma() { let tokens = [BracketO, Number(10.0), Comma, BracketC].map(token).into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array(vec![num_lit(10.0)], Span::dummy())), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -999,14 +674,8 @@ mod primary { let tokens = [BracketO, Number(10.0), Comma, Number(10.0), BracketC] .map(token) .into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array( - vec![num_lit(10.0), num_lit(10.0)], - Span::dummy() - )), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test] @@ -1014,14 +683,8 @@ mod primary { let tokens = [BracketO, Number(10.0), Comma, Number(10.0), Comma, BracketC] .map(token) .into(); - let literal = parse_primary(tokens); - assert_eq!( - Expr::Literal(Literal::Array( - vec![num_lit(10.0), num_lit(10.0)], - Span::dummy() - )), - literal - ); + let ast = parse_primary(tokens); + insta::assert_debug_snapshot!(ast); } #[test]