UNPKG

prettier-plugin-solidity

Version:

A Prettier Plugin for automatically formatting your Solidity code.

71 lines 3.59 kB
import { NonterminalKind } from '@nomicfoundation/slang/cst'; import { getNodeMetadata, updateMetadata } from '../slang-utils/metadata.js'; import { UsingDirective } from './UsingDirective.js'; import { FunctionDefinition } from './FunctionDefinition.js'; import { ConstructorDefinition } from './ConstructorDefinition.js'; import { ReceiveFunctionDefinition } from './ReceiveFunctionDefinition.js'; import { FallbackFunctionDefinition } from './FallbackFunctionDefinition.js'; import { UnnamedFunctionDefinition } from './UnnamedFunctionDefinition.js'; import { ModifierDefinition } from './ModifierDefinition.js'; import { StructDefinition } from './StructDefinition.js'; import { EnumDefinition } from './EnumDefinition.js'; import { EventDefinition } from './EventDefinition.js'; import { StateVariableDefinition } from './StateVariableDefinition.js'; import { ErrorDefinition } from './ErrorDefinition.js'; import { UserDefinedValueTypeDefinition } from './UserDefinedValueTypeDefinition.js'; export class ContractMember { constructor(ast, options) { this.kind = NonterminalKind.ContractMember; let metadata = getNodeMetadata(ast); switch (ast.variant.cst.kind) { case NonterminalKind.UsingDirective: this.variant = new UsingDirective(ast.variant, options); break; case NonterminalKind.FunctionDefinition: this.variant = new FunctionDefinition(ast.variant, options); break; case NonterminalKind.ConstructorDefinition: this.variant = new ConstructorDefinition(ast.variant, options); break; case NonterminalKind.ReceiveFunctionDefinition: this.variant = new ReceiveFunctionDefinition(ast.variant, options); break; case NonterminalKind.FallbackFunctionDefinition: this.variant = new FallbackFunctionDefinition(ast.variant, options); break; case NonterminalKind.UnnamedFunctionDefinition: this.variant = new UnnamedFunctionDefinition(ast.variant, options); break; case NonterminalKind.ModifierDefinition: this.variant = new ModifierDefinition(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.EventDefinition: this.variant = new EventDefinition(ast.variant, options); break; case NonterminalKind.StateVariableDefinition: this.variant = new StateVariableDefinition(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; 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=ContractMember.js.map