@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
42 lines • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fixImportDirectives = void 0;
const utils_1 = require("solidity-ast/utils");
const ast_utils_1 = require("../solc/ast-utils");
const rename_1 = require("../rename");
function* fixImportDirectives(ast, { resolver }) {
for (const imp of (0, utils_1.findAll)('ImportDirective', ast)) {
const referencedSourceUnit = resolver.resolveNode('SourceUnit', imp.sourceUnit);
const aliases = imp.symbolAliases.map(a => {
var _a;
const id = (_a = referencedSourceUnit.exportedSymbols[a.foreign.name]) === null || _a === void 0 ? void 0 : _a[0];
if (id === undefined) {
throw new Error(`Can't find symbol imported in ${ast.absolutePath}`);
}
let alias = '';
const contract = resolver.resolveContract(id);
if (contract === undefined) {
alias += a.foreign.name;
}
else {
alias += (0, rename_1.renameContract)(a.foreign.name);
}
if (a.local != null && a.local !== a.foreign.name) {
alias += ` as ${a.local}`;
}
return alias;
});
const statement = ['import'];
if (aliases.length > 0) {
statement.push(`{ ${aliases.join(', ')} } from`);
}
statement.push(`"${(0, rename_1.renamePath)(imp.file)}";`);
yield {
kind: 'fix-import-directives',
text: statement.join(' '),
...(0, ast_utils_1.getNodeBounds)(imp),
};
}
}
exports.fixImportDirectives = fixImportDirectives;
//# sourceMappingURL=fix-import-directives.js.map