Don't automatically hide singleton nodes
This commit is contained in:
parent
acf9280eda
commit
53926c467e
21 changed files with 4284 additions and 4221 deletions
|
|
@ -85,7 +85,7 @@ describe("Document", [&]() {
|
|||
|
||||
AssertThat(debugger->messages, Contains("new_parse"));
|
||||
AssertThat(debugger->messages, Contains("lookahead char:'['"));
|
||||
AssertThat(debugger->messages, Contains("reduce sym:value, count:1"));
|
||||
AssertThat(debugger->messages, Contains("reduce sym:array, count:4"));
|
||||
AssertThat(debugger->messages, Contains("accept"));
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ x + (y * + z) * 5
|
|||
|
||||
---
|
||||
|
||||
(sum
|
||||
(program (sum
|
||||
(variable)
|
||||
(product
|
||||
(group (ERROR (variable) (UNEXPECTED '+') (variable))) (number)))
|
||||
(group (ERROR (variable) (UNEXPECTED '+') (variable))) (number))))
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ numbers
|
|||
|
||||
---
|
||||
|
||||
(number)
|
||||
(program (number))
|
||||
|
||||
===================
|
||||
variables
|
||||
|
|
@ -16,7 +16,7 @@ x
|
|||
|
||||
---
|
||||
|
||||
(variable)
|
||||
(program (variable))
|
||||
|
||||
====================================
|
||||
variables with greek letters
|
||||
|
|
@ -26,7 +26,7 @@ variables with greek letters
|
|||
|
||||
---
|
||||
|
||||
(variable)
|
||||
(program (variable))
|
||||
|
||||
===================
|
||||
products
|
||||
|
|
@ -36,7 +36,7 @@ x * x
|
|||
|
||||
---
|
||||
|
||||
(product (variable) (variable))
|
||||
(program (product (variable) (variable)))
|
||||
|
||||
===================
|
||||
sums
|
||||
|
|
@ -46,7 +46,7 @@ x + x
|
|||
|
||||
---
|
||||
|
||||
(sum (variable) (variable))
|
||||
(program (sum (variable) (variable)))
|
||||
|
||||
===============================================
|
||||
operators of different precedence
|
||||
|
|
@ -56,9 +56,9 @@ a * b + c * d
|
|||
|
||||
---
|
||||
|
||||
(sum
|
||||
(program (sum
|
||||
(product (variable) (variable))
|
||||
(product (variable) (variable)))
|
||||
(product (variable) (variable))))
|
||||
|
||||
============================
|
||||
exponents
|
||||
|
|
@ -68,10 +68,10 @@ x + y * z^(a + b)
|
|||
|
||||
---
|
||||
|
||||
(sum
|
||||
(program (sum
|
||||
(variable)
|
||||
(product
|
||||
(variable)
|
||||
(exponent
|
||||
(variable)
|
||||
(group (sum (variable) (variable))))))
|
||||
(group (sum (variable) (variable)))))))
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@ int x;
|
|||
|
||||
---
|
||||
|
||||
(declaration (identifier) (identifier))
|
||||
(program
|
||||
(declaration (type_name (identifier)) (declarator (identifier))))
|
||||
|
||||
==========================================
|
||||
simple functions
|
||||
|
|
@ -17,25 +18,27 @@ int main() {
|
|||
|
||||
---
|
||||
|
||||
(function_definition
|
||||
(identifier) (direct_declarator (identifier))
|
||||
(compound_statement))
|
||||
(program (function_definition
|
||||
(type_name (identifier))
|
||||
(declarator (identifier))
|
||||
(compound_statement)))
|
||||
|
||||
==========================================
|
||||
ambiguous declarations
|
||||
==========================================
|
||||
|
||||
int main() {
|
||||
int i;
|
||||
someTypeOrValue * pointerOrMultiplicand();
|
||||
float y;
|
||||
int i;
|
||||
someTypeOrValue * pointerOrMultiplicand();
|
||||
float y;
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(function_definition
|
||||
(identifier) (direct_declarator (identifier))
|
||||
(program (function_definition
|
||||
(type_name (identifier))
|
||||
(declarator (identifier))
|
||||
(compound_statement
|
||||
(declaration (identifier) (identifier))
|
||||
(declaration (identifier) (declarator (pointer) (direct_declarator (identifier))))
|
||||
(declaration (identifier) (identifier))))
|
||||
(declaration (type_name (identifier)) (declarator (identifier)))
|
||||
(declaration (type_name (identifier)) (declarator (pointer) (identifier)))
|
||||
(declaration (type_name (identifier)) (declarator (identifier))))))
|
||||
|
|
|
|||
|
|
@ -48,5 +48,5 @@ func main() {
|
|||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(var_declaration (var_name) (expression (number) (comment)))
|
||||
(var_declaration (var_name) (number) (comment))
|
||||
(func_declaration (var_name) (block_statement (comment))))
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@ package trivial
|
|||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement))
|
||||
(func_declaration (var_name) (block_statement)))
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement))
|
||||
(func_declaration (var_name) (block_statement)))
|
||||
|
|
|
|||
|
|
@ -5,17 +5,17 @@ function calls
|
|||
package main
|
||||
|
||||
func main() {
|
||||
println("1", 2)
|
||||
println()
|
||||
println("1", 2)
|
||||
println()
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(expression_statement (call_expression (var_name) (string) (number)))
|
||||
(expression_statement (call_expression (var_name))))))
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(expression_statement (call_expression (var_name) (string) (number)))
|
||||
(expression_statement (call_expression (var_name))))))
|
||||
|
||||
============================================
|
||||
selector expressions
|
||||
|
|
@ -24,16 +24,15 @@ selector expressions
|
|||
package main
|
||||
|
||||
func main() {
|
||||
x.SomeMethod(x.SomeField, x.OtherField.NestedField);
|
||||
x.SomeMethod(x.SomeField, x.OtherField.NestedField);
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(expression_statement (call_expression
|
||||
(selector_expression (var_name) (var_name))
|
||||
(selector_expression (var_name) (var_name))
|
||||
(selector_expression (selector_expression (var_name) (var_name)) (var_name)))))))
|
||||
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(expression_statement (call_expression
|
||||
(selector_expression (var_name) (var_name))
|
||||
(selector_expression (var_name) (var_name))
|
||||
(selector_expression (selector_expression (var_name) (var_name)) (var_name)))))))
|
||||
|
|
|
|||
|
|
@ -14,10 +14,10 @@ func helper() {
|
|||
---
|
||||
|
||||
(program (package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(return_statement)))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(return_statement (number) (var_name) (string)))))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(return_statement)))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(return_statement (number) (var_name) (string)))))
|
||||
|
||||
============================================
|
||||
variable declarations
|
||||
|
|
@ -34,10 +34,10 @@ func main() {
|
|||
---
|
||||
|
||||
(program (package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(declaration_statement (var_name) (var_name) (call_expression (var_name)))
|
||||
(var_declaration (var_name) (number))
|
||||
(expression_statement (call_expression (var_name) (var_name) (var_name) (var_name))))))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(short_var_declaration (var_name) (var_name) (call_expression (var_name)))
|
||||
(var_declaration (var_name) (number))
|
||||
(expression_statement (call_expression (var_name) (var_name) (var_name) (var_name))))))
|
||||
|
||||
============================================
|
||||
if statements
|
||||
|
|
@ -46,30 +46,30 @@ if statements
|
|||
package main
|
||||
|
||||
func main() {
|
||||
if condition1() {
|
||||
}
|
||||
if condition1() {
|
||||
}
|
||||
|
||||
if condition2() {
|
||||
} else {
|
||||
}
|
||||
if condition2() {
|
||||
} else {
|
||||
}
|
||||
|
||||
if condition3() {
|
||||
} else if condition4() {
|
||||
}
|
||||
if condition3() {
|
||||
} else if condition4() {
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(program (package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(func_declaration (var_name) (block_statement
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement))
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement) (block_statement))
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement)
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement))
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement) (block_statement))
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement)
|
||||
(if_statement (call_expression (var_name))
|
||||
(block_statement))))))
|
||||
(block_statement))))))
|
||||
|
||||
=============================================
|
||||
range statements
|
||||
|
|
@ -90,8 +90,8 @@ func main() {
|
|||
---
|
||||
|
||||
(program (package_directive (package_name))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(range_statement (var_name) (call_expression (var_name)) (block_statement
|
||||
(expression_statement (call_expression (var_name) (var_name)))))
|
||||
(range_statement (var_name) (var_name) (call_expression (var_name)) (block_statement
|
||||
(expression_statement (call_expression (var_name) (var_name) (var_name))))))))
|
||||
(func_declaration (var_name) (block_statement
|
||||
(range_statement (var_name) (call_expression (var_name)) (block_statement
|
||||
(expression_statement (call_expression (var_name) (var_name)))))
|
||||
(range_statement (var_name) (var_name) (call_expression (var_name)) (block_statement
|
||||
(expression_statement (call_expression (var_name) (var_name) (var_name))))))))
|
||||
|
|
|
|||
|
|
@ -5,21 +5,21 @@ composite types
|
|||
package main
|
||||
|
||||
type x *struct {
|
||||
field1 []int64
|
||||
field2 map[string]interface{
|
||||
DoStuff()
|
||||
}
|
||||
field1 []int64
|
||||
field2 map[string]interface{
|
||||
DoStuff()
|
||||
}
|
||||
}
|
||||
|
||||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(type_declaration
|
||||
(type_name)
|
||||
(pointer_type (struct_type
|
||||
(var_name) (slice_type (type_name))
|
||||
(var_name) (map_type (type_name) (interface_type (var_name)))))))
|
||||
(package_directive (package_name))
|
||||
(type_declaration
|
||||
(type_name)
|
||||
(pointer_type (struct_type
|
||||
(var_name) (slice_type (type_name))
|
||||
(var_name) (map_type (type_name) (interface_type (var_name)))))))
|
||||
|
||||
============================================
|
||||
functions arguments
|
||||
|
|
@ -34,10 +34,10 @@ func argsOfDifferentTypes() (arg1 string, arg2 int64) {}
|
|||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (var_name) (interface_type) (block_statement))
|
||||
(func_declaration (var_name) (var_name) (var_name) (type_name) (block_statement))
|
||||
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (block_statement)))
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (var_name) (interface_type) (block_statement))
|
||||
(func_declaration (var_name) (var_name) (var_name) (type_name) (block_statement))
|
||||
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (block_statement)))
|
||||
|
||||
============================================
|
||||
functions with unnamed return values
|
||||
|
|
@ -51,11 +51,11 @@ func multipleReturnValues() (string, int64, error) {}
|
|||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (type_name)
|
||||
(block_statement))
|
||||
(func_declaration (var_name) (type_name) (type_name) (type_name)
|
||||
(block_statement)))
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (type_name)
|
||||
(block_statement))
|
||||
(func_declaration (var_name) (type_name) (type_name) (type_name)
|
||||
(block_statement)))
|
||||
|
||||
============================================
|
||||
functions with named return values
|
||||
|
|
@ -69,9 +69,8 @@ func multipleReturnValues() (result string, count int64, err error) {}
|
|||
---
|
||||
|
||||
(program
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (var_name) (type_name)
|
||||
(block_statement))
|
||||
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (var_name) (type_name)
|
||||
(block_statement)))
|
||||
|
||||
(package_directive (package_name))
|
||||
(func_declaration (var_name) (var_name) (type_name)
|
||||
(block_statement))
|
||||
(func_declaration (var_name) (var_name) (type_name) (var_name) (type_name) (var_name) (type_name)
|
||||
(block_statement)))
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ describe("Parser", [&]() {
|
|||
set_text("fn()\n");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression_statement (function_call (identifier) (arguments)))"));
|
||||
"(program (expression_statement (function_call (identifier) (arguments))))"));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -171,9 +171,9 @@ describe("Parser", [&]() {
|
|||
" .otherFn();");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression_statement (function_call "
|
||||
"(program (expression_statement (function_call "
|
||||
"(member_access (function_call (identifier) (arguments)) (identifier)) "
|
||||
"(arguments)))"));
|
||||
"(arguments))))"));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -186,11 +186,11 @@ describe("Parser", [&]() {
|
|||
".otherFn();");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression_statement (function_call "
|
||||
"(program (expression_statement (function_call "
|
||||
"(member_access (function_call (identifier) (arguments)) "
|
||||
"(comment) "
|
||||
"(identifier)) "
|
||||
"(arguments)))"));
|
||||
"(arguments))))"));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -206,18 +206,18 @@ describe("Parser", [&]() {
|
|||
set_text("x ^ (100 + abc)");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(exponent "
|
||||
"(program (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(
|
||||
"(exponent "
|
||||
"(program (exponent "
|
||||
"(variable) "
|
||||
"(group (sum (number) (product (variable) (number)))))"));
|
||||
"(group (sum (number) (product (variable) (number))))))"));
|
||||
});
|
||||
|
||||
it("re-reads only the changed portion of the input", [&]() {
|
||||
|
|
@ -232,20 +232,20 @@ describe("Parser", [&]() {
|
|||
set_text("123 * 456 ^ (10 + x)");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product "
|
||||
"(program (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(
|
||||
"(sum "
|
||||
"(program (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", [&]() {
|
||||
|
|
@ -260,19 +260,19 @@ describe("Parser", [&]() {
|
|||
set_text("var x = y;");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(var_declaration (var_assignment "
|
||||
"(identifier) (identifier)))"));
|
||||
"(program (var_declaration (var_assignment "
|
||||
"(identifier) (identifier))))"));
|
||||
|
||||
insert_text(strlen("var x = y"), " *");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(var_declaration (ERROR (identifier) (identifier) (UNEXPECTED ';')))"));
|
||||
"(program (var_declaration (ERROR (identifier) (identifier) (UNEXPECTED ';'))))"));
|
||||
|
||||
insert_text(strlen("var x = y *"), " z");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(var_declaration (var_assignment "
|
||||
"(identifier) (math_op (identifier) (identifier))))"));
|
||||
"(program (var_declaration (var_assignment "
|
||||
"(identifier) (math_op (identifier) (identifier)))))"));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -281,14 +281,14 @@ describe("Parser", [&]() {
|
|||
set_text("abc * 123");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (variable) (number))"));
|
||||
"(program (product (variable) (number)))"));
|
||||
|
||||
insert_text(strlen("ab"), "XYZ");
|
||||
});
|
||||
|
||||
it("updates the parse tree", [&]() {
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (variable) (number))"));
|
||||
"(program (product (variable) (number)))"));
|
||||
|
||||
TSNode node = ts_node_find_for_pos(root, 1);
|
||||
AssertThat(ts_node_name(node, doc), Equals("variable"));
|
||||
|
|
@ -301,14 +301,14 @@ describe("Parser", [&]() {
|
|||
set_text("abc * 123");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (variable) (number))"));
|
||||
"(program (product (variable) (number)))"));
|
||||
|
||||
insert_text(strlen("abc"), "XYZ");
|
||||
});
|
||||
|
||||
it("updates the parse tree", [&]() {
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (variable) (number))"));
|
||||
"(program (product (variable) (number)))"));
|
||||
|
||||
TSNode node = ts_node_find_for_pos(root, 1);
|
||||
AssertThat(ts_node_name(node, doc), Equals("variable"));
|
||||
|
|
@ -322,7 +322,7 @@ describe("Parser", [&]() {
|
|||
set_text("\u03b1\u03b2\u03b4 + 1");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(sum (variable) (number))"));
|
||||
"(program (sum (variable) (number)))"));
|
||||
|
||||
// αβδ + ψ1
|
||||
insert_text(strlen("abd + "), "\u03c8");
|
||||
|
|
@ -330,7 +330,7 @@ describe("Parser", [&]() {
|
|||
|
||||
it("inserts the text according to the UTF8 character index", [&]() {
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(sum (variable) (variable))"));
|
||||
"(program (sum (variable) (variable)))"));
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ describe("Parser", [&]() {
|
|||
"abc");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (number) (comment) (variable))"));
|
||||
"(program (product (number) (comment) (variable)))"));
|
||||
|
||||
insert_text(
|
||||
strlen("123 *\n"
|
||||
|
|
@ -352,7 +352,7 @@ describe("Parser", [&]() {
|
|||
|
||||
it("updates the parse tree", [&]() {
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (number) (comment) (variable))"));
|
||||
"(program (product (number) (comment) (variable)))"));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -363,7 +363,7 @@ describe("Parser", [&]() {
|
|||
set_text("123 * 456");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(product (number) (number))"));
|
||||
"(program (product (number) (number)))"));
|
||||
|
||||
delete_text(strlen("123 "), 2);
|
||||
});
|
||||
|
|
@ -382,14 +382,14 @@ describe("Parser", [&]() {
|
|||
set_text("{ x: (b.c) };");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression_statement (object (pair "
|
||||
"(identifier) (member_access (identifier) (identifier)))))"));
|
||||
"(program (expression_statement (object (pair "
|
||||
"(identifier) (member_access (identifier) (identifier))))))"));
|
||||
|
||||
replace_text(strlen("{ x: "), strlen("(b.c)"), "b.c");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression_statement (object (pair "
|
||||
"(identifier) (member_access (identifier) (identifier)))))"));
|
||||
"(program (expression_statement (object (pair "
|
||||
"(identifier) (member_access (identifier) (identifier))))))"));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -404,7 +404,7 @@ describe("Parser", [&]() {
|
|||
set_text("x # this is a comment");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression (variable) (comment))"));
|
||||
"(program (variable) (comment))"));
|
||||
|
||||
TSNode comment = ts_node_child(root, 1);
|
||||
|
||||
|
|
@ -417,7 +417,7 @@ describe("Parser", [&]() {
|
|||
set_text("x # \u03A9\u03A9\u03A9 \u2014 \u0394\u0394");
|
||||
|
||||
AssertThat(ts_node_string(root, doc), Equals(
|
||||
"(expression (variable) (comment))"));
|
||||
"(program (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")));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue