diff --git a/src/runtime/parser.c b/src/runtime/parser.c index efde7830..dcb55a62 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -1440,6 +1440,7 @@ TSTree *ts_parser_resume(TSParser *self) { } TSTree *ts_parser_parse(TSParser *self, const TSTree *old_tree, TSInput input) { + if (!self->language) return NULL; ts_parser__start(self, input, old_tree ? old_tree->root : NULL); return ts_parser_resume(self); } diff --git a/test/runtime/parser_test.cc b/test/runtime/parser_test.cc index 9599563d..7c9e786f 100644 --- a/test/runtime/parser_test.cc +++ b/test/runtime/parser_test.cc @@ -568,6 +568,15 @@ describe("Parser", [&]() { AssertThat(ts_parser_set_language(parser, &language), IsFalse()); AssertThat(ts_parser_language(parser), Equals(nullptr)); }); + + it("does nothing when parse is called while the language is null", [&]() { + tree = ts_parser_parse_string(parser, nullptr, "{}", 2); + AssertThat(tree, Equals(nullptr)); + + ts_parser_set_language(parser, nullptr); + tree = ts_parser_parse_string(parser, nullptr, "{}", 2); + AssertThat(tree, Equals(nullptr)); + }); }); describe("set_logger(TSLogger)", [&]() {