Avoid including trailing extra tokens within error nodes unnecessarily

This commit is contained in:
Max Brunsfeld 2017-02-19 13:53:28 -08:00
parent 135d8ef4e0
commit c14a776a3d
5 changed files with 42 additions and 0 deletions

View file

@ -4,6 +4,7 @@
#include "helpers/spy_input.h"
#include "helpers/load_language.h"
#include "helpers/record_alloc.h"
#include "helpers/point_helpers.h"
#include "helpers/stderr_logger.h"
#include "helpers/dedent.h"
@ -168,6 +169,24 @@ describe("Parser", [&]() {
"(ERROR (program (expression_statement (identifier))) (UNEXPECTED EOF))");
});
});
describe("when there are extra tokens at the end of the viable prefix", [&]() {
it("does not include them in the error node", [&]() {
ts_document_set_language(document, get_test_language("javascript"));
set_text(
"var x;\n"
"\n"
"if\n"
"\n"
"var y;"
);
TSNode error = ts_node_named_child(root, 1);
AssertThat(ts_node_type(error, document), Equals("ERROR"));
AssertThat(ts_node_start_point(error), Equals<TSPoint>({2, 0}));
AssertThat(ts_node_end_point(error), Equals<TSPoint>({2, 2}));
});
});
});
describe("handling extra tokens", [&]() {