Make ts_language_symbol_for_name work for ERROR

This commit is contained in:
Max Brunsfeld 2018-08-31 09:46:55 -07:00
parent 068c9841a1
commit 69c815107f
2 changed files with 23 additions and 0 deletions

View file

@ -48,6 +48,8 @@ const char *ts_language_symbol_name(const TSLanguage *language, TSSymbol symbol)
}
TSSymbol ts_language_symbol_for_name(const TSLanguage *self, const char *name) {
if (!strcmp(name, "ERROR")) return ts_builtin_sym_error;
for (TSSymbol i = 0; i < self->symbol_count; i++) {
if (!strcmp(self->symbol_names[i], name)) {
return i;

View file

@ -50,6 +50,27 @@ describe("Language", []() {
ts_tree_delete(tree);
});
});
describe("symbol_for_name(name)", [&]() {
it("returns the symbol for the given name", [&]() {
const TSLanguage *language = load_real_language("javascript");
AssertThat(
ts_language_symbol_name(
language,
ts_language_symbol_for_name(language, "if_statement")
),
Equals("if_statement")
);
AssertThat(
ts_language_symbol_name(
language,
ts_language_symbol_for_name(language, "ERROR")
),
Equals("ERROR")
);
AssertThat(ts_language_symbol_for_name(language, "non_existent_symbol"), Equals(0u));
});
});
});
END_TEST