Make ts_language_symbol_name return NULL for out-of-bound ids

This commit is contained in:
Tuấn-Anh Nguyễn 2020-02-27 22:24:00 +07:00
parent c719e24a45
commit 23261c4f6f
2 changed files with 10 additions and 5 deletions

View file

@ -176,10 +176,13 @@ impl Language {
}
/// Get the name of the node kind for the given numerical id.
pub fn node_kind_for_id(&self, id: u16) -> &'static str {
unsafe { CStr::from_ptr(ffi::ts_language_symbol_name(self.0, id)) }
.to_str()
.unwrap()
pub fn node_kind_for_id(&self, id: u16) -> Option<&'static str> {
let ptr = unsafe { ffi::ts_language_symbol_name(self.0, id) };
if ptr.is_null() {
None
} else {
Some(unsafe { CStr::from_ptr(ptr) }.to_str().unwrap())
}
}
/// Get the numeric id for the given node kind.

View file

@ -72,8 +72,10 @@ const char *ts_language_symbol_name(
return "ERROR";
} else if (symbol == ts_builtin_sym_error_repeat) {
return "_ERROR";
} else {
} else if (symbol < ts_language_symbol_count(self)) {
return self->symbol_names[symbol];
} else {
return NULL;
}
}