UNPKG

@solvprotocol/upgrade-safe-transpiler

Version:

Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.

35 lines 1.39 kB
"use strict"; 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