@abaplint/transpiler
Version:
37 lines • 2.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CallTransformationTranspiler = void 0;
const abaplint = require("@abaplint/core");
const chunk_1 = require("../chunk");
class CallTransformationTranspiler {
transpile(node, traversal) {
const lookup = traversal.lookupClassOrInterface("KERNEL_CALL_TRANSFORMATION", node.getFirstToken());
const options = [];
const name = node.findDirectExpression(abaplint.Expressions.NamespaceSimpleName)?.concatTokens();
options.push("name: \"" + name + "\"");
const sourceXML = node.findDirectExpression(abaplint.Expressions.SimpleSource3);
if (sourceXML) {
options.push("sourceXML: " + traversal.traverse(sourceXML).getCode());
}
const resultXML = node.findDirectExpression(abaplint.Expressions.Target);
if (resultXML) {
options.push("resultXML: " + traversal.traverse(resultXML).getCode());
}
const callOptions = node.findExpressionAfterToken("OPTIONS");
if (callOptions) {
options.push("options: " + traversal.traverse(callOptions).getCode());
}
const result = node.findExpressionAfterToken("RESULT");
if (result && result.get() instanceof abaplint.Expressions.CallTransformationParameters) {
options.push("result: " + traversal.traverse(result).getCode());
}
const source = node.findExpressionAfterToken("SOURCE");
if (source && source.get() instanceof abaplint.Expressions.CallTransformationParameters) {
options.push("source: " + traversal.traverse(source).getCode());
}
const call = `await ${lookup}.call({${options.join(",")}});`;
return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("CallTransformation, kernel class missing");\n${call}`, node, traversal);
}
}
exports.CallTransformationTranspiler = CallTransformationTranspiler;
//# sourceMappingURL=call_transformation.js.map