@gnus.ai/upgrade-safe-transpiler-diamond
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe using Diamond Pattern (EIP-2535).
35 lines (29 loc) • 1.29 kB
text/typescript
import { SourceUnit } from 'solidity-ast';
import { findAll } from 'solidity-ast/utils';
import { getNodeBounds } from '../solc/ast-utils';
import { hasConstructorOverride, hasOverride } from '../utils/upgrades-overrides';
import { Transformation } from './type';
import { TransformerTools } from '../transform';
export function* removeStateVariables(sourceUnit: SourceUnit, tools: TransformerTools): Generator<Transformation> {
for (const contractNode of findAll('ContractDefinition', sourceUnit)) {
if (hasConstructorOverride(contractNode)) {
continue;
}
for (const varDecl of findAll('VariableDeclaration', contractNode)) {
if ((varDecl.stateVariable && !varDecl.constant) &&
!hasOverride(varDecl, 'state-variable-assignment') &&
!hasOverride(varDecl, 'state-variable-immutable')) {
const vBounds = getNodeBounds(varDecl);
const vCodeStart = tools.originalSource.substring(vBounds.start);
const vCode = vCodeStart.match(/.*?;\n?/s);
const vLength = vCode === null ? vBounds.length + 1 : vCode[0].length;
yield {
start: vBounds.start,
length: vLength,
kind: 'remove-var-states',
transform: source => source.replace(/.*/s, ''),
};
}
}
}
}