Always invalidate old chunk of text when parsing after an edit
This commit is contained in:
parent
c0073c5b72
commit
36c2b685b9
5 changed files with 38 additions and 6 deletions
|
|
@ -15,8 +15,6 @@ TSPoint point(size_t row, size_t column) {
|
|||
|
||||
START_TEST
|
||||
|
||||
|
||||
|
||||
describe("Document", [&]() {
|
||||
TSDocument *document;
|
||||
TSNode root;
|
||||
|
|
@ -259,7 +257,7 @@ describe("Document", [&]() {
|
|||
|
||||
before_each([&]() {
|
||||
ts_document_set_language(document, load_real_language("javascript"));
|
||||
input = new SpyInput("{a: null};", 3);
|
||||
input = new SpyInput("{a: null};\n", 3);
|
||||
ts_document_set_input(document, input->input());
|
||||
ts_document_parse(document);
|
||||
assert_node_string_equals(
|
||||
|
|
@ -313,6 +311,37 @@ describe("Document", [&]() {
|
|||
})));
|
||||
});
|
||||
|
||||
it("reports no changes when leading whitespace has changed (regression)", [&]() {
|
||||
input->chars_per_chunk = 80;
|
||||
|
||||
// Insert leading whitespace
|
||||
auto ranges = get_invalidated_ranges_for_edit([&]() {
|
||||
return input->replace(0, 0, "\n");
|
||||
});
|
||||
assert_node_string_equals(
|
||||
ts_document_root_node(document),
|
||||
"(program (expression_statement (object (pair (property_identifier) (null)))))");
|
||||
AssertThat(ranges, Equals(vector<TSRange>({})));
|
||||
|
||||
// Remove leading whitespace
|
||||
ranges = get_invalidated_ranges_for_edit([&]() {
|
||||
return input->undo();
|
||||
});
|
||||
assert_node_string_equals(
|
||||
ts_document_root_node(document),
|
||||
"(program (expression_statement (object (pair (property_identifier) (null)))))");
|
||||
AssertThat(ranges, Equals(vector<TSRange>({})));
|
||||
|
||||
// Insert leading whitespace again
|
||||
ranges = get_invalidated_ranges_for_edit([&]() {
|
||||
return input->replace(0, 0, "\n");
|
||||
});
|
||||
assert_node_string_equals(
|
||||
ts_document_root_node(document),
|
||||
"(program (expression_statement (object (pair (property_identifier) (null)))))");
|
||||
AssertThat(ranges, Equals(vector<TSRange>({})));
|
||||
});
|
||||
|
||||
it("reports changes when tokens have been appended", [&]() {
|
||||
// Add a second key-value pair
|
||||
auto ranges = get_invalidated_ranges_for_edit([&]() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue