Update trees' metadata bits when setting symbol back to word token
This commit is contained in:
parent
f6d014f3f4
commit
213ccfd3a4
3 changed files with 20 additions and 10 deletions
|
|
@ -1363,7 +1363,7 @@ static void ts_parser__advance(TSParser *self, StackVersion version, bool allow_
|
|||
);
|
||||
|
||||
MutableSubtree mutable_lookahead = ts_subtree_make_mut(&self->tree_pool, lookahead);
|
||||
ts_subtree_set_symbol(&mutable_lookahead, self->language->keyword_capture_token);
|
||||
ts_subtree_set_symbol(&mutable_lookahead, self->language->keyword_capture_token, self->language);
|
||||
lookahead = ts_subtree_from_mut(mutable_lookahead);
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -225,6 +225,24 @@ Subtree ts_subtree_new_leaf(
|
|||
}
|
||||
}
|
||||
|
||||
void ts_subtree_set_symbol(
|
||||
MutableSubtree *self,
|
||||
TSSymbol symbol,
|
||||
const TSLanguage *language
|
||||
) {
|
||||
TSSymbolMetadata metadata = ts_language_symbol_metadata(language, symbol);
|
||||
if (self->data.is_inline) {
|
||||
assert(symbol < UINT8_MAX);
|
||||
self->data.symbol = symbol;
|
||||
self->data.named = metadata.named;
|
||||
self->data.visible = metadata.visible;
|
||||
} else {
|
||||
self->ptr->symbol = symbol;
|
||||
self->ptr->named = metadata.named;
|
||||
self->ptr->visible = metadata.visible;
|
||||
}
|
||||
}
|
||||
|
||||
Subtree ts_subtree_new_error(
|
||||
SubtreePool *pool, int32_t lookahead_char, Length padding, Length size,
|
||||
uint32_t bytes_scanned, TSStateId parse_state, const TSLanguage *language
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ void ts_subtree_retain(Subtree);
|
|||
void ts_subtree_release(SubtreePool *, Subtree);
|
||||
bool ts_subtree_eq(Subtree, Subtree);
|
||||
int ts_subtree_compare(Subtree, Subtree);
|
||||
void ts_subtree_set_symbol(MutableSubtree *, TSSymbol, const TSLanguage *);
|
||||
void ts_subtree_set_children(MutableSubtree, Subtree *, uint32_t, const TSLanguage *);
|
||||
void ts_subtree_balance(Subtree, SubtreePool *, const TSLanguage *);
|
||||
Subtree ts_subtree_edit(Subtree, const TSInputEdit *edit, SubtreePool *);
|
||||
|
|
@ -154,15 +155,6 @@ static inline uint32_t ts_subtree_lookahead_bytes(Subtree self) { return SUBTREE
|
|||
|
||||
#undef SUBTREE_GET
|
||||
|
||||
static inline void ts_subtree_set_symbol(MutableSubtree *self, TSSymbol symbol) {
|
||||
if (self->data.is_inline) {
|
||||
assert(symbol < UINT8_MAX);
|
||||
self->data.symbol = symbol;
|
||||
} else {
|
||||
self->ptr->symbol = symbol;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void ts_subtree_set_extra(MutableSubtree *self) {
|
||||
if (self->data.is_inline) {
|
||||
self->data.extra = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue