feat!: introduce parser introspection via the repo's Semantic Version baked in
This commit is contained in:
parent
b66b1a7a92
commit
2c192fa038
15 changed files with 1862 additions and 2156 deletions
|
|
@ -24,8 +24,12 @@ uint32_t ts_language_state_count(const TSLanguage *self) {
|
|||
return self->state_count;
|
||||
}
|
||||
|
||||
uint32_t ts_language_version(const TSLanguage *self) {
|
||||
return self->version;
|
||||
uint32_t ts_language_abi_version(const TSLanguage *self) {
|
||||
return self->abi_version;
|
||||
}
|
||||
|
||||
uint32_t ts_language_semantic_version(const TSLanguage *self) {
|
||||
return self->major_version << 16 | self->minor_version << 8 | self->patch_version;
|
||||
}
|
||||
|
||||
uint32_t ts_language_field_count(const TSLanguage *self) {
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ static inline bool ts_language_state_is_primary(
|
|||
const TSLanguage *self,
|
||||
TSStateId state
|
||||
) {
|
||||
if (self->version >= 14) {
|
||||
if (self->abi_version >= 14) {
|
||||
return state == self->primary_state_ids[state];
|
||||
} else {
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -1875,8 +1875,8 @@ bool ts_parser_set_language(TSParser *self, const TSLanguage *language) {
|
|||
|
||||
if (language) {
|
||||
if (
|
||||
language->version > TREE_SITTER_LANGUAGE_VERSION ||
|
||||
language->version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION
|
||||
language->abi_version > TREE_SITTER_LANGUAGE_VERSION ||
|
||||
language->abi_version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION
|
||||
) return false;
|
||||
|
||||
if (ts_language_is_wasm(language)) {
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ typedef union {
|
|||
} TSParseActionEntry;
|
||||
|
||||
struct TSLanguage {
|
||||
uint32_t version;
|
||||
uint32_t abi_version;
|
||||
uint32_t symbol_count;
|
||||
uint32_t alias_count;
|
||||
uint32_t token_count;
|
||||
|
|
@ -146,6 +146,9 @@ struct TSLanguage {
|
|||
void (*deserialize)(void *, const char *, unsigned);
|
||||
} external_scanner;
|
||||
const TSStateId *primary_state_ids;
|
||||
uint32_t major_version;
|
||||
uint32_t minor_version;
|
||||
uint32_t patch_version;
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -2677,8 +2677,8 @@ TSQuery *ts_query_new(
|
|||
) {
|
||||
if (
|
||||
!language ||
|
||||
language->version > TREE_SITTER_LANGUAGE_VERSION ||
|
||||
language->version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION
|
||||
language->abi_version > TREE_SITTER_LANGUAGE_VERSION ||
|
||||
language->abi_version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION
|
||||
) {
|
||||
*error_type = TSQueryErrorLanguage;
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -1188,7 +1188,7 @@ const TSLanguage *ts_wasm_store_load_language(
|
|||
);
|
||||
}
|
||||
|
||||
if (language->version >= 14) {
|
||||
if (language->abi_version >= 14) {
|
||||
language->primary_state_ids = copy(
|
||||
&memory[wasm_language.primary_state_ids],
|
||||
wasm_language.state_count * sizeof(TSStateId)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue