1- import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js' ;
1+ import {
2+ NonterminalKind ,
3+ TerminalKind
4+ } from '@nomicfoundation/slang/kinds/index.js' ;
25import { TerminalNode } from '@nomicfoundation/slang/cst/index.js' ;
36import { getNodeMetadata , updateMetadata } from '../slang-utils/metadata.js' ;
47import { AssignmentExpression } from './AssignmentExpression.js' ;
@@ -28,6 +31,7 @@ import { HexNumberExpression } from './HexNumberExpression.js';
2831import { DecimalNumberExpression } from './DecimalNumberExpression.js' ;
2932import { StringExpression } from './StringExpression.js' ;
3033import { ElementaryType } from './ElementaryType.js' ;
34+ import { Identifier } from './Identifier.js' ;
3135
3236import type * as ast from '@nomicfoundation/slang/ast' ;
3337import type { AstPath , Doc , ParserOptions } from 'prettier' ;
@@ -69,7 +73,7 @@ export class Expression implements SlangNode {
6973 | DecimalNumberExpression
7074 | StringExpression
7175 | ElementaryType
72- | string ;
76+ | Identifier ;
7377
7478 constructor (
7579 ast : ast . Expression ,
@@ -80,7 +84,7 @@ export class Expression implements SlangNode {
8084 const { offsets } = metadata ;
8185
8286 if ( ast . variant instanceof TerminalNode ) {
83- this . variant = ast . variant . text ;
87+ this . variant = new Identifier ( ast . variant , offsets [ 0 ] ) ;
8488 } else {
8589 switch ( ast . variant . cst . kind ) {
8690 case NonterminalKind . AssignmentExpression :
@@ -276,16 +280,14 @@ export class Expression implements SlangNode {
276280
277281 metadata = updateMetadata (
278282 metadata ,
279- typeof this . variant === 'string' ? [ ] : [ this . variant ]
283+ this . variant . kind === TerminalKind . Identifier ? [ ] : [ this . variant ]
280284 ) ;
281285
282286 this . comments = metadata . comments ;
283287 this . loc = metadata . loc ;
284288 }
285289
286290 print ( path : AstPath < Expression > , print : PrintFunction ) : Doc {
287- return typeof this . variant === 'string'
288- ? this . variant
289- : path . call ( print , 'variant' ) ;
291+ return path . call ( print , 'variant' ) ;
290292 }
291293}
0 commit comments