@abaplint/transpiler
Version:
49 lines • 1.97 kB
JavaScript
;
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