Start work on a --wasm flag for the test subcommand
This commit is contained in:
parent
08ccf5babf
commit
51720beeb0
4 changed files with 48 additions and 17 deletions
|
|
@ -1865,13 +1865,24 @@ const TSLanguage *ts_parser_language(const TSParser *self) {
|
|||
}
|
||||
|
||||
bool ts_parser_set_language(TSParser *self, const TSLanguage *language) {
|
||||
if (language) {
|
||||
if (language->version > TREE_SITTER_LANGUAGE_VERSION) return false;
|
||||
if (language->version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION) return false;
|
||||
}
|
||||
ts_parser__external_scanner_destroy(self);
|
||||
self->language = NULL;
|
||||
|
||||
if (language) {
|
||||
if (
|
||||
language->version > TREE_SITTER_LANGUAGE_VERSION ||
|
||||
language->version < TREE_SITTER_MIN_COMPATIBLE_LANGUAGE_VERSION
|
||||
) return false;
|
||||
|
||||
if (ts_language_is_wasm(language)) {
|
||||
if (
|
||||
!self->wasm_store ||
|
||||
!ts_wasm_store_start(self->wasm_store, &self->lexer.data, language)
|
||||
) return false;
|
||||
}
|
||||
}
|
||||
|
||||
self->language = language;
|
||||
ts_wasm_store_start(self->wasm_store, &self->lexer.data, language);
|
||||
ts_parser__external_scanner_create(self);
|
||||
ts_parser_reset(self);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -819,11 +819,11 @@ const TSLanguage *ts_wasm_store_load_language(
|
|||
),
|
||||
.symbol_metadata = copy(
|
||||
&memory[wasm_language.symbol_metadata],
|
||||
wasm_language.symbol_count * sizeof(TSSymbolMetadata)
|
||||
(wasm_language.symbol_count + wasm_language.alias_count) * sizeof(TSSymbolMetadata)
|
||||
),
|
||||
.public_symbol_map = copy(
|
||||
&memory[wasm_language.public_symbol_map],
|
||||
wasm_language.symbol_count * sizeof(TSSymbol)
|
||||
(wasm_language.symbol_count + wasm_language.alias_count) * sizeof(TSSymbol)
|
||||
),
|
||||
.lex_modes = copy(
|
||||
&memory[wasm_language.lex_modes],
|
||||
|
|
@ -884,6 +884,13 @@ const TSLanguage *ts_wasm_store_load_language(
|
|||
);
|
||||
}
|
||||
|
||||
if (language->version >= 14) {
|
||||
language->primary_state_ids = copy(
|
||||
&memory[wasm_language.primary_state_ids],
|
||||
wasm_language.state_count * sizeof(TSStateId)
|
||||
);
|
||||
}
|
||||
|
||||
if (language->external_token_count > 0) {
|
||||
language->external_scanner.symbol_map = copy(
|
||||
&memory[wasm_language.external_scanner.symbol_map],
|
||||
|
|
@ -985,8 +992,6 @@ bool ts_wasm_store_add_language(
|
|||
|
||||
bool ts_wasm_store_start(TSWasmStore *self, TSLexer *lexer, const TSLanguage *language) {
|
||||
uint32_t instance_index;
|
||||
if (!language) return false;
|
||||
if (!ts_language_is_wasm(language)) return false;
|
||||
if (!ts_wasm_store_add_language(self, language, &instance_index)) return false;
|
||||
self->current_lexer = lexer;
|
||||
self->current_instance = &self->language_instances.contents[instance_index];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue