From 296cbe31e2766183a7564fd88147c08f11ae873f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Oct 2025 06:01:13 +0000 Subject: [PATCH 1/4] Bump @nomicfoundation/slang from 1.2.1 to 1.3.0 Bumps [@nomicfoundation/slang](https://github.com/NomicFoundation/slang) from 1.2.1 to 1.3.0. - [Release notes](https://github.com/NomicFoundation/slang/releases) - [Changelog](https://github.com/NomicFoundation/slang/blob/main/CHANGELOG.md) - [Commits](https://github.com/NomicFoundation/slang/commits) --- updated-dependencies: - dependency-name: "@nomicfoundation/slang" dependency-version: 1.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) 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" }, From 9b5bb2f6b5c25cf1766d065e14b54ea909103ecc Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 17 Oct 2025 19:43:09 +0200 Subject: [PATCH 2/4] support for @NomicFoundation/slang v1.3.0 --- src/slang-nodes/AbicoderPragma.ts | 7 ++++--- src/slang-nodes/AbicoderVersion.ts | 17 +++++++++++++++++ src/slang-nodes/types.d.ts | 2 ++ src/slangPrinter.ts | 2 ++ 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/slang-nodes/AbicoderVersion.ts diff --git a/src/slang-nodes/AbicoderPragma.ts b/src/slang-nodes/AbicoderPragma.ts index 50e9a45b9..79f891318 100644 --- a/src/slang-nodes/AbicoderPragma.ts +++ b/src/slang-nodes/AbicoderPragma.ts @@ -1,6 +1,7 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; +import { extractVariant } from '../slang-utils/extract-variant.js'; 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 +10,12 @@ import type { PrintFunction } from '../types.d.ts'; export class AbicoderPragma extends SlangNode { readonly kind = NonterminalKind.AbicoderPragma; - version: TerminalNode; + version: AbicoderVersion['variant']; constructor(ast: ast.AbicoderPragma) { super(ast); - this.version = new TerminalNode(ast.version); + this.version = extractVariant(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..478723f8b --- /dev/null +++ b/src/slang-nodes/AbicoderVersion.ts @@ -0,0 +1,17 @@ +import { NonterminalKind } from '@nomicfoundation/slang/cst'; +import { SlangNode } from './SlangNode.js'; +import { TerminalNode } from './TerminalNode.js'; + +import type * as ast from '@nomicfoundation/slang/ast'; + +export class AbicoderVersion extends SlangNode { + readonly kind = NonterminalKind.AbicoderPragma; + + variant: TerminalNode; + + constructor(ast: ast.AbicoderVersion) { + super(ast); + + this.variant = new TerminalNode(ast.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 diff --git a/src/slangPrinter.ts b/src/slangPrinter.ts index b42c78cf1..72bef43e7 100644 --- a/src/slangPrinter.ts +++ b/src/slangPrinter.ts @@ -4,6 +4,7 @@ import { locEnd, locStart } from './slang-utils/loc.js'; import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { AstNode, StrictAstNode } from './slang-nodes/types.d.ts'; import type { PrintFunction } from './types.d.ts'; +import type { AbicoderVersion } from './slang-nodes/AbicoderVersion.js'; import type { ArgumentsDeclaration } from './slang-nodes/ArgumentsDeclaration.js'; import type { ConstructorAttribute } from './slang-nodes/ConstructorAttribute.js'; import type { FallbackFunctionAttribute } from './slang-nodes/FallbackFunctionAttribute.js'; @@ -69,6 +70,7 @@ function genericPrint( path: AstPath< Exclude< StrictAstNode, + | AbicoderVersion | ArgumentsDeclaration | ConstructorAttribute | FallbackFunctionAttribute From 7b62b5ee018966f23288a6af88c72c54d7f8bd34 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 19 Oct 2025 14:35:50 +0200 Subject: [PATCH 3/4] AbicoderVersion is not really a PolymorphicNode since `variant` can be a `string` --- src/slang-nodes/AbicoderPragma.ts | 5 ++--- src/slang-nodes/AbicoderVersion.ts | 10 +++++++--- src/slangPrinter.ts | 2 -- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/slang-nodes/AbicoderPragma.ts b/src/slang-nodes/AbicoderPragma.ts index 79f891318..4bb8bfb36 100644 --- a/src/slang-nodes/AbicoderPragma.ts +++ b/src/slang-nodes/AbicoderPragma.ts @@ -1,5 +1,4 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { AbicoderVersion } from './AbicoderVersion.js'; @@ -10,12 +9,12 @@ import type { PrintFunction } from '../types.d.ts'; export class AbicoderPragma extends SlangNode { readonly kind = NonterminalKind.AbicoderPragma; - version: AbicoderVersion['variant']; + version: AbicoderVersion; constructor(ast: ast.AbicoderPragma) { super(ast); - this.version = extractVariant(new AbicoderVersion(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 index 478723f8b..169136e8b 100644 --- a/src/slang-nodes/AbicoderVersion.ts +++ b/src/slang-nodes/AbicoderVersion.ts @@ -1,17 +1,21 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { SlangNode } from './SlangNode.js'; -import { TerminalNode } from './TerminalNode.js'; import type * as ast from '@nomicfoundation/slang/ast'; +import type { Doc } from 'prettier'; export class AbicoderVersion extends SlangNode { readonly kind = NonterminalKind.AbicoderPragma; - variant: TerminalNode; + variant: string; constructor(ast: ast.AbicoderVersion) { super(ast); - this.variant = new TerminalNode(ast.variant); + this.variant = ast.variant.unparse(); + } + + print(): Doc { + return this.variant; } } diff --git a/src/slangPrinter.ts b/src/slangPrinter.ts index 72bef43e7..b42c78cf1 100644 --- a/src/slangPrinter.ts +++ b/src/slangPrinter.ts @@ -4,7 +4,6 @@ import { locEnd, locStart } from './slang-utils/loc.js'; import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { AstNode, StrictAstNode } from './slang-nodes/types.d.ts'; import type { PrintFunction } from './types.d.ts'; -import type { AbicoderVersion } from './slang-nodes/AbicoderVersion.js'; import type { ArgumentsDeclaration } from './slang-nodes/ArgumentsDeclaration.js'; import type { ConstructorAttribute } from './slang-nodes/ConstructorAttribute.js'; import type { FallbackFunctionAttribute } from './slang-nodes/FallbackFunctionAttribute.js'; @@ -70,7 +69,6 @@ function genericPrint( path: AstPath< Exclude< StrictAstNode, - | AbicoderVersion | ArgumentsDeclaration | ConstructorAttribute | FallbackFunctionAttribute From 3242a845e291e0ee6cc76924cb4dff86c8b1f84e Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 21 Oct 2025 16:37:10 +0200 Subject: [PATCH 4/4] fix `kind` of the newly created class --- src/slang-nodes/AbicoderVersion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slang-nodes/AbicoderVersion.ts b/src/slang-nodes/AbicoderVersion.ts index 169136e8b..3e12c13e8 100644 --- a/src/slang-nodes/AbicoderVersion.ts +++ b/src/slang-nodes/AbicoderVersion.ts @@ -5,7 +5,7 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; export class AbicoderVersion extends SlangNode { - readonly kind = NonterminalKind.AbicoderPragma; + readonly kind = NonterminalKind.AbicoderVersion; variant: string;