UNPKG

@abaplint/transpiler

Version:
33 lines 1.58 kB
"use strict"; 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