diff --git a/package-lock.json b/package-lock.json index ceeaa8c68..98747ded6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.1.0", "license": "MIT", "dependencies": { - "@nomicfoundation/slang": "1.2.1", + "@nomicfoundation/slang": "1.3.0", "@solidity-parser/parser": "^0.20.2", "semver": "^7.7.3" }, @@ -1533,9 +1533,9 @@ } }, "node_modules/@nomicfoundation/slang": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-1.2.1.tgz", - "integrity": "sha512-XQirzqDGxMnhOZtGPRLdc1F6UymU0N/lhXUcWsf6bqy29Pq+g6ougvbSTTCTXjgWXjBp6zQ1gaJmzWmMBvMgOw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-1.3.0.tgz", + "integrity": "sha512-2PcwCF5cX2UjGi9cHd7E6XtLDaoyEVOTYt8WtOJ7GVpa68b+/sX0uFkb5/S67vxJb8eaVVFd2u6MTSVmE84QsQ==", "license": "MIT", "dependencies": { "@bytecodealliance/preview2-shim": "0.17.2" diff --git a/package.json b/package.json index 16d323490..0253ade81 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "webpack-cli": "^6.0.1" }, "dependencies": { - "@nomicfoundation/slang": "1.2.1", + "@nomicfoundation/slang": "1.3.0", "@solidity-parser/parser": "^0.20.2", "semver": "^7.7.3" }, diff --git a/src/slang-nodes/AbicoderPragma.ts b/src/slang-nodes/AbicoderPragma.ts index 50e9a45b9..4bb8bfb36 100644 --- a/src/slang-nodes/AbicoderPragma.ts +++ b/src/slang-nodes/AbicoderPragma.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { SlangNode } from './SlangNode.js'; -import { TerminalNode } from './TerminalNode.js'; +import { AbicoderVersion } from './AbicoderVersion.js'; import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; @@ -9,12 +9,12 @@ import type { PrintFunction } from '../types.d.ts'; export class AbicoderPragma extends SlangNode { readonly kind = NonterminalKind.AbicoderPragma; - version: TerminalNode; + version: AbicoderVersion; constructor(ast: ast.AbicoderPragma) { super(ast); - this.version = new TerminalNode(ast.version); + this.version = new AbicoderVersion(ast.version); } print(path: AstPath, print: PrintFunction): Doc { diff --git a/src/slang-nodes/AbicoderVersion.ts b/src/slang-nodes/AbicoderVersion.ts new file mode 100644 index 000000000..3e12c13e8 --- /dev/null +++ b/src/slang-nodes/AbicoderVersion.ts @@ -0,0 +1,21 @@ +import { NonterminalKind } from '@nomicfoundation/slang/cst'; +import { SlangNode } from './SlangNode.js'; + +import type * as ast from '@nomicfoundation/slang/ast'; +import type { Doc } from 'prettier'; + +export class AbicoderVersion extends SlangNode { + readonly kind = NonterminalKind.AbicoderVersion; + + variant: string; + + constructor(ast: ast.AbicoderVersion) { + super(ast); + + this.variant = ast.variant.unparse(); + } + + print(): Doc { + return this.variant; + } +} diff --git a/src/slang-nodes/types.d.ts b/src/slang-nodes/types.d.ts index e5f57a96d..2d3612532 100644 --- a/src/slang-nodes/types.d.ts +++ b/src/slang-nodes/types.d.ts @@ -1,4 +1,5 @@ import type { AbicoderPragma } from './AbicoderPragma.ts'; +import type { AbicoderVersion } from './AbicoderVersion.ts'; import type { AdditiveExpression } from './AdditiveExpression.ts'; import type { AddressType } from './AddressType.ts'; import type { AndExpression } from './AndExpression.ts'; @@ -242,6 +243,7 @@ export type StrictAstNode = | SourceUnit | PragmaDirective | AbicoderPragma + | AbicoderVersion | ExperimentalPragma | VersionPragma | VersionRange