From ca24942929ca26577981ab6dd37d84edb8117ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Linse?= Date: Tue, 13 Nov 2018 11:34:12 +0100 Subject: [PATCH] runtime: make ts_language_symbol_for_name work for alias symbols --- src/runtime/language.c | 3 ++- test/runtime/language_test.cc | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/runtime/language.c b/src/runtime/language.c index 45d19698..0fb03b6c 100644 --- a/src/runtime/language.c +++ b/src/runtime/language.c @@ -50,7 +50,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++) { + uint32_t count = ts_language_symbol_count(self); + for (TSSymbol i = 0; i < count; i++) { if (!strcmp(self->symbol_names[i], name)) { return i; } diff --git a/test/runtime/language_test.cc b/test/runtime/language_test.cc index f7867f5b..30861ee7 100644 --- a/test/runtime/language_test.cc +++ b/test/runtime/language_test.cc @@ -69,6 +69,15 @@ describe("Language", []() { Equals("ERROR") ); AssertThat(ts_language_symbol_for_name(language, "non_existent_symbol"), Equals(0u)); + + TSSymbol last = ts_language_symbol_count(language)-1; + AssertThat( + ts_language_symbol_for_name( + language, + ts_language_symbol_name(language, last) + ), + Equals(last) + ); }); }); });