@abaplint/transpiler
Version:
33 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.IncludeTranspiler = void 0;
const abaplint = require("@abaplint/core");
const traversal_1 = require("../traversal");
const chunk_1 = require("../chunk");
const rearranger_1 = require("../rearranger");
class IncludeTranspiler {
transpile(node, traversal) {
const includeName = node.findDirectExpression(abaplint.Expressions.IncludeName)?.concatTokens();
if (includeName === undefined) {
throw new Error("INCLUDE, IncludeName not found");
}
const obj = traversal.getCurrentObject();
if (obj instanceof abaplint.Objects.FunctionGroup) {
if (includeName.toUpperCase().endsWith("XX") === false) {
const include = obj.getInclude(includeName);
if (include === undefined) {
throw new Error(`Include ${includeName} not found`);
}
const sub = new traversal_1.Traversal(traversal.getSpaghetti(), include, traversal.getCurrentObject(), traversal.reg, traversal.options);
const rearranged = new rearranger_1.Rearranger().run(obj.getType(), include.getStructure());
const chunk = sub.traverse(rearranged);
// console.dir(chunk.getCode());
return chunk;
}
}
// todo, this will not work
return new chunk_1.Chunk("// transpiler TODO: INCLUDE " + includeName + "\n");
}
}
exports.IncludeTranspiler = IncludeTranspiler;
//# sourceMappingURL=include.js.map