1+ import * as ast from '@nomicfoundation/slang/ast' ;
12import { NonterminalKind } from '@nomicfoundation/slang/cst' ;
23import { SlangNode } from './SlangNode.js' ;
34import { PositionalArgumentsDeclaration } from './PositionalArgumentsDeclaration.js' ;
45import { NamedArgumentsDeclaration } from './NamedArgumentsDeclaration.js' ;
56
6- import type * as ast from '@nomicfoundation/slang/ast' ;
77import type { AstPath , Doc , ParserOptions } from 'prettier' ;
88import type { AstNode } from './types.d.ts' ;
99import type { PrintFunction } from '../types.d.ts' ;
@@ -12,19 +12,13 @@ function createNonterminalVariant(
1212 variant : ast . ArgumentsDeclaration [ 'variant' ] ,
1313 options : ParserOptions < AstNode >
1414) : ArgumentsDeclaration [ 'variant' ] {
15- switch ( variant . cst . kind ) {
16- case NonterminalKind . PositionalArgumentsDeclaration :
17- return new PositionalArgumentsDeclaration (
18- variant as ast . PositionalArgumentsDeclaration ,
19- options
20- ) ;
21- case NonterminalKind . NamedArgumentsDeclaration :
22- return new NamedArgumentsDeclaration (
23- variant as ast . NamedArgumentsDeclaration ,
24- options
25- ) ;
26- default :
27- throw new Error ( `Unexpected variant: ${ variant . cst . kind } ` ) ;
15+ if ( variant instanceof ast . PositionalArgumentsDeclaration ) {
16+ return new PositionalArgumentsDeclaration ( variant , options ) ;
17+ } else if ( variant instanceof ast . NamedArgumentsDeclaration ) {
18+ return new NamedArgumentsDeclaration ( variant , options ) ;
19+ } else {
20+ const exhaustiveCheck : never = variant ;
21+ return exhaustiveCheck ;
2822 }
2923}
3024
0 commit comments