diff --git a/src/arkreactor/Compiler/AST/Parser.cpp b/src/arkreactor/Compiler/AST/Parser.cpp index d1702431..3cacbc7d 100644 --- a/src/arkreactor/Compiler/AST/Parser.cpp +++ b/src/arkreactor/Compiler/AST/Parser.cpp @@ -360,7 +360,7 @@ namespace Ark::internal { std::string symbol; if (!name(&symbol)) - errorWithNextToken(fmt::format("Expected a valid symbol to import, not `{}'", symbol)); + errorWithNextToken("Expected a valid symbol to import"); if (symbol == "*") error(fmt::format("Glob patterns can not be separated from the package, use (import {}:*) instead", import_data.toPackageString()), symbol); @@ -582,7 +582,7 @@ namespace Ark::internal if (auto value_if_true = nodeOrValue(); value_if_true.has_value()) leaf->push_back(value_if_true.value().attachNearestCommentBefore(comment)); else - errorWithNextToken("Expected a value"); + errorWithNextToken("Expected a node or value after condition"); comment.clear(); newlineOrComment(&comment); diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.ark new file mode 100644 index 00000000..55e1a4b0 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.ark @@ -0,0 +1 @@ +(import a :*) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.expected new file mode 100644 index 00000000..d5f10461 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/bad_glob_import.expected @@ -0,0 +1,5 @@ +At ) @ 1:13 + 1 | (import a :*) + | ^~~~~~~~~~~~~ + 2 | + Glob patterns can not be separated from the package, use (import a:*) instead diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.ark new file mode 100644 index 00000000..ec2576e6 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.ark @@ -0,0 +1 @@ +($ foo) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.expected new file mode 100644 index 00000000..80965e09 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/incomplete_macro.expected @@ -0,0 +1,5 @@ +At ) @ 1:7 + 1 | ($ foo) + | ^ + 2 | + Expected an argument list, atom or node while defining macro `foo' diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.ark new file mode 100644 index 00000000..2167bdc0 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.ark @@ -0,0 +1 @@ +(import a :123) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.expected new file mode 100644 index 00000000..bc65ec43 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/invalid_import_symbol.expected @@ -0,0 +1,5 @@ +At 1 @ 1:12 + 1 | (import a :123) + | ^~~ + 2 | + Expected a valid symbol to import diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.ark new file mode 100644 index 00000000..92900e7a --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.ark @@ -0,0 +1 @@ +($if) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.expected new file mode 100644 index 00000000..39208292 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_cond_if_macro.expected @@ -0,0 +1,5 @@ +At ) @ 1:5 + 1 | ($if) + | ^ + 2 | + $if need a valid condition diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.ark new file mode 100644 index 00000000..0c42accd --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.ark @@ -0,0 +1 @@ +(fun ()) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.expected new file mode 100644 index 00000000..6b3a136d --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_function_body.expected @@ -0,0 +1,5 @@ +At ) @ 1:8 + 1 | (fun ()) + | ^ + 2 | + Expected a body for the function diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.ark new file mode 100644 index 00000000..e9c90515 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.ark @@ -0,0 +1 @@ +($if true) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.expected new file mode 100644 index 00000000..7a235922 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/missing_then_if_macro.expected @@ -0,0 +1,5 @@ +At ) @ 1:10 + 1 | ($if true) + | ^ + 2 | + Expected a node or value after condition diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.ark b/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.ark new file mode 100644 index 00000000..3c0711b8 --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.ark @@ -0,0 +1 @@ +($ foo (bar bar egg) ()) diff --git a/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.expected b/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.expected new file mode 100644 index 00000000..8339d0bf --- /dev/null +++ b/tests/unittests/resources/DiagnosticsSuite/compileTime/reused_macro_arg.expected @@ -0,0 +1,5 @@ +At b @ 1:13 + 1 | ($ foo (bar bar egg) ()) + | ^~~ + 2 | + Argument names must be unique, can not reuse `bar'