UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

72 lines (64 loc) 2.63 kB
import * as ast from '@nomicfoundation/slang/ast'; import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { createNonterminalVariantSimpleCreator } from '../slang-utils/create-nonterminal-variant-creator.js'; import { SlangNode } from './SlangNode.js'; import { PragmaDirective } from './PragmaDirective.js'; import { ImportDirective } from './ImportDirective.js'; import { ContractDefinition } from './ContractDefinition.js'; import { InterfaceDefinition } from './InterfaceDefinition.js'; import { LibraryDefinition } from './LibraryDefinition.js'; import { StructDefinition } from './StructDefinition.js'; import { EnumDefinition } from './EnumDefinition.js'; import { FunctionDefinition } from './FunctionDefinition.js'; import { ConstantDefinition } from './ConstantDefinition.js'; import { ErrorDefinition } from './ErrorDefinition.js'; import { UserDefinedValueTypeDefinition } from './UserDefinedValueTypeDefinition.js'; import { UsingDirective } from './UsingDirective.js'; import { EventDefinition } from './EventDefinition.js'; import type { ParserOptions } from 'prettier'; import type { CollectedMetadata } from '../types.d.ts'; import type { AstNode } from './types.d.ts'; const createNonterminalVariant = createNonterminalVariantSimpleCreator< ast.SourceUnitMember, SourceUnitMember >([ [ast.PragmaDirective, PragmaDirective], [ast.ImportDirective, ImportDirective], [ast.ContractDefinition, ContractDefinition], [ast.InterfaceDefinition, InterfaceDefinition], [ast.LibraryDefinition, LibraryDefinition], [ast.StructDefinition, StructDefinition], [ast.EnumDefinition, EnumDefinition], [ast.FunctionDefinition, FunctionDefinition], [ast.ConstantDefinition, ConstantDefinition], [ast.ErrorDefinition, ErrorDefinition], [ast.UserDefinedValueTypeDefinition, UserDefinedValueTypeDefinition], [ast.UsingDirective, UsingDirective], [ast.EventDefinition, EventDefinition] ]); export class SourceUnitMember extends SlangNode { readonly kind = NonterminalKind.SourceUnitMember; variant: | PragmaDirective | ImportDirective | ContractDefinition | InterfaceDefinition | LibraryDefinition | StructDefinition | EnumDefinition | FunctionDefinition | ConstantDefinition | ErrorDefinition | UserDefinedValueTypeDefinition | UsingDirective | EventDefinition; constructor( ast: ast.SourceUnitMember, collected: CollectedMetadata, options: ParserOptions<AstNode> ) { super(ast, collected); this.variant = createNonterminalVariant(ast.variant, collected, options); this.updateMetadata(this.variant); } }