Skip to content

Commit

Permalink
feat(parser, tests): improving diagnostics and tests for incomplete m…
Browse files Browse the repository at this point in the history
…acros, macro condition, and imports
  • Loading branch information
SuperFola committed Oct 27, 2024
1 parent 8e1fefa commit 2100bf6
Show file tree
Hide file tree
Showing 15 changed files with 44 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/arkreactor/Compiler/AST/Parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(import a :*)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At ) @ 1:13
1 | (import a :*)
| ^~~~~~~~~~~~~
2 |
Glob patterns can not be separated from the package, use (import a:*) instead
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
($ foo)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At ) @ 1:7
1 | ($ foo)
| ^
2 |
Expected an argument list, atom or node while defining macro `foo'
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(import a :123)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At 1 @ 1:12
1 | (import a :123)
| ^~~
2 |
Expected a valid symbol to import
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
($if)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At ) @ 1:5
1 | ($if)
| ^
2 |
$if need a valid condition
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(fun ())
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At ) @ 1:8
1 | (fun ())
| ^
2 |
Expected a body for the function
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
($if true)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At ) @ 1:10
1 | ($if true)
| ^
2 |
Expected a node or value after condition
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
($ foo (bar bar egg) ())
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
At b @ 1:13
1 | ($ foo (bar bar egg) ())
| ^~~
2 |
Argument names must be unique, can not reuse `bar'

0 comments on commit 2100bf6

Please sign in to comment.