|
3 | 3 | NonterminalKind, |
4 | 4 | TerminalNode as SlangTerminalNode |
5 | 5 | } from '@nomicfoundation/slang/cst'; |
| 6 | +import { extractVariant } from '../slang-utils/extract-variant.js'; |
6 | 7 | import { PolymorphicNode } from './PolymorphicNode.js'; |
7 | 8 | import { AssignmentExpression } from './AssignmentExpression.js'; |
8 | 9 | import { ConditionalExpression } from './ConditionalExpression.js'; |
@@ -39,7 +40,7 @@ import type { AstNode } from './types.d.ts'; |
39 | 40 | function createNonterminalVariant( |
40 | 41 | variant: Exclude<ast.Expression['variant'], SlangTerminalNode>, |
41 | 42 | options: ParserOptions<AstNode> |
42 | | -): Exclude<Expression['variant'], TerminalNode> { |
| 43 | +): Expression['variant'] { |
43 | 44 | if (variant instanceof ast.AssignmentExpression) { |
44 | 45 | return new AssignmentExpression(variant, options); |
45 | 46 | } |
@@ -119,7 +120,7 @@ function createNonterminalVariant( |
119 | 120 | return new StringExpression(variant, options); |
120 | 121 | } |
121 | 122 | if (variant instanceof ast.ElementaryType) { |
122 | | - return new ElementaryType(variant); |
| 123 | + return extractVariant(new ElementaryType(variant)); |
123 | 124 | } |
124 | 125 | const exhaustiveCheck: never = variant; |
125 | 126 | return exhaustiveCheck; |
@@ -155,7 +156,7 @@ export class Expression extends PolymorphicNode { |
155 | 156 | | HexNumberExpression |
156 | 157 | | DecimalNumberExpression |
157 | 158 | | StringExpression |
158 | | - | ElementaryType |
| 159 | + | ElementaryType['variant'] |
159 | 160 | | TerminalNode; |
160 | 161 |
|
161 | 162 | constructor(ast: ast.Expression, options: ParserOptions<AstNode>) { |
|
0 commit comments