Add Document parse_count() method, for tracking if trees are still valid
This commit is contained in:
parent
2869458ce9
commit
66ad271c82
4 changed files with 17 additions and 0 deletions
|
|
@ -74,6 +74,7 @@ void ts_document_edit(TSDocument *, TSInputEdit);
|
|||
TSDebugger ts_document_debugger(const TSDocument *);
|
||||
void ts_document_set_debugger(TSDocument *, TSDebugger);
|
||||
TSNode ts_document_root_node(const TSDocument *);
|
||||
size_t ts_document_parse_count(const TSDocument *);
|
||||
|
||||
#define ts_builtin_sym_error 0
|
||||
#define ts_builtin_sym_end 1
|
||||
|
|
|
|||
|
|
@ -394,6 +394,16 @@ describe("Parser", [&]() {
|
|||
"(identifier) (member_access (identifier) (identifier))))))"));
|
||||
});
|
||||
});
|
||||
|
||||
it("updates the document's parse-count", [&]() {
|
||||
AssertThat(ts_document_parse_count(doc), Equals<size_t>(0));
|
||||
|
||||
set_text("{ x: (b.c) };");
|
||||
AssertThat(ts_document_parse_count(doc), Equals<size_t>(1));
|
||||
|
||||
insert_text(strlen("{ x"), "yz");
|
||||
AssertThat(ts_document_parse_count(doc), Equals<size_t>(2));
|
||||
});
|
||||
});
|
||||
|
||||
describe("lexing", [&]() {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ static void ts_document__reparse(TSDocument *document, TSInputEdit *edit) {
|
|||
ts_tree_release(document->tree);
|
||||
document->tree = tree;
|
||||
ts_tree_retain(tree);
|
||||
document->parse_count++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -74,3 +75,7 @@ TSNode ts_document_root_node(const TSDocument *document) {
|
|||
result = ts_node_named_child(result, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
size_t ts_document_parse_count(const TSDocument *document) {
|
||||
return document->parse_count;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ struct TSDocument {
|
|||
TSParser parser;
|
||||
TSInput input;
|
||||
TSTree *tree;
|
||||
size_t parse_count;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue