UNPKG

@solvprotocol/upgrade-safe-transpiler

Version:

Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.

28 lines (22 loc) 912 B
import { ContractDefinition } from 'solidity-ast'; import { findAll } from 'solidity-ast/utils'; import { getConstructor } from '../../solc/ast-utils'; import { hasOverride } from '../../utils/upgrades-overrides'; export function getInitializerItems(contract: ContractDefinition) { const constructorNode = getConstructor(contract); const varInitNodes = [...findAll('VariableDeclaration', contract)].filter( v => v.stateVariable && v.value && !v.constant && !hasOverride(v, 'state-variable-assignment'), ); const modifiers = constructorNode?.modifiers.filter( call => !contract.linearizedBaseContracts?.includes(call.modifierName.referencedDeclaration!), ) ?? []; const emptyUnchained = !constructorNode?.body?.statements?.length && varInitNodes.length == 0 && modifiers.length == 0; return { constructorNode, varInitNodes, modifiers, emptyUnchained, }; }