UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

71 lines 3.46 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.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'; export class SourceUnitMember { constructor(ast, options) { this.kind = NonterminalKind.SourceUnitMember; let metadata = getNodeMetadata(ast); switch (ast.variant.cst.kind) { case NonterminalKind.PragmaDirective: this.variant = new PragmaDirective(ast.variant, options); break; case NonterminalKind.ImportDirective: this.variant = new ImportDirective(ast.variant, options); break; case NonterminalKind.ContractDefinition: this.variant = new ContractDefinition(ast.variant, options); break; case NonterminalKind.InterfaceDefinition: this.variant = new InterfaceDefinition(ast.variant, options); break; case NonterminalKind.LibraryDefinition: this.variant = new LibraryDefinition(ast.variant, options); break; case NonterminalKind.StructDefinition: this.variant = new StructDefinition(ast.variant, options); break; case NonterminalKind.EnumDefinition: this.variant = new EnumDefinition(ast.variant); break; case NonterminalKind.FunctionDefinition: this.variant = new FunctionDefinition(ast.variant, options); break; case NonterminalKind.ConstantDefinition: this.variant = new ConstantDefinition(ast.variant, options); break; case NonterminalKind.ErrorDefinition: this.variant = new ErrorDefinition(ast.variant, options); break; case NonterminalKind.UserDefinedValueTypeDefinition: this.variant = new UserDefinedValueTypeDefinition(ast.variant); break; case NonterminalKind.UsingDirective: this.variant = new UsingDirective(ast.variant, options); break; case NonterminalKind.EventDefinition: this.variant = new EventDefinition(ast.variant, options); break; default: throw new Error(`Unexpected variant: ${ast.variant.cst.kind}`); } metadata = updateMetadata(metadata, [this.variant]); this.comments = metadata.comments; this.loc = metadata.loc; } print(path, print) { return path.call(print, 'variant'); } } //# sourceMappingURL=SourceUnitMember.js.map