1- import * as ast from '@nomicfoundation/slang/ast' ;
1+ import * as slangAst from '@nomicfoundation/slang/ast' ;
22import { NonterminalKind } from '@nomicfoundation/slang/cst' ;
33import { createNonterminalVariantSimpleCreator } from '../slang-utils/create-nonterminal-variant-creator.js' ;
44import { SlangNode } from './SlangNode.js' ;
@@ -24,40 +24,28 @@ import type { ParserOptions } from 'prettier';
2424import type { CollectedMetadata } from '../types.d.ts' ;
2525import type { AstNode } from './types.d.ts' ;
2626
27- const createNonterminalVariantInternal = createNonterminalVariantSimpleCreator <
28- ast . Statement ,
27+ const createNonterminalVariant = createNonterminalVariantSimpleCreator <
28+ slangAst . Statement ,
2929 Statement
3030> ( [
31- [ ast . ExpressionStatement , ExpressionStatement ] ,
32- [ ast . VariableDeclarationStatement , VariableDeclarationStatement ] ,
33- [ ast . TupleDeconstructionStatement , TupleDeconstructionStatement ] ,
34- [ ast . IfStatement , IfStatement ] ,
35- [ ast . ForStatement , ForStatement ] ,
36- [ ast . WhileStatement , WhileStatement ] ,
37- [ ast . DoWhileStatement , DoWhileStatement ] ,
38- [ ast . ContinueStatement , ContinueStatement ] ,
39- [ ast . BreakStatement , BreakStatement ] ,
40- [ ast . ReturnStatement , ReturnStatement ] ,
41- [ ast . ThrowStatement , ThrowStatement ] ,
42- [ ast . EmitStatement , EmitStatement ] ,
43- [ ast . TryStatement , TryStatement ] ,
44- [ ast . RevertStatement , RevertStatement ] ,
45- [ ast . AssemblyStatement , AssemblyStatement ] ,
46- [ ast . UncheckedBlock , UncheckedBlock ]
31+ [ slangAst . ExpressionStatement , ExpressionStatement ] ,
32+ [ slangAst . VariableDeclarationStatement , VariableDeclarationStatement ] ,
33+ [ slangAst . TupleDeconstructionStatement , TupleDeconstructionStatement ] ,
34+ [ slangAst . IfStatement , IfStatement ] ,
35+ [ slangAst . ForStatement , ForStatement ] ,
36+ [ slangAst . WhileStatement , WhileStatement ] ,
37+ [ slangAst . DoWhileStatement , DoWhileStatement ] ,
38+ [ slangAst . ContinueStatement , ContinueStatement ] ,
39+ [ slangAst . BreakStatement , BreakStatement ] ,
40+ [ slangAst . ReturnStatement , ReturnStatement ] ,
41+ [ slangAst . ThrowStatement , ThrowStatement ] ,
42+ [ slangAst . EmitStatement , EmitStatement ] ,
43+ [ slangAst . TryStatement , TryStatement ] ,
44+ [ slangAst . RevertStatement , RevertStatement ] ,
45+ [ slangAst . AssemblyStatement , AssemblyStatement ] ,
46+ [ slangAst . UncheckedBlock , UncheckedBlock ]
4747] ) ;
4848
49- function createNonterminalVariant (
50- variant : ast . Statement [ 'variant' ] ,
51- collected : CollectedMetadata ,
52- options : ParserOptions < AstNode >
53- ) : Statement [ 'variant' ] {
54- if ( variant instanceof ast . Block ) {
55- return new Block ( variant , collected , options ) ;
56- }
57-
58- return createNonterminalVariantInternal ( variant , collected , options ) ;
59- }
60-
6149export class Statement extends SlangNode {
6250 readonly kind = NonterminalKind . Statement ;
6351
@@ -81,13 +69,17 @@ export class Statement extends SlangNode {
8169 | UncheckedBlock ;
8270
8371 constructor (
84- ast : ast . Statement ,
72+ ast : slangAst . Statement ,
8573 collected : CollectedMetadata ,
8674 options : ParserOptions < AstNode >
8775 ) {
8876 super ( ast , collected ) ;
8977
90- this . variant = createNonterminalVariant ( ast . variant , collected , options ) ;
78+ const variant = ast . variant ;
79+ this . variant =
80+ variant instanceof slangAst . Block
81+ ? new Block ( variant , collected , options )
82+ : createNonterminalVariant ( variant , collected , options ) ;
9183
9284 this . updateMetadata ( this . variant ) ;
9385 }
0 commit comments