diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-2.snap b/src/parse/snapshots/dilaria__parse__test__comparison__greater.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-2.snap rename to src/parse/snapshots/dilaria__parse__test__comparison__greater.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op.snap b/src/parse/snapshots/dilaria__parse__test__comparison__greater_equal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op.snap rename to src/parse/snapshots/dilaria__parse__test__comparison__greater_equal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-4.snap b/src/parse/snapshots/dilaria__parse__test__comparison__less.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-4.snap rename to src/parse/snapshots/dilaria__parse__test__comparison__less.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-3.snap b/src/parse/snapshots/dilaria__parse__test__comparison__less_equal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-3.snap rename to src/parse/snapshots/dilaria__parse__test__comparison__less_equal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-2.snap b/src/parse/snapshots/dilaria__parse__test__comparison__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-2.snap rename to src/parse/snapshots/dilaria__parse__test__comparison__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-5.snap b/src/parse/snapshots/dilaria__parse__test__equality__equal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-5.snap rename to src/parse/snapshots/dilaria__parse__test__equality__equal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-6.snap b/src/parse/snapshots/dilaria__parse__test__equality__not_equal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-6.snap rename to src/parse/snapshots/dilaria__parse__test__equality__not_equal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-3.snap b/src/parse/snapshots/dilaria__parse__test__equality__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-3.snap rename to src/parse/snapshots/dilaria__parse__test__equality__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-4.snap b/src/parse/snapshots/dilaria__parse__test__expr__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-4.snap rename to src/parse/snapshots/dilaria__parse__test__expr__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-9.snap b/src/parse/snapshots/dilaria__parse__test__factor__divide.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-9.snap rename to src/parse/snapshots/dilaria__parse__test__factor__divide.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-7.snap b/src/parse/snapshots/dilaria__parse__test__factor__modulo.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-7.snap rename to src/parse/snapshots/dilaria__parse__test__factor__modulo.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-10.snap b/src/parse/snapshots/dilaria__parse__test__factor__multiply.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-10.snap rename to src/parse/snapshots/dilaria__parse__test__factor__multiply.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-5.snap b/src/parse/snapshots/dilaria__parse__test__factor__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-5.snap rename to src/parse/snapshots/dilaria__parse__test__factor__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-8.snap b/src/parse/snapshots/dilaria__parse__test__logical_and__and.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-8.snap rename to src/parse/snapshots/dilaria__parse__test__logical_and__and.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-6.snap b/src/parse/snapshots/dilaria__parse__test__logical_and__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-6.snap rename to src/parse/snapshots/dilaria__parse__test__logical_and__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-7.snap b/src/parse/snapshots/dilaria__parse__test__logical_or__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-7.snap rename to src/parse/snapshots/dilaria__parse__test__logical_or__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-11.snap b/src/parse/snapshots/dilaria__parse__test__logical_or__or.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-11.snap rename to src/parse/snapshots/dilaria__parse__test__logical_or__or.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-12.snap b/src/parse/snapshots/dilaria__parse__test__term__add.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-12.snap rename to src/parse/snapshots/dilaria__parse__test__term__add.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal-8.snap b/src/parse/snapshots/dilaria__parse__test__term__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal-8.snap rename to src/parse/snapshots/dilaria__parse__test__term__number_literal.snap diff --git a/src/parse/snapshots/dilaria__parse__test__literal_bin_op-13.snap b/src/parse/snapshots/dilaria__parse__test__term__sub.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__literal_bin_op-13.snap rename to src/parse/snapshots/dilaria__parse__test__term__sub.snap diff --git a/src/parse/snapshots/dilaria__parse__test__number_literal.snap b/src/parse/snapshots/dilaria__parse__test__unary__number_literal.snap similarity index 100% rename from src/parse/snapshots/dilaria__parse__test__number_literal.snap rename to src/parse/snapshots/dilaria__parse__test__unary__number_literal.snap diff --git a/src/parse/test.rs b/src/parse/test.rs index a1b90c8..ac39495 100644 --- a/src/parse/test.rs +++ b/src/parse/test.rs @@ -42,21 +42,28 @@ where { } } -fn test_literal_bin_op, &Bump) -> Expr>(token_type: TokenType, parser: F) { - let tokens = [Number(10.0), token_type, Number(4.0)].map(token).into(); +//fn test_literal_bin_op, &Bump) -> Expr>(token_type: TokenType, parser: F) { +macro_rules! test_literal_bin_op { + ($token_type:expr, $parser:expr) => { + let tokens = [Number(10.0), $token_type, Number(4.0)].map(token).into(); - let alloc = Bump::new(); - let ast = parser(tokens, &alloc); - insta::assert_debug_snapshot!(ast); + let alloc = Bump::new(); + let ast = ($parser)(tokens, &alloc); + insta::assert_debug_snapshot!(ast); + }; } +use test_literal_bin_op; -fn test_number_literal, &Bump) -> Expr>(parser: F) { - let tokens = [Number(10.0)].map(token).into(); +macro_rules! test_number_literal { + ($parser:expr) => { + let tokens = [Number(10.0)].map(token).into(); - let alloc = Bump::new(); - let ast = parser(tokens, &alloc); - insta::assert_debug_snapshot!(ast); + let alloc = Bump::new(); + let ast = ($parser)(tokens, &alloc); + insta::assert_debug_snapshot!(ast); + }; } +use test_number_literal; mod assignment { use bumpalo::Bump; @@ -343,7 +350,7 @@ mod expr { #[test] fn number_literal() { - test_number_literal(parse_expr); + test_number_literal!(parse_expr); } #[test] @@ -395,12 +402,12 @@ mod logical_or { #[test] fn number_literal() { - test_number_literal(parse_logical_or); + test_number_literal!(parse_logical_or); } #[test] fn or() { - test_literal_bin_op(Or, parse_logical_or); + test_literal_bin_op!(Or, parse_logical_or); } } @@ -414,12 +421,12 @@ mod logical_and { #[test] fn number_literal() { - test_number_literal(parse_logical_and); + test_number_literal!(parse_logical_and); } #[test] fn and() { - test_literal_bin_op(And, parse_logical_and); + test_literal_bin_op!(And, parse_logical_and); } } @@ -433,17 +440,17 @@ mod equality { #[test] fn number_literal() { - test_number_literal(parse_equality); + test_number_literal!(parse_equality); } #[test] fn not_equal() { - test_literal_bin_op(BangEqual, parse_equality); + test_literal_bin_op!(BangEqual, parse_equality); } #[test] fn equal() { - test_literal_bin_op(EqualEqual, parse_equality); + test_literal_bin_op!(EqualEqual, parse_equality); } } @@ -457,27 +464,27 @@ mod comparison { #[test] fn number_literal() { - test_number_literal(parse_comparison); + test_number_literal!(parse_comparison); } #[test] fn greater() { - test_literal_bin_op(Greater, parse_comparison); + test_literal_bin_op!(Greater, parse_comparison); } #[test] fn greater_equal() { - test_literal_bin_op(GreaterEqual, parse_comparison); + test_literal_bin_op!(GreaterEqual, parse_comparison); } #[test] fn less() { - test_literal_bin_op(Less, parse_comparison); + test_literal_bin_op!(Less, parse_comparison); } #[test] fn less_equal() { - test_literal_bin_op(LessEqual, parse_comparison); + test_literal_bin_op!(LessEqual, parse_comparison); } } @@ -491,17 +498,17 @@ mod term { #[test] fn number_literal() { - test_number_literal(parse_term); + test_number_literal!(parse_term); } #[test] fn add() { - test_literal_bin_op(Plus, parse_term); + test_literal_bin_op!(Plus, parse_term); } #[test] fn sub() { - test_literal_bin_op(Minus, parse_term); + test_literal_bin_op!(Minus, parse_term); } } @@ -515,22 +522,22 @@ mod factor { #[test] fn number_literal() { - test_number_literal(parse_factor); + test_number_literal!(parse_factor); } #[test] fn multiply() { - test_literal_bin_op(Asterisk, parse_factor); + test_literal_bin_op!(Asterisk, parse_factor); } #[test] fn divide() { - test_literal_bin_op(Slash, parse_factor); + test_literal_bin_op!(Slash, parse_factor); } #[test] fn modulo() { - test_literal_bin_op(Percent, parse_factor); + test_literal_bin_op!(Percent, parse_factor); } } @@ -544,7 +551,7 @@ mod unary { #[test] fn number_literal() { - test_number_literal(parse_unary); + test_number_literal!(parse_unary); } #[test] diff --git a/tests/functions.rs b/tests/functions.rs index 0cae71a..cc23c3a 100644 --- a/tests/functions.rs +++ b/tests/functions.rs @@ -23,3 +23,21 @@ test(); print "correct2"; "# ); + +run_test!( + multiple_calls, + r#" +fn test1() { + print "correct1"; +} + +fn test2() { + print "correct2"; +} + +test1(); +test2(); + +print "correct3"; +"# +); diff --git a/tests/snapshots/functions__multiple_calls.snap b/tests/snapshots/functions__multiple_calls.snap new file mode 100644 index 0000000..5299895 --- /dev/null +++ b/tests/snapshots/functions__multiple_calls.snap @@ -0,0 +1,5 @@ +--- +source: tests/functions.rs +expression: output +--- +"correct1\ncorrect2\ncorrect3\n"