@@ -146,7 +146,7 @@ impl ChildQuantity {
146146pub ( crate ) fn get_variable_info (
147147 syntax_grammar : & SyntaxGrammar ,
148148 lexical_grammar : & LexicalGrammar ,
149- simple_aliases : & AliasMap ,
149+ default_aliases : & AliasMap ,
150150) -> Result < Vec < VariableInfo > > {
151151 let child_type_is_visible = |t : & ChildType | {
152152 variable_type_for_child_type ( t, syntax_grammar, lexical_grammar) >= VariableType :: Anonymous
@@ -185,7 +185,7 @@ pub(crate) fn get_variable_info(
185185 let child_symbol = step. symbol ;
186186 let child_type = if let Some ( alias) = & step. alias {
187187 ChildType :: Aliased ( alias. clone ( ) )
188- } else if let Some ( alias) = simple_aliases . get ( & step. symbol ) {
188+ } else if let Some ( alias) = default_aliases . get ( & step. symbol ) {
189189 ChildType :: Aliased ( alias. clone ( ) )
190190 } else {
191191 ChildType :: Normal ( child_symbol)
@@ -358,7 +358,7 @@ pub(crate) fn get_variable_info(
358358pub ( crate ) fn generate_node_types_json (
359359 syntax_grammar : & SyntaxGrammar ,
360360 lexical_grammar : & LexicalGrammar ,
361- simple_aliases : & AliasMap ,
361+ default_aliases : & AliasMap ,
362362 variable_info : & Vec < VariableInfo > ,
363363) -> Vec < NodeInfoJSON > {
364364 let mut node_types_json = BTreeMap :: new ( ) ;
@@ -369,7 +369,7 @@ pub(crate) fn generate_node_types_json(
369369 named : alias. is_named ,
370370 } ,
371371 ChildType :: Normal ( symbol) => {
372- if let Some ( alias) = simple_aliases . get ( & symbol) {
372+ if let Some ( alias) = default_aliases . get ( & symbol) {
373373 NodeTypeJSON {
374374 kind : alias. value . clone ( ) ,
375375 named : alias. is_named ,
@@ -417,15 +417,15 @@ pub(crate) fn generate_node_types_json(
417417 } ;
418418
419419 let mut aliases_by_symbol = HashMap :: new ( ) ;
420- for ( symbol, alias) in simple_aliases {
420+ for ( symbol, alias) in default_aliases {
421421 aliases_by_symbol. insert ( * symbol, {
422422 let mut aliases = HashSet :: new ( ) ;
423423 aliases. insert ( Some ( alias. clone ( ) ) ) ;
424424 aliases
425425 } ) ;
426426 }
427427 for extra_symbol in & syntax_grammar. extra_symbols {
428- if !simple_aliases . contains_key ( extra_symbol) {
428+ if !default_aliases . contains_key ( extra_symbol) {
429429 aliases_by_symbol
430430 . entry ( * extra_symbol)
431431 . or_insert ( HashSet :: new ( ) )
@@ -435,12 +435,15 @@ pub(crate) fn generate_node_types_json(
435435 for variable in & syntax_grammar. variables {
436436 for production in & variable. productions {
437437 for step in & production. steps {
438- if !simple_aliases. contains_key ( & step. symbol ) {
439- aliases_by_symbol
440- . entry ( step. symbol )
441- . or_insert ( HashSet :: new ( ) )
442- . insert ( step. alias . clone ( ) ) ;
443- }
438+ aliases_by_symbol
439+ . entry ( step. symbol )
440+ . or_insert ( HashSet :: new ( ) )
441+ . insert (
442+ step. alias
443+ . as_ref ( )
444+ . or_else ( || default_aliases. get ( & step. symbol ) )
445+ . cloned ( ) ,
446+ ) ;
444447 }
445448 }
446449 }
@@ -1808,14 +1811,14 @@ mod tests {
18081811 }
18091812
18101813 fn get_node_types ( grammar : InputGrammar ) -> Vec < NodeInfoJSON > {
1811- let ( syntax_grammar, lexical_grammar, _, simple_aliases ) =
1814+ let ( syntax_grammar, lexical_grammar, _, default_aliases ) =
18121815 prepare_grammar ( & grammar) . unwrap ( ) ;
18131816 let variable_info =
1814- get_variable_info ( & syntax_grammar, & lexical_grammar, & simple_aliases ) . unwrap ( ) ;
1817+ get_variable_info ( & syntax_grammar, & lexical_grammar, & default_aliases ) . unwrap ( ) ;
18151818 generate_node_types_json (
18161819 & syntax_grammar,
18171820 & lexical_grammar,
1818- & simple_aliases ,
1821+ & default_aliases ,
18191822 & variable_info,
18201823 )
18211824 }
0 commit comments