Skip to content

Commit 9b5bb2f

Browse files
committed
support for @NomicFoundation/slang v1.3.0
1 parent 296cbe3 commit 9b5bb2f

4 files changed

Lines changed: 25 additions & 3 deletions

File tree

src/slang-nodes/AbicoderPragma.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2+
import { extractVariant } from '../slang-utils/extract-variant.js';
23
import { SlangNode } from './SlangNode.js';
3-
import { TerminalNode } from './TerminalNode.js';
4+
import { AbicoderVersion } from './AbicoderVersion.js';
45

56
import type * as ast from '@nomicfoundation/slang/ast';
67
import type { AstPath, Doc } from 'prettier';
@@ -9,12 +10,12 @@ import type { PrintFunction } from '../types.d.ts';
910
export class AbicoderPragma extends SlangNode {
1011
readonly kind = NonterminalKind.AbicoderPragma;
1112

12-
version: TerminalNode;
13+
version: AbicoderVersion['variant'];
1314

1415
constructor(ast: ast.AbicoderPragma) {
1516
super(ast);
1617

17-
this.version = new TerminalNode(ast.version);
18+
this.version = extractVariant(new AbicoderVersion(ast.version));
1819
}
1920

2021
print(path: AstPath<AbicoderPragma>, print: PrintFunction): Doc {

src/slang-nodes/AbicoderVersion.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { NonterminalKind } from '@nomicfoundation/slang/cst';
2+
import { SlangNode } from './SlangNode.js';
3+
import { TerminalNode } from './TerminalNode.js';
4+
5+
import type * as ast from '@nomicfoundation/slang/ast';
6+
7+
export class AbicoderVersion extends SlangNode {
8+
readonly kind = NonterminalKind.AbicoderPragma;
9+
10+
variant: TerminalNode;
11+
12+
constructor(ast: ast.AbicoderVersion) {
13+
super(ast);
14+
15+
this.variant = new TerminalNode(ast.variant);
16+
}
17+
}

src/slang-nodes/types.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { AbicoderPragma } from './AbicoderPragma.ts';
2+
import type { AbicoderVersion } from './AbicoderVersion.ts';
23
import type { AdditiveExpression } from './AdditiveExpression.ts';
34
import type { AddressType } from './AddressType.ts';
45
import type { AndExpression } from './AndExpression.ts';
@@ -242,6 +243,7 @@ export type StrictAstNode =
242243
| SourceUnit
243244
| PragmaDirective
244245
| AbicoderPragma
246+
| AbicoderVersion
245247
| ExperimentalPragma
246248
| VersionPragma
247249
| VersionRange

src/slangPrinter.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { locEnd, locStart } from './slang-utils/loc.js';
44
import type { AstPath, Doc, ParserOptions } from 'prettier';
55
import type { AstNode, StrictAstNode } from './slang-nodes/types.d.ts';
66
import type { PrintFunction } from './types.d.ts';
7+
import type { AbicoderVersion } from './slang-nodes/AbicoderVersion.js';
78
import type { ArgumentsDeclaration } from './slang-nodes/ArgumentsDeclaration.js';
89
import type { ConstructorAttribute } from './slang-nodes/ConstructorAttribute.js';
910
import type { FallbackFunctionAttribute } from './slang-nodes/FallbackFunctionAttribute.js';
@@ -69,6 +70,7 @@ function genericPrint(
6970
path: AstPath<
7071
Exclude<
7172
StrictAstNode,
73+
| AbicoderVersion
7274
| ArgumentsDeclaration
7375
| ConstructorAttribute
7476
| FallbackFunctionAttribute

0 commit comments

Comments
 (0)