fix: pass unique_aliases to assign symbol_ids for aliases

This commit is contained in:
bglgwyng 2025-11-19 21:48:08 +09:00
parent f4472c0140
commit 98acc93411
2 changed files with 12 additions and 4 deletions

View file

@ -266,6 +266,7 @@ where
&syntax_grammar,
&lexical_grammar,
&simple_aliases,
&unique_aliases,
&variable_info,
&symbol_ids,
)?;

View file

@ -474,6 +474,7 @@ pub fn generate_node_types_json(
syntax_grammar: &SyntaxGrammar,
lexical_grammar: &LexicalGrammar,
default_aliases: &AliasMap,
unique_aliases: &Vec<(Alias, u16)>,
variable_info: &[VariableInfo],
symbol_ids: &HashMap<Symbol, (String, u16)>,
) -> SuperTypeCycleResult<Vec<NodeInfoJSON>> {
@ -508,6 +509,13 @@ pub fn generate_node_types_json(
.push(*numeric_id);
}
for unique_alias in unique_aliases {
kind_to_symbol_ids.insert(
(unique_alias.0.value.clone(), unique_alias.0.is_named),
vec![unique_alias.1],
);
}
// Sort the symbol IDs for each kind to ensure consistent ordering
for ids in kind_to_symbol_ids.values_mut() {
ids.sort_unstable();
@ -2138,18 +2146,17 @@ mod tests {
tables: _,
symbol_ids,
alias_ids: _,
unique_aliases: _,
unique_aliases,
} = introspect_grammar(grammar, None, OptLevel::default()).unwrap();
let x = generate_node_types_json(
generate_node_types_json(
&syntax_grammar,
&lexical_grammar,
&simple_aliases,
&unique_aliases,
&variable_info,
&symbol_ids,
);
return x;
}
fn build_syntax_grammar(