11import * as ast from '@nomicfoundation/slang/ast' ;
2- import { NonterminalKind , TerminalNode } from '@nomicfoundation/slang/cst' ;
3- import { printVariant } from '../slang-printers/print-variant.js' ;
2+ import {
3+ NonterminalKind ,
4+ TerminalNode as SlangTerminalNode
5+ } from '@nomicfoundation/slang/cst' ;
46import { SlangNode } from './SlangNode.js' ;
57import { ModifierInvocation } from './ModifierInvocation.js' ;
68import { OverrideSpecifier } from './OverrideSpecifier.js' ;
9+ import { TerminalNode } from './TerminalNode.js' ;
710
811import type { AstPath , Doc , ParserOptions } from 'prettier' ;
912import type { AstNode } from './types.d.ts' ;
1013import type { PrintFunction } from '../types.d.ts' ;
1114
1215function createNonterminalVariant (
13- variant : Exclude < ast . FallbackFunctionAttribute [ 'variant' ] , TerminalNode > ,
16+ variant : Exclude < ast . FallbackFunctionAttribute [ 'variant' ] , SlangTerminalNode > ,
1417 options : ParserOptions < AstNode >
15- ) : Exclude < FallbackFunctionAttribute [ 'variant' ] , string > {
18+ ) : Exclude < FallbackFunctionAttribute [ 'variant' ] , TerminalNode > {
1619 if ( variant instanceof ast . ModifierInvocation ) {
1720 return new ModifierInvocation ( variant , options ) ;
1821 }
@@ -26,7 +29,7 @@ function createNonterminalVariant(
2629export class FallbackFunctionAttribute extends SlangNode {
2730 readonly kind = NonterminalKind . FallbackFunctionAttribute ;
2831
29- variant : ModifierInvocation | OverrideSpecifier | string ;
32+ variant : ModifierInvocation | OverrideSpecifier | TerminalNode ;
3033
3134 constructor (
3235 ast : ast . FallbackFunctionAttribute ,
@@ -35,8 +38,8 @@ export class FallbackFunctionAttribute extends SlangNode {
3538 super ( ast ) ;
3639
3740 const variant = ast . variant ;
38- if ( variant instanceof TerminalNode ) {
39- this . variant = variant . unparse ( ) ;
41+ if ( variant instanceof SlangTerminalNode ) {
42+ this . variant = new TerminalNode ( variant ) ;
4043 return ;
4144 }
4245 this . variant = createNonterminalVariant ( variant , options ) ;
@@ -45,6 +48,6 @@ export class FallbackFunctionAttribute extends SlangNode {
4548 }
4649
4750 print ( path : AstPath < FallbackFunctionAttribute > , print : PrintFunction ) : Doc {
48- return printVariant ( this , path , print ) ;
51+ return path . call ( print , 'variant' ) ;
4952 }
5053}
0 commit comments