From 98acc93411bb6c2ba82a7699b00cf14fb4f58d7e Mon Sep 17 00:00:00 2001 From: bglgwyng Date: Wed, 19 Nov 2025 21:48:08 +0900 Subject: [PATCH] fix: pass unique_aliases to assign symbol_ids for aliases --- crates/generate/src/generate.rs | 1 + crates/generate/src/node_types.rs | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/crates/generate/src/generate.rs b/crates/generate/src/generate.rs index ad0c51d4..6b04b4f1 100644 --- a/crates/generate/src/generate.rs +++ b/crates/generate/src/generate.rs @@ -266,6 +266,7 @@ where &syntax_grammar, &lexical_grammar, &simple_aliases, + &unique_aliases, &variable_info, &symbol_ids, )?; diff --git a/crates/generate/src/node_types.rs b/crates/generate/src/node_types.rs index 28a984af..3cbc4d44 100644 --- a/crates/generate/src/node_types.rs +++ b/crates/generate/src/node_types.rs @@ -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, ) -> SuperTypeCycleResult> { @@ -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(