@abaplint/transpiler 2.2.11 → 2.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -28,10 +28,14 @@ class FieldChainTranspiler {
|
|
|
28
28
|
}
|
|
29
29
|
else if (c.get() instanceof core_1.Expressions.AttributeName) {
|
|
30
30
|
const interfaceName = traversal.isInterfaceAttribute(c.getFirstToken());
|
|
31
|
-
let name =
|
|
31
|
+
let name = c.getFirstToken().getStr().toLowerCase();
|
|
32
32
|
if (prefix && interfaceName && name.startsWith(interfaceName) === false) {
|
|
33
|
+
name = traversal_1.Traversal.escapeClassName(name).replace("~", "$");
|
|
33
34
|
name = traversal_1.Traversal.escapeClassName(interfaceName) + "$" + name;
|
|
34
35
|
}
|
|
36
|
+
else {
|
|
37
|
+
name = traversal_1.Traversal.escapeClassName(name).replace("~", "$");
|
|
38
|
+
}
|
|
35
39
|
ret.append(name, c, traversal);
|
|
36
40
|
}
|
|
37
41
|
else if (c instanceof core_1.Nodes.ExpressionNode && c.get() instanceof core_1.Expressions.Dereference) {
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import * as abaplint from "@abaplint/core";
|
|
1
2
|
import { Nodes } from "@abaplint/core";
|
|
2
3
|
import { IExpressionTranspiler } from "./_expression_transpiler";
|
|
3
4
|
import { Traversal } from "../traversal";
|
|
4
5
|
import { Chunk } from "../chunk";
|
|
5
6
|
export declare class MethodCallBodyTranspiler implements IExpressionTranspiler {
|
|
7
|
+
private readonly m;
|
|
8
|
+
constructor(m?: abaplint.Types.MethodDefinition);
|
|
6
9
|
transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
|
|
7
10
|
}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MethodCallBodyTranspiler = void 0;
|
|
4
|
+
const abaplint = require("@abaplint/core");
|
|
4
5
|
const core_1 = require("@abaplint/core");
|
|
5
6
|
const chunk_1 = require("../chunk");
|
|
7
|
+
const method_call_param_1 = require("./method_call_param");
|
|
6
8
|
class MethodCallBodyTranspiler {
|
|
9
|
+
constructor(m) {
|
|
10
|
+
this.m = m;
|
|
11
|
+
}
|
|
7
12
|
transpile(node, traversal) {
|
|
8
13
|
const ret = new chunk_1.Chunk();
|
|
9
14
|
for (const c of node.getChildren()) {
|
|
@@ -11,6 +16,9 @@ class MethodCallBodyTranspiler {
|
|
|
11
16
|
// PARAMETER-TABLE
|
|
12
17
|
continue;
|
|
13
18
|
}
|
|
19
|
+
else if (c.get() instanceof abaplint.Expressions.MethodCallParam) {
|
|
20
|
+
ret.appendChunk(new method_call_param_1.MethodCallParamTranspiler(this.m).transpile(c, traversal));
|
|
21
|
+
}
|
|
14
22
|
else {
|
|
15
23
|
ret.appendChunk(traversal.traverse(c));
|
|
16
24
|
}
|
|
@@ -6,7 +6,7 @@ const chunk_1 = require("../chunk");
|
|
|
6
6
|
const expressions_1 = require("../expressions");
|
|
7
7
|
class CallTranspiler {
|
|
8
8
|
transpile(node, traversal) {
|
|
9
|
-
var _a, _b, _c, _d;
|
|
9
|
+
var _a, _b, _c, _d, _e;
|
|
10
10
|
const chain = node.findDirectExpression(abaplint.Expressions.MethodCallChain);
|
|
11
11
|
if (chain) {
|
|
12
12
|
let pre = "";
|
|
@@ -59,13 +59,15 @@ if (e.classic) {
|
|
|
59
59
|
const methodSource = node.findDirectExpression(abaplint.Expressions.MethodSource);
|
|
60
60
|
if (methodSource) {
|
|
61
61
|
let body = "";
|
|
62
|
+
const nameToken = (_d = methodSource.getLastChild()) === null || _d === void 0 ? void 0 : _d.getFirstToken();
|
|
63
|
+
const m = nameToken ? traversal.findMethodReference(nameToken, traversal.findCurrentScopeByToken(nameToken)) : undefined;
|
|
62
64
|
const methodCallBody = node.findDirectExpression(abaplint.Expressions.MethodCallBody);
|
|
63
65
|
if (methodCallBody) {
|
|
64
|
-
body =
|
|
66
|
+
body = new expressions_1.MethodCallBodyTranspiler(m === null || m === void 0 ? void 0 : m.def).transpile(methodCallBody, traversal).getCode();
|
|
65
67
|
}
|
|
66
68
|
let pre = "";
|
|
67
69
|
let post = "";
|
|
68
|
-
const receiving = (
|
|
70
|
+
const receiving = (_e = node.findFirstExpression(abaplint.Expressions.MethodParameters)) === null || _e === void 0 ? void 0 : _e.findExpressionAfterToken("RECEIVING");
|
|
69
71
|
if (receiving) {
|
|
70
72
|
const target = traversal.traverse(receiving.findDirectExpression(abaplint.Expressions.Target));
|
|
71
73
|
pre = target.getCode() + ".set(";
|