Skip to content

Commit 7d53963

Browse files
committed
Avoid unnecessary type casts
1 parent 13d3b20 commit 7d53963

1 file changed

Lines changed: 8 additions & 14 deletions

File tree

src/slang-nodes/ArgumentsDeclaration.ts

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import * as ast from '@nomicfoundation/slang/ast';
12
import { NonterminalKind } from '@nomicfoundation/slang/cst';
23
import { SlangNode } from './SlangNode.js';
34
import { PositionalArgumentsDeclaration } from './PositionalArgumentsDeclaration.js';
45
import { NamedArgumentsDeclaration } from './NamedArgumentsDeclaration.js';
56

6-
import type * as ast from '@nomicfoundation/slang/ast';
77
import type { AstPath, Doc, ParserOptions } from 'prettier';
88
import type { AstNode } from './types.d.ts';
99
import 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

Comments
 (0)