From 5b9269983b07e006b04184341096dac641d61e58 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 15 Mar 2025 13:41:26 +1300 Subject: [PATCH 1/4] Bump @nomicfoundation/slang from 0.19.0 to 0.20.1 --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d495e377..601db7ca3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.0-beta.7", "license": "MIT", "dependencies": { - "@nomicfoundation/slang": "0.19.0", + "@nomicfoundation/slang": "0.20.1", "@solidity-parser/parser": "^0.19.0", "semver": "^7.7.1" }, @@ -580,9 +580,9 @@ "dev": true }, "node_modules/@bytecodealliance/preview2-shim": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.1.tgz", - "integrity": "sha512-h1qLL0TN5KXk/zagY2BtbZuDX6xYjz4Br9RZXEa0ID4UpiPc0agUMhTdz9r89G4vX5SU/tqBg1A6UNv2+DJ5pg==", + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/@bytecodealliance/preview2-shim/-/preview2-shim-0.17.2.tgz", + "integrity": "sha512-mNm/lblgES8UkVle8rGImXOz4TtL3eU3inHay/7TVchkKrb/lgcVvTK0+VAw8p5zQ0rgQsXm1j5dOlAAd+MeoA==", "license": "(Apache-2.0 WITH LLVM-exception)" }, "node_modules/@cspotcode/source-map-support": { @@ -1410,12 +1410,12 @@ } }, "node_modules/@nomicfoundation/slang": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.19.0.tgz", - "integrity": "sha512-bOKJnc5/Q4Fbkm9OkaPItri81DGjZbzPeeGKbqUefPftEgGsFMtAqj+vSfT0fwGGuhoGXkGXk7SZ5oTpNE7xGg==", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.20.1.tgz", + "integrity": "sha512-nrHrXNgLOyWcl8q7/B04luUEG8zXku/QkaaDgHJeeFJ9Q27L4JXjO8Ac+ZktcKVTscRXoi35xhlJbcFezr3zbA==", "license": "MIT", "dependencies": { - "@bytecodealliance/preview2-shim": "0.17.1" + "@bytecodealliance/preview2-shim": "0.17.2" } }, "node_modules/@pkgjs/parseargs": { diff --git a/package.json b/package.json index 3e880942d..5d54d5c74 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "webpack-cli": "^6.0.1" }, "dependencies": { - "@nomicfoundation/slang": "0.19.0", + "@nomicfoundation/slang": "0.20.1", "@solidity-parser/parser": "^0.19.0", "semver": "^7.7.1" }, From 25ddc64a0bf7d622ccad0c264b71572e62c187e0 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 15 Mar 2025 14:03:28 +1300 Subject: [PATCH 2/4] passing tests --- src/slang-nodes/Expression.ts | 10 +++---- ...nExpression.ts => InequalityExpression.ts} | 8 ++--- src/slang-nodes/YulBuiltInFunction.ts | 29 ------------------- src/slang-nodes/YulExpression.ts | 12 +------- src/slang-nodes/types.d.ts | 6 ++-- src/slang-printers/print-binary-operation.ts | 4 +-- src/slang-utils/is-binary-operation.ts | 2 +- src/types.d.ts | 3 +- 8 files changed, 16 insertions(+), 58 deletions(-) rename src/slang-nodes/{ComparisonExpression.ts => InequalityExpression.ts} (84%) delete mode 100644 src/slang-nodes/YulBuiltInFunction.ts diff --git a/src/slang-nodes/Expression.ts b/src/slang-nodes/Expression.ts index 2198d4b48..25f303709 100644 --- a/src/slang-nodes/Expression.ts +++ b/src/slang-nodes/Expression.ts @@ -9,7 +9,7 @@ import { ConditionalExpression } from './ConditionalExpression.js'; import { OrExpression } from './OrExpression.js'; import { AndExpression } from './AndExpression.js'; import { EqualityExpression } from './EqualityExpression.js'; -import { ComparisonExpression } from './ComparisonExpression.js'; +import { InequalityExpression } from './InequalityExpression.js'; import { BitwiseOrExpression } from './BitwiseOrExpression.js'; import { BitwiseXorExpression } from './BitwiseXorExpression.js'; import { BitwiseAndExpression } from './BitwiseAndExpression.js'; @@ -51,7 +51,7 @@ export class Expression implements SlangNode { | OrExpression | AndExpression | EqualityExpression - | ComparisonExpression + | InequalityExpression | BitwiseOrExpression | BitwiseXorExpression | BitwiseAndExpression @@ -112,9 +112,9 @@ export class Expression implements SlangNode { options ); break; - case NonterminalKind.ComparisonExpression: - this.variant = new ComparisonExpression( - ast.variant as ast.ComparisonExpression, + case NonterminalKind.InequalityExpression: + this.variant = new InequalityExpression( + ast.variant as ast.InequalityExpression, options ); break; diff --git a/src/slang-nodes/ComparisonExpression.ts b/src/slang-nodes/InequalityExpression.ts similarity index 84% rename from src/slang-nodes/ComparisonExpression.ts rename to src/slang-nodes/InequalityExpression.ts index 8d4dbf5e3..3a03ec59c 100644 --- a/src/slang-nodes/ComparisonExpression.ts +++ b/src/slang-nodes/InequalityExpression.ts @@ -8,8 +8,8 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { AstNode } from './types.d.ts'; import type { PrintFunction, SlangNode } from '../types.d.ts'; -export class ComparisonExpression implements SlangNode { - readonly kind = NonterminalKind.ComparisonExpression; +export class InequalityExpression implements SlangNode { + readonly kind = NonterminalKind.InequalityExpression; comments; @@ -21,7 +21,7 @@ export class ComparisonExpression implements SlangNode { rightOperand: Expression; - constructor(ast: ast.ComparisonExpression, options: ParserOptions) { + constructor(ast: ast.InequalityExpression, options: ParserOptions) { let metadata = getNodeMetadata(ast); this.leftOperand = new Expression(ast.leftOperand, options); @@ -35,7 +35,7 @@ export class ComparisonExpression implements SlangNode { } print( - path: AstPath, + path: AstPath, print: PrintFunction, options: ParserOptions ): Doc { diff --git a/src/slang-nodes/YulBuiltInFunction.ts b/src/slang-nodes/YulBuiltInFunction.ts deleted file mode 100644 index b737fb04b..000000000 --- a/src/slang-nodes/YulBuiltInFunction.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { getNodeMetadata } from '../slang-utils/metadata.js'; - -import type * as ast from '@nomicfoundation/slang/ast'; -import type { Doc } from 'prettier'; -import type { SlangNode } from '../types.d.ts'; - -export class YulBuiltInFunction implements SlangNode { - readonly kind = NonterminalKind.YulBuiltInFunction; - - comments; - - loc; - - variant: string; - - constructor(ast: ast.YulBuiltInFunction) { - const metadata = getNodeMetadata(ast); - - this.variant = ast.variant.unparse(); - - this.comments = metadata.comments; - this.loc = metadata.loc; - } - - print(): Doc { - return this.variant; - } -} diff --git a/src/slang-nodes/YulExpression.ts b/src/slang-nodes/YulExpression.ts index b82014673..4b812654d 100644 --- a/src/slang-nodes/YulExpression.ts +++ b/src/slang-nodes/YulExpression.ts @@ -2,7 +2,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js'; import { YulFunctionCallExpression } from './YulFunctionCallExpression.js'; import { YulLiteral } from './YulLiteral.js'; -import { YulBuiltInFunction } from './YulBuiltInFunction.js'; import { YulPath } from './YulPath.js'; import type * as ast from '@nomicfoundation/slang/ast'; @@ -17,11 +16,7 @@ export class YulExpression implements SlangNode { loc; - variant: - | YulFunctionCallExpression - | YulLiteral - | YulBuiltInFunction - | YulPath; + variant: YulFunctionCallExpression | YulLiteral | YulPath; constructor(ast: ast.YulExpression, options: ParserOptions) { let metadata = getNodeMetadata(ast); @@ -36,11 +31,6 @@ export class YulExpression implements SlangNode { case NonterminalKind.YulLiteral: this.variant = new YulLiteral(ast.variant as ast.YulLiteral, options); break; - case NonterminalKind.YulBuiltInFunction: - this.variant = new YulBuiltInFunction( - ast.variant as ast.YulBuiltInFunction - ); - break; case NonterminalKind.YulPath: this.variant = new YulPath(ast.variant as ast.YulPath); break; diff --git a/src/slang-nodes/types.d.ts b/src/slang-nodes/types.d.ts index 0a5f75cdc..4378835b6 100644 --- a/src/slang-nodes/types.d.ts +++ b/src/slang-nodes/types.d.ts @@ -20,7 +20,6 @@ import type { CallOptionsExpression } from './CallOptionsExpression.ts'; import type { CatchClause } from './CatchClause.ts'; import type { CatchClauseError } from './CatchClauseError.ts'; import type { CatchClauses } from './CatchClauses.ts'; -import type { ComparisonExpression } from './ComparisonExpression.ts'; import type { ConditionalExpression } from './ConditionalExpression.ts'; import type { ConstantDefinition } from './ConstantDefinition.ts'; import type { ConstructorAttribute } from './ConstructorAttribute.ts'; @@ -80,6 +79,7 @@ import type { ImportDeconstructionSymbols } from './ImportDeconstructionSymbols. import type { ImportDirective } from './ImportDirective.ts'; import type { IndexAccessEnd } from './IndexAccessEnd.ts'; import type { IndexAccessExpression } from './IndexAccessExpression.ts'; +import type { InequalityExpression } from './InequalityExpression.ts'; import type { InheritanceSpecifier } from './InheritanceSpecifier.ts'; import type { InheritanceType } from './InheritanceType.ts'; import type { InheritanceTypes } from './InheritanceTypes.ts'; @@ -190,7 +190,6 @@ import type { YulArguments } from './YulArguments.ts'; import type { YulAssignmentOperator } from './YulAssignmentOperator.ts'; import type { YulBlock } from './YulBlock.ts'; import type { YulBreakStatement } from './YulBreakStatement.ts'; -import type { YulBuiltInFunction } from './YulBuiltInFunction.ts'; import type { YulColonAndEqual } from './YulColonAndEqual.ts'; import type { YulContinueStatement } from './YulContinueStatement.ts'; import type { YulDefaultCase } from './YulDefaultCase.ts'; @@ -321,7 +320,7 @@ export type StrictAstNode = | OrExpression | AndExpression | EqualityExpression - | ComparisonExpression + | InequalityExpression | BitwiseOrExpression | BitwiseXorExpression | BitwiseAndExpression @@ -409,7 +408,6 @@ export type StrictAstNode = | YulAssignmentOperator | YulSwitchCase | YulExpression - | YulBuiltInFunction | YulLiteral | SourceUnitMembers | VersionExpressionSet diff --git a/src/slang-printers/print-binary-operation.ts b/src/slang-printers/print-binary-operation.ts index 6bac5c5ce..010a3b5e7 100644 --- a/src/slang-printers/print-binary-operation.ts +++ b/src/slang-printers/print-binary-operation.ts @@ -5,8 +5,8 @@ import { createKindCheckFunction } from '../slang-utils/create-kind-check-functi import type { AstPath, Doc } from 'prettier'; import type { BinaryOperation, StrictAstNode } from '../slang-nodes/types.d.ts'; -import type { ComparisonExpression } from '../slang-nodes/ComparisonExpression.ts'; import type { EqualityExpression } from '../slang-nodes/EqualityExpression.ts'; +import type { InequalityExpression } from '../slang-nodes/InequalityExpression.ts'; const { group, indent } = doc.builders; @@ -25,7 +25,7 @@ const isBinaryOperationWithoutComparison = createKindCheckFunction([ node: StrictAstNode ) => node is Exclude< BinaryOperation, - ComparisonExpression | EqualityExpression + EqualityExpression | InequalityExpression >; const binaryGroupRulesBuilder = diff --git a/src/slang-utils/is-binary-operation.ts b/src/slang-utils/is-binary-operation.ts index e147b8bdf..961f2cb19 100644 --- a/src/slang-utils/is-binary-operation.ts +++ b/src/slang-utils/is-binary-operation.ts @@ -11,8 +11,8 @@ export const isBinaryOperation = createKindCheckFunction([ NonterminalKind.BitwiseAndExpression, NonterminalKind.BitwiseOrExpression, NonterminalKind.BitwiseXorExpression, - NonterminalKind.ComparisonExpression, NonterminalKind.EqualityExpression, + NonterminalKind.InequalityExpression, NonterminalKind.AndExpression, NonterminalKind.OrExpression, NonterminalKind.ShiftExpression diff --git a/src/types.d.ts b/src/types.d.ts index 0114ba1a0..9d00a01c2 100644 --- a/src/types.d.ts +++ b/src/types.d.ts @@ -142,7 +142,7 @@ export type SlangAstNode = | ast.OrExpression | ast.AndExpression | ast.EqualityExpression - | ast.ComparisonExpression + | ast.InequalityExpression | ast.BitwiseOrExpression | ast.BitwiseXorExpression | ast.BitwiseAndExpression @@ -230,7 +230,6 @@ export type SlangAstNode = | ast.YulAssignmentOperator | ast.YulSwitchCase | ast.YulExpression - | ast.YulBuiltInFunction | ast.YulLiteral | ast.SourceUnitMembers | ast.VersionExpressionSet From e73d94850c6c0c942d35bab70dca02862f9ba202 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sat, 15 Mar 2025 14:11:23 +1300 Subject: [PATCH 3/4] fix building --- test.config.js | 2 +- webpack.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.config.js b/test.config.js index 72b596229..232223744 100644 --- a/test.config.js +++ b/test.config.js @@ -11,7 +11,7 @@ export default { optimization: { minimize: false }, target: ['browserslist'], - externals: { 'fs/promises': 'import fs/promises' }, + externals: { 'node:fs/promises': 'import node:fs/promises' }, experiments: { asyncWebAssembly: true, diff --git a/webpack.config.js b/webpack.config.js index b1b215408..f2ab486ce 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -22,7 +22,7 @@ export default (webpackEnv) => { // Avoid bundling Prettier externals: { prettier: 'global prettier', - 'fs/promises': 'import fs/promises' + 'node:fs/promises': 'import node:fs/promises' }, plugins: [ From 0c1c5c35bc2d7c15017e7d3187d08e042f816e39 Mon Sep 17 00:00:00 2001 From: Klaus Date: Tue, 18 Mar 2025 09:13:46 +1300 Subject: [PATCH 4/4] Slang 1.0.0 --- 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 601db7ca3..c1cf5c56c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.0-beta.7", "license": "MIT", "dependencies": { - "@nomicfoundation/slang": "0.20.1", + "@nomicfoundation/slang": "1.0.0", "@solidity-parser/parser": "^0.19.0", "semver": "^7.7.1" }, @@ -1410,9 +1410,9 @@ } }, "node_modules/@nomicfoundation/slang": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.20.1.tgz", - "integrity": "sha512-nrHrXNgLOyWcl8q7/B04luUEG8zXku/QkaaDgHJeeFJ9Q27L4JXjO8Ac+ZktcKVTscRXoi35xhlJbcFezr3zbA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-1.0.0.tgz", + "integrity": "sha512-dnfv/+84/+iTSLBvqNQDA4/OZuq0tvJgFFwvnMwIdnMvn8QDcdouPTgF/nOwEuDtcIw5KWFzEf++UqpfwXCRpw==", "license": "MIT", "dependencies": { "@bytecodealliance/preview2-shim": "0.17.2" diff --git a/package.json b/package.json index 5d54d5c74..30fa31669 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "webpack-cli": "^6.0.1" }, "dependencies": { - "@nomicfoundation/slang": "0.20.1", + "@nomicfoundation/slang": "1.0.0", "@solidity-parser/parser": "^0.19.0", "semver": "^7.7.1" },