Remove duplication between parser_destroy and parser_set_language

This commit is contained in:
Max Brunsfeld 2016-12-06 10:12:49 -08:00
parent 83514293b5
commit 7f6ec0131d

View file

@ -1130,11 +1130,10 @@ bool parser_init(Parser *self) {
}
void parser_set_language(Parser *self, const TSLanguage *language) {
if (self->external_scanner_payload)
if (self->language->external_scanner.destroy)
self->language->external_scanner.destroy(self->external_scanner_payload);
if (self->external_scanner_payload && self->language->external_scanner.destroy)
self->language->external_scanner.destroy(self->external_scanner_payload);
if (language->external_scanner.create)
if (language && language->external_scanner.create)
self->external_scanner_payload = language->external_scanner.create();
else
self->external_scanner_payload = NULL;
@ -1151,9 +1150,7 @@ void parser_destroy(Parser *self) {
array_delete(&self->tree_path1);
if (self->tree_path2.contents)
array_delete(&self->tree_path2);
if (self->external_scanner_payload)
if (self->language->external_scanner.destroy)
self->language->external_scanner.destroy(self->external_scanner_payload);
parser_set_language(self, NULL);
}
Tree *parser_parse(Parser *self, TSInput input, Tree *old_tree) {