Refactor error comparisons
* Deal with mergeability outside of error comparison function * Make `better_version_exists` function pure (don't halt other versions as a side effect). * Tweak error comparison logic Signed-off-by: Rick Winfrey <rewinfrey@github.com>
This commit is contained in:
parent
71595ffde6
commit
d291af9a31
9 changed files with 153 additions and 164 deletions
6
test/fixtures/error_corpus/c_errors.txt
vendored
6
test/fixtures/error_corpus/c_errors.txt
vendored
|
|
@ -129,15 +129,13 @@ int b() {
|
|||
(compound_statement
|
||||
(declaration
|
||||
(type_identifier)
|
||||
(ERROR (identifier))
|
||||
(ERROR (identifier) (identifier))
|
||||
(init_declarator
|
||||
(identifier)
|
||||
(ERROR (identifier))
|
||||
(number_literal)))
|
||||
(declaration
|
||||
(type_identifier)
|
||||
(ERROR (identifier))
|
||||
(ERROR (identifier) (identifier))
|
||||
(init_declarator
|
||||
(identifier)
|
||||
(ERROR (identifier))
|
||||
(number_literal))))))
|
||||
|
|
|
|||
|
|
@ -37,10 +37,10 @@ h i j k;
|
|||
(identifier)
|
||||
(ERROR (identifier) (identifier)))
|
||||
(statement_block
|
||||
(ERROR (identifier) (identifier) (identifier))
|
||||
(expression_statement (identifier))))
|
||||
(ERROR (identifier) (identifier) (identifier))
|
||||
(expression_statement (identifier)))
|
||||
(ERROR (identifier))
|
||||
(expression_statement (identifier) (ERROR (identifier) (identifier)))))
|
||||
(ERROR (identifier))
|
||||
(expression_statement (identifier) (ERROR (identifier) (identifier))))
|
||||
|
||||
===================================================
|
||||
one invalid subtree right after the viable prefix
|
||||
|
|
|
|||
|
|
@ -91,15 +91,15 @@ describe("Parser", [&]() {
|
|||
|
||||
TSNode error = ts_node_named_child(ts_node_child(root, 0), 1);
|
||||
AssertThat(ts_node_type(error, document), Equals("ERROR"));
|
||||
AssertThat(get_node_text(error), Equals(", @@@@@"));
|
||||
AssertThat(get_node_text(error), Equals("@@@@@,"));
|
||||
AssertThat(ts_node_child_count(error), Equals<size_t>(2));
|
||||
|
||||
TSNode comma = ts_node_child(error, 0);
|
||||
AssertThat(get_node_text(comma), Equals(","));
|
||||
|
||||
TSNode garbage = ts_node_child(error, 1);
|
||||
TSNode garbage = ts_node_child(error, 0);
|
||||
AssertThat(get_node_text(garbage), Equals("@@@@@"));
|
||||
|
||||
TSNode comma = ts_node_child(error, 1);
|
||||
AssertThat(get_node_text(comma), Equals(","));
|
||||
|
||||
TSNode node_after_error = ts_node_next_named_sibling(error);
|
||||
AssertThat(ts_node_type(node_after_error, document), Equals("true"));
|
||||
AssertThat(get_node_text(node_after_error), Equals("true"));
|
||||
|
|
@ -116,16 +116,17 @@ describe("Parser", [&]() {
|
|||
|
||||
TSNode error = ts_node_named_child(ts_node_child(root, 0), 1);
|
||||
AssertThat(ts_node_type(error, document), Equals("ERROR"));
|
||||
AssertThat(get_node_text(error), Equals("faaaaalse,"));
|
||||
AssertThat(ts_node_child_count(error), Equals<size_t>(2));
|
||||
|
||||
TSNode comma = ts_node_child(error, 0);
|
||||
AssertThat(ts_node_type(comma, document), Equals(","));
|
||||
AssertThat(get_node_text(comma), Equals(","));
|
||||
|
||||
TSNode garbage = ts_node_child(error, 1);
|
||||
TSNode garbage = ts_node_child(error, 0);
|
||||
AssertThat(ts_node_type(garbage, document), Equals("ERROR"));
|
||||
AssertThat(get_node_text(garbage), Equals("faaaaalse"));
|
||||
|
||||
TSNode comma = ts_node_child(error, 1);
|
||||
AssertThat(ts_node_type(comma, document), Equals(","));
|
||||
AssertThat(get_node_text(comma), Equals(","));
|
||||
|
||||
TSNode last = ts_node_next_named_sibling(error);
|
||||
AssertThat(ts_node_type(last, document), Equals("true"));
|
||||
AssertThat(ts_node_start_byte(last), Equals(strlen(" [123, faaaaalse, ")));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue