diff --git a/src/slang-comments/handlers/add-collection-first-comment.ts b/src/slang-comments/handlers/add-collection-first-comment.ts index ee5de3ce7..36158a508 100644 --- a/src/slang-comments/handlers/add-collection-first-comment.ts +++ b/src/slang-comments/handlers/add-collection-first-comment.ts @@ -1,9 +1,10 @@ -import { util } from 'prettier'; +import { + addDanglingComment, + addLeadingComment +} from '../../slang-utils/prettier-utils.js'; import type { Comment, StrictCollection } from '../../slang-nodes/types.d.ts'; -const { addDanglingComment, addLeadingComment } = util; - export default function addCollectionFirstComment( node: StrictCollection, comment: Comment diff --git a/src/slang-comments/handlers/add-collection-last-comment.ts b/src/slang-comments/handlers/add-collection-last-comment.ts index 3cc6f43e4..52829f176 100644 --- a/src/slang-comments/handlers/add-collection-last-comment.ts +++ b/src/slang-comments/handlers/add-collection-last-comment.ts @@ -1,9 +1,10 @@ -import { util } from 'prettier'; +import { + addDanglingComment, + addTrailingComment +} from '../../slang-utils/prettier-utils.js'; import type { Comment, StrictCollection } from '../../slang-nodes/types.d.ts'; -const { addDanglingComment, addTrailingComment } = util; - export default function addCollectionLastComment( node: StrictCollection, comment: Comment diff --git a/src/slang-comments/handlers/handle-contract-definition-comments.ts b/src/slang-comments/handlers/handle-contract-definition-comments.ts index d48b550bd..6f345da7b 100644 --- a/src/slang-comments/handlers/handle-contract-definition-comments.ts +++ b/src/slang-comments/handlers/handle-contract-definition-comments.ts @@ -1,12 +1,14 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addLeadingComment, + addTrailingComment, + getNextNonSpaceNonCommentCharacter +} from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionLastComment from './add-collection-last-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment, addTrailingComment } = util; - export default function handleContractDefinitionComments({ text, precedingNode, @@ -18,7 +20,7 @@ export default function handleContractDefinitionComments({ return false; } - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-contract-specifiers-comments.ts b/src/slang-comments/handlers/handle-contract-specifiers-comments.ts index d13dadbd5..612480c7f 100644 --- a/src/slang-comments/handlers/handle-contract-specifiers-comments.ts +++ b/src/slang-comments/handlers/handle-contract-specifiers-comments.ts @@ -1,11 +1,9 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { addTrailingComment } from '../../slang-utils/prettier-utils.js'; import addCollectionLastComment from './add-collection-last-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addTrailingComment } = util; - export default function handleContractSpecifiersComments({ precedingNode, enclosingNode, diff --git a/src/slang-comments/handlers/handle-else-branch-comments.ts b/src/slang-comments/handlers/handle-else-branch-comments.ts index 0352d941a..a6b70bf0c 100644 --- a/src/slang-comments/handlers/handle-else-branch-comments.ts +++ b/src/slang-comments/handlers/handle-else-branch-comments.ts @@ -1,11 +1,9 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { addLeadingComment } from '../../slang-utils/prettier-utils.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment } = util; - export default function handleElseBranchComments({ enclosingNode, followingNode, diff --git a/src/slang-comments/handlers/handle-if-statement-comments.ts b/src/slang-comments/handlers/handle-if-statement-comments.ts index 12e8fbe50..7665052ab 100644 --- a/src/slang-comments/handlers/handle-if-statement-comments.ts +++ b/src/slang-comments/handlers/handle-if-statement-comments.ts @@ -1,12 +1,14 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addLeadingComment, + addTrailingComment, + getNextNonSpaceNonCommentCharacter +} from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment, addTrailingComment } = util; - export default function handleIfStatementComments({ text, precedingNode, @@ -23,7 +25,7 @@ export default function handleIfStatementComments({ // if (a /* comment */) {} // The only workaround I found is to look at the next character to see if // it is a ). - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-interface-definition-comments.ts b/src/slang-comments/handlers/handle-interface-definition-comments.ts index 356cfc328..b53b0e9b9 100644 --- a/src/slang-comments/handlers/handle-interface-definition-comments.ts +++ b/src/slang-comments/handlers/handle-interface-definition-comments.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { getNextNonSpaceNonCommentCharacter } from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import addCollectionLastComment from './add-collection-last-comment.js'; @@ -17,7 +17,7 @@ export default function handleInterfaceDefinitionComments({ return false; } - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-library-definition-comments.ts b/src/slang-comments/handlers/handle-library-definition-comments.ts index dfe5bafe1..d305130b3 100644 --- a/src/slang-comments/handlers/handle-library-definition-comments.ts +++ b/src/slang-comments/handlers/handle-library-definition-comments.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { getNextNonSpaceNonCommentCharacter } from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import addCollectionLastComment from './add-collection-last-comment.js'; @@ -17,7 +17,7 @@ export default function handleLibraryDefinitionComments({ return false; } - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-member-access-expression-comments.ts b/src/slang-comments/handlers/handle-member-access-expression-comments.ts index d07900710..ecb626d5d 100644 --- a/src/slang-comments/handlers/handle-member-access-expression-comments.ts +++ b/src/slang-comments/handlers/handle-member-access-expression-comments.ts @@ -1,10 +1,11 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addLeadingComment, + addTrailingComment +} from '../../slang-utils/prettier-utils.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment, addTrailingComment } = util; - export default function handleMemberAccessExpressionComments({ precedingNode, enclosingNode, diff --git a/src/slang-comments/handlers/handle-modifier-invocation-comments.ts b/src/slang-comments/handlers/handle-modifier-invocation-comments.ts index d1b5e3187..d7db3e62f 100644 --- a/src/slang-comments/handlers/handle-modifier-invocation-comments.ts +++ b/src/slang-comments/handlers/handle-modifier-invocation-comments.ts @@ -1,12 +1,13 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addTrailingComment, + getNextNonSpaceNonCommentCharacter +} from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addTrailingComment } = util; - export default function handleModifierInvocationComments({ text, precedingNode, @@ -18,7 +19,7 @@ export default function handleModifierInvocationComments({ return false; } - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-struct-definition-comments.ts b/src/slang-comments/handlers/handle-struct-definition-comments.ts index bc1c5f228..27c30ea62 100644 --- a/src/slang-comments/handlers/handle-struct-definition-comments.ts +++ b/src/slang-comments/handlers/handle-struct-definition-comments.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { getNextNonSpaceNonCommentCharacter } from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import addCollectionLastComment from './add-collection-last-comment.js'; @@ -17,7 +17,7 @@ export default function handleStructDefinitionComments({ return false; } - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-while-statement-comments.ts b/src/slang-comments/handlers/handle-while-statement-comments.ts index 98e511ff0..9683af8dc 100644 --- a/src/slang-comments/handlers/handle-while-statement-comments.ts +++ b/src/slang-comments/handlers/handle-while-statement-comments.ts @@ -1,12 +1,14 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addLeadingComment, + addTrailingComment, + getNextNonSpaceNonCommentCharacter +} from '../../slang-utils/prettier-utils.js'; import { locEnd } from '../../slang-utils/loc.js'; import addCollectionFirstComment from './add-collection-first-comment.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment, addTrailingComment } = util; - export default function handleWhileStatementComments({ text, precedingNode, @@ -23,7 +25,7 @@ export default function handleWhileStatementComments({ // while (a /* comment */) {} // The only workaround I found is to look at the next character to see if // it is a ). - const nextCharacter = util.getNextNonSpaceNonCommentCharacter( + const nextCharacter = getNextNonSpaceNonCommentCharacter( text, locEnd(comment) ); diff --git a/src/slang-comments/handlers/handle-yul-block-comments.ts b/src/slang-comments/handlers/handle-yul-block-comments.ts index edaf07f0f..1475fb1cf 100644 --- a/src/slang-comments/handlers/handle-yul-block-comments.ts +++ b/src/slang-comments/handlers/handle-yul-block-comments.ts @@ -1,10 +1,11 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { util } from 'prettier'; +import { + addDanglingComment, + addLeadingComment +} from '../../slang-utils/prettier-utils.js'; import type { HandlerParams } from './types.d.ts'; -const { addLeadingComment, addDanglingComment } = util; - export default function handleYulBlockComments({ precedingNode, enclosingNode, diff --git a/src/slang-nodes/CallOptions.ts b/src/slang-nodes/CallOptions.ts index 5dfca92c4..fae72ece1 100644 --- a/src/slang-nodes/CallOptions.ts +++ b/src/slang-nodes/CallOptions.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line, softline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { NamedArgument } from './NamedArgument.js'; @@ -9,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { line, softline } = doc.builders; - export class CallOptions extends SlangNode { readonly kind = NonterminalKind.CallOptions; diff --git a/src/slang-nodes/CatchClauseError.ts b/src/slang-nodes/CatchClauseError.ts index 4b05f05ba..1c50178dd 100644 --- a/src/slang-nodes/CatchClauseError.ts +++ b/src/slang-nodes/CatchClauseError.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { group } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; import { ParametersDeclaration } from './ParametersDeclaration.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group } = doc.builders; - export class CatchClauseError extends SlangNode { readonly kind = NonterminalKind.CatchClauseError; diff --git a/src/slang-nodes/CatchClauses.ts b/src/slang-nodes/CatchClauses.ts index 34f4664ce..37c2c15e1 100644 --- a/src/slang-nodes/CatchClauses.ts +++ b/src/slang-nodes/CatchClauses.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { CatchClause } from './CatchClause.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class CatchClauses extends SlangNode { readonly kind = NonterminalKind.CatchClauses; diff --git a/src/slang-nodes/ConditionalExpression.ts b/src/slang-nodes/ConditionalExpression.ts index cdb63cb43..9498c6169 100644 --- a/src/slang-nodes/ConditionalExpression.ts +++ b/src/slang-nodes/ConditionalExpression.ts @@ -1,5 +1,11 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { + group, + hardline, + ifBreak, + indent, + line +} from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -10,8 +16,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { group, hardline, ifBreak, indent, line } = doc.builders; - function experimentalTernaries( node: ConditionalExpression, print: PrintFunction, diff --git a/src/slang-nodes/ConstructorAttributes.ts b/src/slang-nodes/ConstructorAttributes.ts index e1a502b90..a0a9ab410 100644 --- a/src/slang-nodes/ConstructorAttributes.ts +++ b/src/slang-nodes/ConstructorAttributes.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; +import { line } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { ConstructorAttribute } from './ConstructorAttribute.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class ConstructorAttributes extends SlangNode { readonly kind = NonterminalKind.ConstructorAttributes; diff --git a/src/slang-nodes/ContractDefinition.ts b/src/slang-nodes/ContractDefinition.ts index 796fcb9bb..36a2c51d9 100644 --- a/src/slang-nodes/ContractDefinition.ts +++ b/src/slang-nodes/ContractDefinition.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { satisfies } from 'semver'; +import { group, line } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; import { ContractSpecifiers } from './ContractSpecifiers.js'; @@ -10,8 +10,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group, line } = doc.builders; - export class ContractDefinition extends SlangNode { readonly kind = NonterminalKind.ContractDefinition; diff --git a/src/slang-nodes/ContractSpecifiers.ts b/src/slang-nodes/ContractSpecifiers.ts index 491d00d71..985226383 100644 --- a/src/slang-nodes/ContractSpecifiers.ts +++ b/src/slang-nodes/ContractSpecifiers.ts @@ -1,5 +1,10 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { + group, + ifBreak, + line, + softline +} from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +14,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group, ifBreak, line, softline } = doc.builders; - function sortContractSpecifiers( { kind: aKind }: ContractSpecifier['variant'], { kind: bKind }: ContractSpecifier['variant'] diff --git a/src/slang-nodes/DoWhileStatement.ts b/src/slang-nodes/DoWhileStatement.ts index d68c21172..f1b4e6add 100644 --- a/src/slang-nodes/DoWhileStatement.ts +++ b/src/slang-nodes/DoWhileStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -10,8 +10,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class DoWhileStatement extends SlangNode { readonly kind = NonterminalKind.DoWhileStatement; diff --git a/src/slang-nodes/EnumMembers.ts b/src/slang-nodes/EnumMembers.ts index 1142732d0..4d8ddb025 100644 --- a/src/slang-nodes/EnumMembers.ts +++ b/src/slang-nodes/EnumMembers.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { hardline } = doc.builders; - export class EnumMembers extends SlangNode { readonly kind = NonterminalKind.EnumMembers; diff --git a/src/slang-nodes/ExponentiationExpression.ts b/src/slang-nodes/ExponentiationExpression.ts index 8d1fe79df..786d22013 100644 --- a/src/slang-nodes/ExponentiationExpression.ts +++ b/src/slang-nodes/ExponentiationExpression.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { group } from '../slang-printers/prettier-builders.js'; import { createBinaryOperationPrinter } from '../slang-printers/create-binary-operation-printer.js'; import { binaryIndentRulesBuilder } from '../slang-printers/print-binary-operation.js'; import { createHugFunction } from '../slang-utils/create-hug-function.js'; @@ -13,8 +13,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { group } = doc.builders; - const tryToHug = createHugFunction(['**']); const shouldIndent = createKindCheckFunction([ diff --git a/src/slang-nodes/FallbackFunctionAttributes.ts b/src/slang-nodes/FallbackFunctionAttributes.ts index 765a06a89..ed4bc6677 100644 --- a/src/slang-nodes/FallbackFunctionAttributes.ts +++ b/src/slang-nodes/FallbackFunctionAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class FallbackFunctionAttributes extends SlangNode { readonly kind = NonterminalKind.FallbackFunctionAttributes; diff --git a/src/slang-nodes/ForStatement.ts b/src/slang-nodes/ForStatement.ts index d5d862e8d..230500760 100644 --- a/src/slang-nodes/ForStatement.ts +++ b/src/slang-nodes/ForStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { printIndentedGroupOrSpacedDocument } from '../slang-printers/print-indented-group-or-spaced-document.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; @@ -13,8 +13,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class ForStatement extends SlangNode { readonly kind = NonterminalKind.ForStatement; diff --git a/src/slang-nodes/FunctionAttributes.ts b/src/slang-nodes/FunctionAttributes.ts index a871e84a0..63936037e 100644 --- a/src/slang-nodes/FunctionAttributes.ts +++ b/src/slang-nodes/FunctionAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class FunctionAttributes extends SlangNode { readonly kind = NonterminalKind.FunctionAttributes; diff --git a/src/slang-nodes/FunctionTypeAttributes.ts b/src/slang-nodes/FunctionTypeAttributes.ts index d5aca46dd..6a0776d32 100644 --- a/src/slang-nodes/FunctionTypeAttributes.ts +++ b/src/slang-nodes/FunctionTypeAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class FunctionTypeAttributes extends SlangNode { readonly kind = NonterminalKind.FunctionTypeAttributes; diff --git a/src/slang-nodes/HexStringLiterals.ts b/src/slang-nodes/HexStringLiterals.ts index 4384f5d8c..a211c90f6 100644 --- a/src/slang-nodes/HexStringLiterals.ts +++ b/src/slang-nodes/HexStringLiterals.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline, join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { HexStringLiteral } from './HexStringLiteral.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join, hardline } = doc.builders; - export class HexStringLiterals extends SlangNode { readonly kind = NonterminalKind.HexStringLiterals; diff --git a/src/slang-nodes/IdentifierPath.ts b/src/slang-nodes/IdentifierPath.ts index c1f5b68dd..edf58de84 100644 --- a/src/slang-nodes/IdentifierPath.ts +++ b/src/slang-nodes/IdentifierPath.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class IdentifierPath extends SlangNode { readonly kind = NonterminalKind.IdentifierPath; diff --git a/src/slang-nodes/IfStatement.ts b/src/slang-nodes/IfStatement.ts index b0667f67c..0ef9ac01e 100644 --- a/src/slang-nodes/IfStatement.ts +++ b/src/slang-nodes/IfStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { printIndentedGroupOrSpacedDocument } from '../slang-printers/print-indented-group-or-spaced-document.js'; import { isBlockComment } from '../slang-utils/is-comment.js'; @@ -13,8 +13,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { hardline } = doc.builders; - export class IfStatement extends SlangNode { readonly kind = NonterminalKind.IfStatement; diff --git a/src/slang-nodes/ImportDeconstructionSymbols.ts b/src/slang-nodes/ImportDeconstructionSymbols.ts index 6bfed660c..9c1817047 100644 --- a/src/slang-nodes/ImportDeconstructionSymbols.ts +++ b/src/slang-nodes/ImportDeconstructionSymbols.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { satisfies } from 'semver'; +import { line, softline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { ImportDeconstructionSymbol } from './ImportDeconstructionSymbol.js'; @@ -10,8 +10,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { line, softline } = doc.builders; - export class ImportDeconstructionSymbols extends SlangNode { readonly kind = NonterminalKind.ImportDeconstructionSymbols; diff --git a/src/slang-nodes/InheritanceTypes.ts b/src/slang-nodes/InheritanceTypes.ts index 3df44bee8..87bbbef8d 100644 --- a/src/slang-nodes/InheritanceTypes.ts +++ b/src/slang-nodes/InheritanceTypes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { InheritanceType } from './InheritanceType.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class InheritanceTypes extends SlangNode { readonly kind = NonterminalKind.InheritanceTypes; diff --git a/src/slang-nodes/InterfaceDefinition.ts b/src/slang-nodes/InterfaceDefinition.ts index ce8c67e79..8c6ec4103 100644 --- a/src/slang-nodes/InterfaceDefinition.ts +++ b/src/slang-nodes/InterfaceDefinition.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { group, line } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; import { InheritanceSpecifier } from './InheritanceSpecifier.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group, line } = doc.builders; - export class InterfaceDefinition extends SlangNode { readonly kind = NonterminalKind.InterfaceDefinition; diff --git a/src/slang-nodes/LibraryDefinition.ts b/src/slang-nodes/LibraryDefinition.ts index be85d4b3b..0cd4eaeca 100644 --- a/src/slang-nodes/LibraryDefinition.ts +++ b/src/slang-nodes/LibraryDefinition.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { satisfies } from 'semver'; +import { group, line } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; import { LibraryMembers } from './LibraryMembers.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group, line } = doc.builders; - export class LibraryDefinition extends SlangNode { readonly kind = NonterminalKind.LibraryDefinition; diff --git a/src/slang-nodes/MemberAccessExpression.ts b/src/slang-nodes/MemberAccessExpression.ts index cc97f126f..56668451d 100644 --- a/src/slang-nodes/MemberAccessExpression.ts +++ b/src/slang-nodes/MemberAccessExpression.ts @@ -1,5 +1,10 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { + group, + indent, + label, + softline +} from '../slang-printers/prettier-builders.js'; import { isLabel } from '../slang-utils/is-label.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { isChainableExpression } from '../slang-utils/is-chainable-expression.js'; @@ -13,8 +18,6 @@ import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { ChainableExpression, PrintableNode } from './types.d.ts'; -const { group, indent, label, softline } = doc.builders; - const separatorLabel = Symbol('separator'); function isEndOfChain( diff --git a/src/slang-nodes/ModifierAttributes.ts b/src/slang-nodes/ModifierAttributes.ts index db22a0ed2..166f09503 100644 --- a/src/slang-nodes/ModifierAttributes.ts +++ b/src/slang-nodes/ModifierAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class ModifierAttributes extends SlangNode { readonly kind = NonterminalKind.ModifierAttributes; diff --git a/src/slang-nodes/NamedArguments.ts b/src/slang-nodes/NamedArguments.ts index acffe60c7..67d38cd2e 100644 --- a/src/slang-nodes/NamedArguments.ts +++ b/src/slang-nodes/NamedArguments.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line, softline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { NamedArgument } from './NamedArgument.js'; @@ -9,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { line, softline } = doc.builders; - export class NamedArguments extends SlangNode { readonly kind = NonterminalKind.NamedArguments; diff --git a/src/slang-nodes/Parameter.ts b/src/slang-nodes/Parameter.ts index 48add3eaf..3a9ecc977 100644 --- a/src/slang-nodes/Parameter.ts +++ b/src/slang-nodes/Parameter.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { group } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { TypeName } from './TypeName.js'; @@ -10,8 +10,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group } = doc.builders; - export class Parameter extends SlangNode { readonly kind = NonterminalKind.Parameter; diff --git a/src/slang-nodes/ReceiveFunctionAttributes.ts b/src/slang-nodes/ReceiveFunctionAttributes.ts index 88e8f0e77..4fbf1df41 100644 --- a/src/slang-nodes/ReceiveFunctionAttributes.ts +++ b/src/slang-nodes/ReceiveFunctionAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class ReceiveFunctionAttributes extends SlangNode { readonly kind = NonterminalKind.ReceiveFunctionAttributes; diff --git a/src/slang-nodes/ReturnsDeclaration.ts b/src/slang-nodes/ReturnsDeclaration.ts index b37fc6ab9..2a0430463 100644 --- a/src/slang-nodes/ReturnsDeclaration.ts +++ b/src/slang-nodes/ReturnsDeclaration.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { group } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { ParametersDeclaration } from './ParametersDeclaration.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { group } = doc.builders; - export class ReturnsDeclaration extends SlangNode { readonly kind = NonterminalKind.ReturnsDeclaration; diff --git a/src/slang-nodes/SourceUnit.ts b/src/slang-nodes/SourceUnit.ts index c96e8ea4b..dacbfe454 100644 --- a/src/slang-nodes/SourceUnit.ts +++ b/src/slang-nodes/SourceUnit.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { SourceUnitMembers } from './SourceUnitMembers.js'; @@ -8,8 +8,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { line } = doc.builders; - export class SourceUnit extends SlangNode { readonly kind = NonterminalKind.SourceUnit; diff --git a/src/slang-nodes/StateVariableAttributes.ts b/src/slang-nodes/StateVariableAttributes.ts index 797a877ca..ee10efd23 100644 --- a/src/slang-nodes/StateVariableAttributes.ts +++ b/src/slang-nodes/StateVariableAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class StateVariableAttributes extends SlangNode { readonly kind = NonterminalKind.StateVariableAttributes; diff --git a/src/slang-nodes/StateVariableDefinition.ts b/src/slang-nodes/StateVariableDefinition.ts index a37e1d6e6..90a65a1c3 100644 --- a/src/slang-nodes/StateVariableDefinition.ts +++ b/src/slang-nodes/StateVariableDefinition.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { indent } from '../slang-printers/prettier-builders.js'; import { printGroupAndIndentIfBreakPair } from '../slang-printers/print-group-and-indent-if-break-pair.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -12,8 +12,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { indent } = doc.builders; - export class StateVariableDefinition extends SlangNode { readonly kind = NonterminalKind.StateVariableDefinition; diff --git a/src/slang-nodes/StorageLayoutSpecifier.ts b/src/slang-nodes/StorageLayoutSpecifier.ts index 70a93bca0..9b6b9ee42 100644 --- a/src/slang-nodes/StorageLayoutSpecifier.ts +++ b/src/slang-nodes/StorageLayoutSpecifier.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class StorageLayoutSpecifier extends SlangNode { readonly kind = NonterminalKind.StorageLayoutSpecifier; diff --git a/src/slang-nodes/StringLiterals.ts b/src/slang-nodes/StringLiterals.ts index bf7a3ca8b..1554490d9 100644 --- a/src/slang-nodes/StringLiterals.ts +++ b/src/slang-nodes/StringLiterals.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline, join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { StringLiteral } from './StringLiteral.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join, hardline } = doc.builders; - export class StringLiterals extends SlangNode { readonly kind = NonterminalKind.StringLiterals; diff --git a/src/slang-nodes/StructMembers.ts b/src/slang-nodes/StructMembers.ts index b93e099a7..a878522be 100644 --- a/src/slang-nodes/StructMembers.ts +++ b/src/slang-nodes/StructMembers.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { StructMember } from './StructMember.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { hardline } = doc.builders; - export class StructMembers extends SlangNode { readonly kind = NonterminalKind.StructMembers; diff --git a/src/slang-nodes/TryStatement.ts b/src/slang-nodes/TryStatement.ts index 3ff3716fb..bb777e967 100644 --- a/src/slang-nodes/TryStatement.ts +++ b/src/slang-nodes/TryStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -12,8 +12,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class TryStatement extends SlangNode { readonly kind = NonterminalKind.TryStatement; diff --git a/src/slang-nodes/UnicodeStringLiterals.ts b/src/slang-nodes/UnicodeStringLiterals.ts index e4b610b91..1b2f1db5d 100644 --- a/src/slang-nodes/UnicodeStringLiterals.ts +++ b/src/slang-nodes/UnicodeStringLiterals.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline, join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { UnicodeStringLiteral } from './UnicodeStringLiteral.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join, hardline } = doc.builders; - export class UnicodeStringLiterals extends SlangNode { readonly kind = NonterminalKind.UnicodeStringLiterals; diff --git a/src/slang-nodes/UnnamedFunctionAttributes.ts b/src/slang-nodes/UnnamedFunctionAttributes.ts index e8ab90208..dca24aec1 100644 --- a/src/slang-nodes/UnnamedFunctionAttributes.ts +++ b/src/slang-nodes/UnnamedFunctionAttributes.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { sortFunctionAttributes } from '../slang-utils/sort-function-attributes.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class UnnamedFunctionAttributes extends SlangNode { readonly kind = NonterminalKind.UnnamedFunctionAttributes; diff --git a/src/slang-nodes/UsingDeconstructionSymbols.ts b/src/slang-nodes/UsingDeconstructionSymbols.ts index 696a1d827..4d5386138 100644 --- a/src/slang-nodes/UsingDeconstructionSymbols.ts +++ b/src/slang-nodes/UsingDeconstructionSymbols.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line, softline } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { UsingDeconstructionSymbol } from './UsingDeconstructionSymbol.js'; @@ -9,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; import type { PrintableNode } from './types.d.ts'; -const { line, softline } = doc.builders; - export class UsingDeconstructionSymbols extends SlangNode { readonly kind = NonterminalKind.UsingDeconstructionSymbols; diff --git a/src/slang-nodes/VariableDeclarationStatement.ts b/src/slang-nodes/VariableDeclarationStatement.ts index f9caa0f97..785d4f13f 100644 --- a/src/slang-nodes/VariableDeclarationStatement.ts +++ b/src/slang-nodes/VariableDeclarationStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { indent, line } from '../slang-printers/prettier-builders.js'; import { printGroupAndIndentIfBreakPair } from '../slang-printers/print-group-and-indent-if-break-pair.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -12,8 +12,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { indent, line } = doc.builders; - export class VariableDeclarationStatement extends SlangNode { readonly kind = NonterminalKind.VariableDeclarationStatement; diff --git a/src/slang-nodes/VersionExpressionSet.ts b/src/slang-nodes/VersionExpressionSet.ts index 90a1917ef..9a6dbe2f8 100644 --- a/src/slang-nodes/VersionExpressionSet.ts +++ b/src/slang-nodes/VersionExpressionSet.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { VersionExpression } from './VersionExpression.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class VersionExpressionSet extends SlangNode { readonly kind = NonterminalKind.VersionExpressionSet; diff --git a/src/slang-nodes/VersionExpressionSets.ts b/src/slang-nodes/VersionExpressionSets.ts index 6dbcb0855..e98e709c0 100644 --- a/src/slang-nodes/VersionExpressionSets.ts +++ b/src/slang-nodes/VersionExpressionSets.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { VersionExpressionSet } from './VersionExpressionSet.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class VersionExpressionSets extends SlangNode { readonly kind = NonterminalKind.VersionExpressionSets; diff --git a/src/slang-nodes/YulForStatement.ts b/src/slang-nodes/YulForStatement.ts index 340a1324a..1c8b2bb00 100644 --- a/src/slang-nodes/YulForStatement.ts +++ b/src/slang-nodes/YulForStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { YulBlock } from './YulBlock.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class YulForStatement extends SlangNode { readonly kind = NonterminalKind.YulForStatement; diff --git a/src/slang-nodes/YulLabel.ts b/src/slang-nodes/YulLabel.ts index 04e2cfde0..2f8965543 100644 --- a/src/slang-nodes/YulLabel.ts +++ b/src/slang-nodes/YulLabel.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { dedent, line } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { dedent, line } = doc.builders; - export class YulLabel extends SlangNode { readonly kind = NonterminalKind.YulLabel; diff --git a/src/slang-nodes/YulPath.ts b/src/slang-nodes/YulPath.ts index 5612ef26b..17e30afcf 100644 --- a/src/slang-nodes/YulPath.ts +++ b/src/slang-nodes/YulPath.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class YulPath extends SlangNode { readonly kind = NonterminalKind.YulPath; diff --git a/src/slang-nodes/YulPaths.ts b/src/slang-nodes/YulPaths.ts index c9235929e..bceb9cd08 100644 --- a/src/slang-nodes/YulPaths.ts +++ b/src/slang-nodes/YulPaths.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { SlangNode } from './SlangNode.js'; import { YulPath } from './YulPath.js'; @@ -7,8 +7,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class YulPaths extends SlangNode { readonly kind = NonterminalKind.YulPaths; diff --git a/src/slang-nodes/YulReturnsDeclaration.ts b/src/slang-nodes/YulReturnsDeclaration.ts index cba318c1a..667e1a7e5 100644 --- a/src/slang-nodes/YulReturnsDeclaration.ts +++ b/src/slang-nodes/YulReturnsDeclaration.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { SlangNode } from './SlangNode.js'; import { YulVariableNames } from './YulVariableNames.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class YulReturnsDeclaration extends SlangNode { readonly kind = NonterminalKind.YulReturnsDeclaration; diff --git a/src/slang-nodes/YulStackAssignmentStatement.ts b/src/slang-nodes/YulStackAssignmentStatement.ts index edef0ef29..bc237275c 100644 --- a/src/slang-nodes/YulStackAssignmentStatement.ts +++ b/src/slang-nodes/YulStackAssignmentStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedItem } from '../slang-printers/print-separated-item.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; @@ -10,8 +10,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class YulStackAssignmentStatement extends SlangNode { readonly kind = NonterminalKind.YulStackAssignmentStatement; diff --git a/src/slang-nodes/YulSwitchCases.ts b/src/slang-nodes/YulSwitchCases.ts index 26b64c1f3..9eb34bca8 100644 --- a/src/slang-nodes/YulSwitchCases.ts +++ b/src/slang-nodes/YulSwitchCases.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline, join } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { YulSwitchCase } from './YulSwitchCase.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { hardline, join } = doc.builders; - export class YulSwitchCases extends SlangNode { readonly kind = NonterminalKind.YulSwitchCases; diff --git a/src/slang-nodes/YulSwitchStatement.ts b/src/slang-nodes/YulSwitchStatement.ts index fa4914415..0ae6dea25 100644 --- a/src/slang-nodes/YulSwitchStatement.ts +++ b/src/slang-nodes/YulSwitchStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { hardline } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { YulExpression } from './YulExpression.js'; @@ -9,8 +9,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { hardline } = doc.builders; - export class YulSwitchStatement extends SlangNode { readonly kind = NonterminalKind.YulSwitchStatement; diff --git a/src/slang-nodes/YulVariableAssignmentStatement.ts b/src/slang-nodes/YulVariableAssignmentStatement.ts index e73d39fa0..389966f57 100644 --- a/src/slang-nodes/YulVariableAssignmentStatement.ts +++ b/src/slang-nodes/YulVariableAssignmentStatement.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { join } from '../slang-printers/prettier-builders.js'; import { extractVariant } from '../slang-utils/extract-variant.js'; import { SlangNode } from './SlangNode.js'; import { YulPaths } from './YulPaths.js'; @@ -10,8 +10,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { join } = doc.builders; - export class YulVariableAssignmentStatement extends SlangNode { readonly kind = NonterminalKind.YulVariableAssignmentStatement; diff --git a/src/slang-nodes/YulVariableNames.ts b/src/slang-nodes/YulVariableNames.ts index 24797a0a8..980cf9999 100644 --- a/src/slang-nodes/YulVariableNames.ts +++ b/src/slang-nodes/YulVariableNames.ts @@ -1,5 +1,5 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { line } from '../slang-printers/prettier-builders.js'; import { printSeparatedList } from '../slang-printers/print-separated-list.js'; import { SlangNode } from './SlangNode.js'; import { TerminalNode } from './TerminalNode.js'; @@ -8,8 +8,6 @@ import type * as ast from '@nomicfoundation/slang/ast'; import type { AstPath, Doc } from 'prettier'; import type { CollectedMetadata, PrintFunction } from '../types.d.ts'; -const { line } = doc.builders; - export class YulVariableNames extends SlangNode { readonly kind = NonterminalKind.YulVariableNames; diff --git a/src/slang-printers/create-binary-operation-printer.ts b/src/slang-printers/create-binary-operation-printer.ts index 1dc5976c7..418f7157d 100644 --- a/src/slang-printers/create-binary-operation-printer.ts +++ b/src/slang-printers/create-binary-operation-printer.ts @@ -1,13 +1,11 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { isBinaryOperation } from '../slang-utils/is-binary-operation.js'; +import { group, line } from './prettier-builders.js'; import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { BinaryOperation, PrintableNode } from '../slang-nodes/types.d.ts'; import type { PrintFunction } from '../types.d.ts'; -const { group, line } = doc.builders; - function rightOperandPrint( { operator, leftOperand }: BinaryOperation, print: PrintFunction, diff --git a/src/slang-printers/prettier-builders.ts b/src/slang-printers/prettier-builders.ts new file mode 100644 index 000000000..353a6df7a --- /dev/null +++ b/src/slang-printers/prettier-builders.ts @@ -0,0 +1,15 @@ +import { doc } from 'prettier'; + +export const { + dedent, + group, + hardline, + ifBreak, + indent, + indentIfBreak, + join, + label, + line, + literalline, + softline +} = doc.builders; diff --git a/src/slang-printers/print-binary-operation.ts b/src/slang-printers/print-binary-operation.ts index 27d0068f8..b90cdbe61 100644 --- a/src/slang-printers/print-binary-operation.ts +++ b/src/slang-printers/print-binary-operation.ts @@ -1,15 +1,13 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { createKindCheckFunction } from '../slang-utils/create-kind-check-function.js'; import { isBinaryOperation } from '../slang-utils/is-binary-operation.js'; +import { group, indent } from './prettier-builders.js'; import { createBinaryOperationPrinter } from './create-binary-operation-printer.js'; import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { BinaryOperation, PrintableNode } from '../slang-nodes/types.d.ts'; import type { PrintFunction } from '../types.d.ts'; -const { group, indent } = doc.builders; - export const binaryGroupRulesBuilder = (shouldGroup: (node: BinaryOperation) => boolean) => (path: AstPath) => diff --git a/src/slang-printers/print-block-comment.ts b/src/slang-printers/print-block-comment.ts index dfc8ce38d..c9185cac1 100644 --- a/src/slang-printers/print-block-comment.ts +++ b/src/slang-printers/print-block-comment.ts @@ -1,10 +1,8 @@ -import { doc } from 'prettier'; +import { hardline, join, literalline } from './prettier-builders.js'; import type { Doc } from 'prettier'; import type { BlockComment } from '../slang-nodes/types.d.ts'; -const { hardline, join, literalline } = doc.builders; - function trimmedIndentableLines(lines: string[]): string[] | undefined { // If the comment has multiple lines and every line starts with a star // we can fix the indentation of each line. diff --git a/src/slang-printers/print-comments.ts b/src/slang-printers/print-comments.ts index 25db35c20..f8a0de08e 100644 --- a/src/slang-printers/print-comments.ts +++ b/src/slang-printers/print-comments.ts @@ -1,12 +1,11 @@ -import { doc, util } from 'prettier'; import { printComment } from '../slang-comments/printer.js'; +import { isNextLineEmpty } from '../slang-utils/prettier-utils.js'; import { locEnd } from '../slang-utils/loc.js'; +import { hardline } from './prettier-builders.js'; import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { Comment, PrintableNode } from '../slang-nodes/types.d.ts'; -const { hardline } = doc.builders; - function isPrintable(comment: Comment): boolean { return !comment.trailing && !comment.leading && !comment.printed; } @@ -30,7 +29,7 @@ export function printComments( index !== lastPrintableIndex ? [ hardline, - util.isNextLineEmpty(options.originalText, locEnd(comment)) + isNextLineEmpty(options.originalText, locEnd(comment)) ? hardline : '' ] diff --git a/src/slang-printers/print-function.ts b/src/slang-printers/print-function.ts index dc895148a..a6ba7fec3 100644 --- a/src/slang-printers/print-function.ts +++ b/src/slang-printers/print-function.ts @@ -1,12 +1,10 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; +import { dedent, group, indent, line } from './prettier-builders.js'; import type { Doc } from 'prettier'; import type { FunctionLike, FunctionWithBody } from '../slang-nodes/types.d.ts'; import type { PrintFunction } from '../types.d.ts'; -const { dedent, group, indent, line } = doc.builders; - export function printFunction( functionName: Doc, node: FunctionLike, diff --git a/src/slang-printers/print-group-and-indent-if-break-pair.ts b/src/slang-printers/print-group-and-indent-if-break-pair.ts index 222d4be03..1387039f7 100644 --- a/src/slang-printers/print-group-and-indent-if-break-pair.ts +++ b/src/slang-printers/print-group-and-indent-if-break-pair.ts @@ -1,8 +1,6 @@ -import { doc } from 'prettier'; +import { group, indentIfBreak } from './prettier-builders.js'; -import type { Doc } from 'prettier'; - -const { group, indentIfBreak } = doc.builders; +import type { Doc, doc } from 'prettier'; export function printGroupAndIndentIfBreakPair( groupDoc: Doc, diff --git a/src/slang-printers/print-indented-group-or-spaced-document.ts b/src/slang-printers/print-indented-group-or-spaced-document.ts index eedea56c7..61c87cace 100644 --- a/src/slang-printers/print-indented-group-or-spaced-document.ts +++ b/src/slang-printers/print-indented-group-or-spaced-document.ts @@ -1,8 +1,6 @@ -import { doc } from 'prettier'; +import { group, indent, line } from './prettier-builders.js'; -import type { Doc } from 'prettier'; - -const { group, indent, line } = doc.builders; +import type { Doc, doc } from 'prettier'; export function printIndentedGroupOrSpacedDocument( document: Doc, diff --git a/src/slang-printers/print-logical-operation.ts b/src/slang-printers/print-logical-operation.ts index cb48acd6b..325ca89c9 100644 --- a/src/slang-printers/print-logical-operation.ts +++ b/src/slang-printers/print-logical-operation.ts @@ -1,6 +1,6 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc } from 'prettier'; import { isBinaryOperation } from '../slang-utils/is-binary-operation.js'; +import { indent } from './prettier-builders.js'; import { createBinaryOperationPrinter } from './create-binary-operation-printer.js'; import { binaryGroupRulesBuilder, @@ -10,8 +10,6 @@ import { import type { AstPath, Doc } from 'prettier'; import type { BinaryOperation, PrintableNode } from '../slang-nodes/types.d.ts'; -const { indent } = doc.builders; - const logicalGroupRulesBuilder = binaryGroupRulesBuilder(() => false); const logicalIndentRulesBuilder = diff --git a/src/slang-printers/print-preserving-empty-lines.ts b/src/slang-printers/print-preserving-empty-lines.ts index 74151be65..c5febcfd7 100644 --- a/src/slang-printers/print-preserving-empty-lines.ts +++ b/src/slang-printers/print-preserving-empty-lines.ts @@ -1,6 +1,7 @@ import { NonterminalKind } from '@nomicfoundation/slang/cst'; -import { doc, util } from 'prettier'; +import { isNextLineEmpty } from '../slang-utils/prettier-utils.js'; import { locEnd } from '../slang-utils/loc.js'; +import { hardline } from './prettier-builders.js'; import { printComments } from './print-comments.js'; import { printSeparatedItem } from './print-separated-item.js'; @@ -8,8 +9,6 @@ import type { AstPath, Doc, ParserOptions } from 'prettier'; import type { LineCollection, PrintableNode } from '../slang-nodes/types.d.ts'; import type { PrintFunction } from '../types.d.ts'; -const { hardline } = doc.builders; - export function printPreservingEmptyLines( node: LineCollection, path: AstPath, @@ -30,7 +29,7 @@ export function printPreservingEmptyLines( !isLast && // Append an empty line if the original text already had an one after the // current `node` - util.isNextLineEmpty(options.originalText, locEnd(node)) + isNextLineEmpty(options.originalText, locEnd(node)) ? hardline : '' ]; diff --git a/src/slang-printers/print-separated-item.ts b/src/slang-printers/print-separated-item.ts index 34912723e..c2e27877b 100644 --- a/src/slang-printers/print-separated-item.ts +++ b/src/slang-printers/print-separated-item.ts @@ -1,10 +1,8 @@ -import { doc } from 'prettier'; +import { group, hardline, indent, softline } from './prettier-builders.js'; -import type { Doc } from 'prettier'; +import type { Doc, doc } from 'prettier'; import type { PrintSeparatedOptions } from './types.d.ts'; -const { group, hardline, indent, softline } = doc.builders; - // This function will add an indentation to the `item` and separate it from the // rest of the `doc` in most cases by a `softline`. export function printSeparatedItem( diff --git a/src/slang-printers/print-separated-list.ts b/src/slang-printers/print-separated-list.ts index 3d07b3dbf..383a201b5 100644 --- a/src/slang-printers/print-separated-list.ts +++ b/src/slang-printers/print-separated-list.ts @@ -1,11 +1,9 @@ -import { doc } from 'prettier'; +import { join, line } from './prettier-builders.js'; import { printSeparatedItem } from './print-separated-item.js'; -import type { Doc } from 'prettier'; +import type { Doc, doc } from 'prettier'; import type { PrintSeparatedOptions } from './types.d.ts'; -const { join, line } = doc.builders; - // This function will add an indentation to the `list` and separate it from the // rest of the `doc` in most cases by a `softline`. // the list itself will be printed with a separator that in most cases is a diff --git a/src/slang-printers/print-string.ts b/src/slang-printers/print-string.ts index aa0dc2b3b..bdc27c59e 100644 --- a/src/slang-printers/print-string.ts +++ b/src/slang-printers/print-string.ts @@ -1,6 +1,6 @@ -import { util } from 'prettier'; +import { makeString } from '../slang-utils/prettier-utils.js'; -import type { ParserOptions } from 'prettier'; +import type { ParserOptions, util } from 'prettier'; import type { PrintableNode } from '../slang-nodes/types.d.ts'; const SINGLE_QUOTE: util.Quote = "'"; @@ -30,5 +30,5 @@ export function printString( // is enclosed with `enclosingQuote`, but it isn't. The string could contain // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes // sure that we consistently output the minimum amount of escaped quotes. - return util.makeString(rawContent, enclosingQuote); + return makeString(rawContent, enclosingQuote); } diff --git a/src/slang-utils/prettier-utils.ts b/src/slang-utils/prettier-utils.ts new file mode 100644 index 000000000..459d8a675 --- /dev/null +++ b/src/slang-utils/prettier-utils.ts @@ -0,0 +1,10 @@ +import { util } from 'prettier'; + +export const { + addDanglingComment, + addLeadingComment, + addTrailingComment, + getNextNonSpaceNonCommentCharacter, + isNextLineEmpty, + makeString +} = util;