@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
35 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseNewExpression = void 0;
function parseNewExpression(expr) {
let needsCast = false;
if (expr.nodeType === 'FunctionCall' && expr.kind === 'typeConversion') {
if (expr.expression.nodeType === 'ElementaryTypeNameExpression' &&
expr.expression.typeName.name === 'address') {
expr = expr.arguments[0];
needsCast = true;
}
}
if (expr.nodeType === 'FunctionCall' && expr.expression.nodeType === 'NewExpression') {
const functionCall = expr;
const { arguments: args } = expr;
const { typeName } = expr.expression;
if (typeName.nodeType !== 'UserDefinedTypeName') {
return undefined;
}
const initializeCall = (varName, helper) => [
...(needsCast ? [helper.read(typeName), '(', varName, ')'] : varName),
'.initialize',
'(',
functionCall.arguments.map(a => helper.read(a)).join(', '),
')',
].join('');
const newCall = (helper) => {
const n = `new ${helper.read(typeName)}()`;
return needsCast ? `address(${n})` : n;
};
return { typeName, args, initializeCall, newCall };
}
}
exports.parseNewExpression = parseNewExpression;
//# sourceMappingURL=new-expression.js.map