UNPKG

@abaplint/transpiler

Version:
49 lines 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MethodCallParamTranspiler = void 0; const core_1 = require("@abaplint/core"); const chunk_1 = require("../chunk"); class MethodCallParamTranspiler { constructor(m) { this.m = m; } transpile(node, traversal) { let name = ""; if (!(node.get() instanceof core_1.Expressions.MethodCallParam)) { throw new Error("MethodCallParam, unexpected node, " + node?.get().constructor.name); } const source = node.findDirectExpression(core_1.Expressions.Source); if (source) { const def = this.m?.getParameters().getDefaultImporting()?.toLowerCase(); if (this.m === undefined || def === undefined) { return traversal.traverse(source); } else { return new chunk_1.Chunk() .appendString("{" + def + ": ") .appendChunk(traversal.traverse(source)) .appendString("}"); } } const parameters = node.findDirectExpression(core_1.Expressions.ParameterListS); if (parameters) { return traversal.traverse(parameters); } else { const params = node.findDirectExpression(core_1.Expressions.MethodParameters); if (params) { const s = params.findDirectExpression(core_1.Expressions.ParameterListS); if (s) { name += traversal.traverse(s).getCode(); } for (const t of params.findDirectExpressions(core_1.Expressions.ParameterListT)) { name += traversal.traverse(t).getCode(); } } } name = name.replace(/}{/g, ", "); return new chunk_1.Chunk(name); } } exports.MethodCallParamTranspiler = MethodCallParamTranspiler; //# sourceMappingURL=method_call_param.js.map