@abaplint/transpiler
Version:
31 lines • 1.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReturnTranspiler = void 0;
const abaplint = require("@abaplint/core");
const traversal_1 = require("../traversal");
const chunk_1 = require("../chunk");
const unique_identifier_1 = require("../unique_identifier");
class ReturnTranspiler {
transpile(node, traversal) {
let extra = "";
const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
const vars = scope?.getData().vars;
for (const n in vars) {
const identifier = vars[n];
if (identifier.getMeta().includes("returning" /* abaplint.IdentifierMeta.MethodReturning */)) {
extra = " " + traversal_1.Traversal.prefixVariable(n.toLowerCase());
}
}
let pre = "";
if (traversal.isInsideDoOrWhile(node)) {
pre = `abap.builtin.sy.get().index.set(${unique_identifier_1.UniqueIdentifier.getIndexBackup1()});\n`;
}
if (scope?.getIdentifier().stype === abaplint.ScopeType.Method
&& scope?.getIdentifier().sname.toLowerCase() === "constructor") {
extra = " this";
}
return new chunk_1.Chunk().append(pre + "return" + extra + ";", node, traversal);
}
}
exports.ReturnTranspiler = ReturnTranspiler;
//# sourceMappingURL=return.js.map