Remove 'document' wrapper node

This commit is contained in:
Max Brunsfeld 2015-08-22 10:48:34 -07:00
parent 6933d7b425
commit 21258e6a9e
23 changed files with 165 additions and 136 deletions

View file

@ -76,11 +76,10 @@ describe("Parser", [&]() {
set_text(" [123, @@@@@, true]");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (array (number) (ERROR (UNEXPECTED '@')) (true)))"));
"(array (number) (ERROR (UNEXPECTED '@')) (true))"));
TSNode array = ts_node_child(root, 0);
TSNode error = ts_node_child(array, 1);
TSNode last = ts_node_child(array, 2);
TSNode error = ts_node_child(root, 1);
TSNode last = ts_node_child(root, 2);
AssertThat(ts_node_name(error, doc), Equals("ERROR"));
AssertThat(ts_node_pos(error).bytes, Equals(strlen(" [123, ")))
@ -96,11 +95,10 @@ describe("Parser", [&]() {
set_text(" [123, faaaaalse, true]");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (array (number) (ERROR (UNEXPECTED 'a')) (true)))"));
"(array (number) (ERROR (UNEXPECTED 'a')) (true))"));
TSNode array = ts_node_child(root, 0);
TSNode error = ts_node_child(array, 1);
TSNode last = ts_node_child(array, 2);
TSNode error = ts_node_child(root, 1);
TSNode last = ts_node_child(root, 2);
AssertThat(ts_node_name(error, doc), Equals("ERROR"));
AssertThat(ts_node_pos(error).bytes, Equals(strlen(" [123, ")))
@ -116,11 +114,10 @@ describe("Parser", [&]() {
set_text(" [123, true false, true]");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (array (number) (ERROR (true) (UNEXPECTED 'f') (false)) (true)))"));
"(array (number) (ERROR (true) (UNEXPECTED 'f') (false)) (true))"));
TSNode array = ts_node_child(root, 0);
TSNode error = ts_node_child(array, 1);
TSNode last = ts_node_child(array, 2);
TSNode error = ts_node_child(root, 1);
TSNode last = ts_node_child(root, 2);
AssertThat(ts_node_name(error, doc), Equals("ERROR"));
AssertThat(ts_node_pos(error).bytes, Equals(strlen(" [123, ")));
@ -136,11 +133,10 @@ describe("Parser", [&]() {
set_text(" [123, , true]");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (array (number) (ERROR (UNEXPECTED ',')) (true)))"));
"(array (number) (ERROR (UNEXPECTED ',')) (true))"));
TSNode array = ts_node_child(root, 0);
TSNode error = ts_node_child(array, 1);
TSNode last = ts_node_child(array, 2);
TSNode error = ts_node_child(root, 1);
TSNode last = ts_node_child(root, 2);
AssertThat(ts_node_name(error, doc), Equals("ERROR"));
AssertThat(ts_node_pos(error).bytes, Equals(strlen(" [123, ")));
@ -164,7 +160,7 @@ describe("Parser", [&]() {
set_text("fn()\n");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (expression_statement (function_call (identifier))))"));
"(expression_statement (function_call (identifier)))"));
});
});
@ -175,9 +171,8 @@ describe("Parser", [&]() {
" .otherFn();");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT "
"(expression_statement (function_call "
"(member_access (function_call (identifier)) (identifier)))))"));
"(expression_statement (function_call "
"(member_access (function_call (identifier)) (identifier))))"));
});
});
@ -190,11 +185,10 @@ describe("Parser", [&]() {
".otherFn();");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT "
"(expression_statement (function_call "
"(member_access (function_call (identifier)) "
"(comment) "
"(identifier)))))"));
"(expression_statement (function_call "
"(member_access (function_call (identifier)) "
"(comment) "
"(identifier))))"));
});
});
});
@ -210,18 +204,18 @@ describe("Parser", [&]() {
set_text("x ^ (100 + abc)");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (exponent "
"(exponent "
"(variable) "
"(group (sum (number) (variable)))))"));
"(group (sum (number) (variable))))"));
insert_text(strlen("x ^ (100 + abc"), " * 5");
});
it("updates the parse tree", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (exponent "
"(exponent "
"(variable) "
"(group (sum (number) (product (variable) (number))))))"));
"(group (sum (number) (product (variable) (number)))))"));
});
it("re-reads only the changed portion of the input", [&]() {
@ -236,20 +230,20 @@ describe("Parser", [&]() {
set_text("123 * 456 ^ (10 + x)");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product "
"(product "
"(number) "
"(exponent (number) (group (sum (number) (variable))))))"));
"(exponent (number) (group (sum (number) (variable)))))"));
insert_text(strlen("123"), " + 5");
});
it("updates the parse tree", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (sum "
"(sum "
"(number) "
"(product "
"(number) "
"(exponent (number) (group (sum (number) (variable)))))))"));
"(exponent (number) (group (sum (number) (variable))))))"));
});
it("re-reads only the changed portion of the input", [&]() {
@ -264,19 +258,19 @@ describe("Parser", [&]() {
set_text("var x = y;");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (var_declaration (var_assignment "
"(identifier) (identifier))))"));
"(var_declaration (var_assignment "
"(identifier) (identifier)))"));
insert_text(strlen("var x = y"), " *");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (var_declaration (ERROR (identifier) (identifier) (UNEXPECTED ';'))))"));
"(var_declaration (ERROR (identifier) (identifier) (UNEXPECTED ';')))"));
insert_text(strlen("var x = y *"), " z");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (var_declaration (var_assignment "
"(identifier) (math_op (identifier) (identifier)))))"));
"(var_declaration (var_assignment "
"(identifier) (math_op (identifier) (identifier))))"));
});
});
@ -285,14 +279,14 @@ describe("Parser", [&]() {
set_text("abc * 123");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (variable) (number)))"));
"(product (variable) (number))"));
insert_text(strlen("ab"), "XYZ");
});
it("updates the parse tree", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (variable) (number)))"));
"(product (variable) (number))"));
TSNode node = ts_node_find_for_pos(root, 1);
AssertThat(ts_node_name(node, doc), Equals("variable"));
@ -305,14 +299,14 @@ describe("Parser", [&]() {
set_text("abc * 123");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (variable) (number)))"));
"(product (variable) (number))"));
insert_text(strlen("abc"), "XYZ");
});
it("updates the parse tree", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (variable) (number)))"));
"(product (variable) (number))"));
TSNode node = ts_node_find_for_pos(root, 1);
AssertThat(ts_node_name(node, doc), Equals("variable"));
@ -326,7 +320,7 @@ describe("Parser", [&]() {
set_text("\u03b1\u03b2\u03b4 + 1");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (sum (variable) (number)))"));
"(sum (variable) (number))"));
// αβδ + ψ1
insert_text(strlen("abd + "), "\u03c8");
@ -334,7 +328,7 @@ describe("Parser", [&]() {
it("inserts the text according to the UTF8 character index", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (sum (variable) (variable)))"));
"(sum (variable) (variable))"));
});
});
@ -345,7 +339,7 @@ describe("Parser", [&]() {
"abc");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (number) (comment) (variable)))"));
"(product (number) (comment) (variable))"));
insert_text(
strlen("123 *\n"
@ -356,7 +350,7 @@ describe("Parser", [&]() {
it("updates the parse tree", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (number) (comment) (variable)))"));
"(product (number) (comment) (variable))"));
});
});
});
@ -367,14 +361,14 @@ describe("Parser", [&]() {
set_text("123 * 456");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (product (number) (number)))"));
"(product (number) (number))"));
delete_text(strlen("123 "), 2);
});
it("updates the parse tree, creating an error", [&]() {
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (number) (ERROR (UNEXPECTED '4') (number)))"));
"(ERROR (number) (UNEXPECTED '4') (number))"));
});
});
});
@ -386,14 +380,14 @@ describe("Parser", [&]() {
set_text("{ x: (b.c) };");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (expression_statement (object (pair "
"(identifier) (expression (member_access (identifier) (identifier)))))))"));
"(expression_statement (object (pair "
"(identifier) (expression (member_access (identifier) (identifier))))))"));
replace_text(strlen("{ x: "), strlen("(b.c)"), "b.c");
AssertThat(ts_node_string(root, doc), Equals(
"(DOCUMENT (expression_statement (object (pair "
"(identifier) (member_access (identifier) (identifier))))))"));
"(expression_statement (object (pair "
"(identifier) (member_access (identifier) (identifier)))))"));
});
});
});
@ -407,11 +401,10 @@ describe("Parser", [&]() {
it("terminates them at the end of the document", [&]() {
set_text("x # this is a comment");
AssertThat(ts_node_string(root, doc), Equals("(DOCUMENT "
"(expression (variable) (comment)))"));
AssertThat(ts_node_string(root, doc), Equals(
"(expression (variable) (comment))"));
TSNode expression = ts_node_child(root, 0);
TSNode comment = ts_node_child(expression, 1);
TSNode comment = ts_node_child(root, 1);
AssertThat(ts_node_size(comment).bytes, Equals(strlen("# this is a comment")));
});
@ -421,8 +414,8 @@ describe("Parser", [&]() {
// x # ΩΩΩ — ΔΔ
set_text("x # \u03A9\u03A9\u03A9 \u2014 \u0394\u0394");
AssertThat(ts_node_string(root, doc), Equals("(DOCUMENT "
"(expression (variable) (comment)))"));
AssertThat(ts_node_string(root, doc), Equals(
"(expression (variable) (comment))"));
AssertThat(ts_node_size(root).chars, Equals(strlen("x # OOO - DD")));
AssertThat(ts_node_size(root).bytes, Equals(strlen("x # \u03A9\u03A9\u03A9 \u2014 \u0394\u0394")));