From aeab306921dfe9af4b444a77bd46d1700e43dd88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Tue, 9 Feb 2021 00:30:30 +0100 Subject: fancy call syntax --- src/lib.rs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ae45c45..96ed6fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1045,6 +1045,14 @@ a.a -= 1 a.a <=> 0" ); + test_multiple!( + fancy_call, + not: "f := fn {}\n f!\n", + one_arg: "f := fn a:int { a <=> 1 }\n f! 1\n", + two_arg: "f := fn a:int, b:int { b <=> 3 }\n f! 1, 1 + 2\n", + three_arg: "f := fn a:int, b:int, c:int { c <=> 13 }\n f! 1, 1 + 2, 1 + 4 * 3\n", + ); + test_multiple!( newline_regression, simple: "a := 1 // blargh \na += 1 // blargh \n a <=> 2 // HARGH", -- cgit v1.2.1 From 9596dadf3ad99aefec2547f4f8294d772811d8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Wed, 10 Feb 2021 22:12:41 +0100 Subject: add regression tests --- src/lib.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ae45c45..d8d9505 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1050,4 +1050,33 @@ a.a <=> 0" simple: "a := 1 // blargh \na += 1 // blargh \n a <=> 2 // HARGH", expressions: "1 + 1 // blargh \n 2 // blargh \n // HARGH \n", ); + + test_multiple!( + assignment_op_regression, + simple_add: " +a := 0 +b := 99999 +a += 1 +a <=> 1 +", + + simple_sub: " +a := 0 +b := 99999 +a -= 1 +a <=> -1 +", + + strange: " +a := 0 +{ + b := 99999 + { + a := 99999 + } + a -= 1 +} +a <=> -1 +", + ); } -- cgit v1.2.1 From 9bd53d666c32d93b6a81a05c15025fd41bd056ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Wed, 10 Feb 2021 23:05:45 +0100 Subject: add tests for constants --- src/lib.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index ae45c45..cd84776 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -805,6 +805,16 @@ mod tests { assert_errs!(run_string("\n", true, Vec::new()), [ErrorKind::Unreachable]); } + #[test] + fn assign_to_constant() { + assert_errs!(run_string("a :: 2\na = 2", true, Vec::new()), [ErrorKind::SyntaxError(_, _)]); + } + + #[test] + fn assign_to_constant_upvalue() { + assert_errs!(run_string("a :: 2\nq :: fn { a = 2 }\n", true, Vec::new()), [ErrorKind::SyntaxError(_, _)]); + } + macro_rules! test_multiple { ($mod:ident, $( $fn:ident : $prog:literal ),+ $( , )? ) => { mod $mod { @@ -848,7 +858,7 @@ mod tests { test_multiple!( if_, compare_constants_equality: "if 1 == 2 { - + }", compare_constants_unequality: "if 1 != 1 { @@ -1050,4 +1060,16 @@ a.a <=> 0" simple: "a := 1 // blargh \na += 1 // blargh \n a <=> 2 // HARGH", expressions: "1 + 1 // blargh \n 2 // blargh \n // HARGH \n", ); + + test_multiple!( + read_constants, + simple: " +a :: 1 +a <=> 1 +b := 2 +{ + a <=> 1 +} +", + ); } -- cgit v1.2.1 From 089d018fdc5a76508aba27292ba379d5691cbc3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edvard=20Th=C3=B6rnros?= Date: Thu, 11 Feb 2021 18:15:47 +0100 Subject: fix feedback from codereview --- src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index cd84776..3f753f1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -858,7 +858,7 @@ mod tests { test_multiple!( if_, compare_constants_equality: "if 1 == 2 { - + }", compare_constants_unequality: "if 1 != 1 { -- cgit v1.2.1