@openzeppelin/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
20 lines (16 loc) • 817 B
text/typescript
import { ContractDefinition } from 'solidity-ast';
import { TransformerTools } from '../../transform';
import { isNodeType } from 'solidity-ast/utils';
import { contractStartPosition } from './contract-start-position';
export function newFunctionPosition(contract: ContractDefinition, tools: TransformerTools): number {
const firstFunctionIndex = contract.nodes.findIndex(isNodeType('FunctionDefinition'));
if (firstFunctionIndex <= 0) {
return contractStartPosition(contract, tools);
} else {
const prevNode = contract.nodes[firstFunctionIndex - 1];
// VariableDeclaration node bounds don't include the semicolon, so we look for it
// in case prevNode is that type of node
const m = tools.matchOriginalAfter(prevNode, /(\s*;)?([ \t\v\f]*[\n\r])*/)!;
return m.start + m.length;
}
}