Don't automatically hide singleton nodes

This commit is contained in:
Max Brunsfeld 2015-09-02 16:36:29 -07:00
parent acf9280eda
commit 53926c467e
21 changed files with 4284 additions and 4221 deletions

View file

@ -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"));
});

View file

@ -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))))

View file

@ -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)))))))

View file

@ -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))))))

View file

@ -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))))

View file

@ -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)))

View file

@ -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)))))))

View file

@ -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))))))))

View file

@ -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)))

View file

@ -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")));