diff --git a/package-lock.json b/package-lock.json index 8d495e377..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.19.0", + "@nomicfoundation/slang": "1.0.0", "@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": "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.1" + "@bytecodealliance/preview2-shim": "0.17.2" } }, "node_modules/@pkgjs/parseargs": { diff --git a/package.json b/package.json index 3e880942d..30fa31669 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "webpack-cli": "^6.0.1" }, "dependencies": { - "@nomicfoundation/slang": "0.19.0", + "@nomicfoundation/slang": "1.0.0", "@solidity-parser/parser": "^0.19.0", "semver": "^7.7.1" }, 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 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: [