@abaplint/transpiler 2.6.32 → 2.6.34
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.
|
@@ -15,6 +15,7 @@ class CallFunctionTranspiler {
|
|
|
15
15
|
if (fmchild instanceof abaplint.Nodes.ExpressionNode
|
|
16
16
|
&& fmchild.get() instanceof abaplint.Expressions.FieldChain) {
|
|
17
17
|
fmname = new expressions_1.FieldChainTranspiler(true).transpile(fmchild, traversal).getCode();
|
|
18
|
+
fmname = fmname + ".trimEnd()";
|
|
18
19
|
}
|
|
19
20
|
else {
|
|
20
21
|
fmname = fmchild.concatTokens().toUpperCase();
|
|
@@ -4,6 +4,7 @@ exports.CreateObjectTranspiler = void 0;
|
|
|
4
4
|
const abaplint = require("@abaplint/core");
|
|
5
5
|
const chunk_1 = require("../chunk");
|
|
6
6
|
const expressions_1 = require("../expressions");
|
|
7
|
+
const unique_identifier_1 = require("../unique_identifier");
|
|
7
8
|
class CreateObjectTranspiler {
|
|
8
9
|
transpile(node, traversal) {
|
|
9
10
|
var _a, _b;
|
|
@@ -18,7 +19,7 @@ class CreateObjectTranspiler {
|
|
|
18
19
|
let dynamic = (_a = node.findDirectExpression(abaplint.Expressions.Dynamic)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(abaplint.Expressions.ConstantString);
|
|
19
20
|
if (dynamic) {
|
|
20
21
|
name = dynamic.getFirstToken().getStr();
|
|
21
|
-
name = name.substring(1, name.length - 1);
|
|
22
|
+
// name = name.substring(1, name.length - 1);
|
|
22
23
|
}
|
|
23
24
|
else {
|
|
24
25
|
dynamic = (_b = node.findDirectExpression(abaplint.Expressions.Dynamic)) === null || _b === void 0 ? void 0 : _b.findFirstExpression(abaplint.Expressions.FieldChain);
|
|
@@ -31,10 +32,14 @@ class CreateObjectTranspiler {
|
|
|
31
32
|
name = this.findClassName(node, traversal);
|
|
32
33
|
}
|
|
33
34
|
let ret = "";
|
|
34
|
-
|
|
35
|
+
let clas = traversal.lookupClassOrInterface(name, node.getFirstToken(), directGlobal);
|
|
35
36
|
const cx = traversal.lookupClassOrInterface("CX_SY_CREATE_OBJECT_ERROR", node.getFirstToken());
|
|
36
37
|
if (dynamic) {
|
|
37
|
-
|
|
38
|
+
const id = unique_identifier_1.UniqueIdentifier.get();
|
|
39
|
+
ret += `let ${id} = abap.Classes["${traversal.buildPrefix()}"+${name}.trimEnd()];\n`;
|
|
40
|
+
ret += `if (${id} === undefined) { ${id} = abap.Classes[${name}.trimEnd()]; }\n`;
|
|
41
|
+
ret += `if (${id} === undefined) { throw new ${cx}; }\n`;
|
|
42
|
+
clas = id;
|
|
38
43
|
}
|
|
39
44
|
ret += target + ".set(await (new " + clas + "()).constructor_(" + para + "));";
|
|
40
45
|
return new chunk_1.Chunk(ret);
|
package/build/src/traversal.d.ts
CHANGED
|
@@ -47,7 +47,7 @@ export declare class Traversal {
|
|
|
47
47
|
static setValues(identifier: abaplint.TypedIdentifier, name: string): string;
|
|
48
48
|
buildInternalName(name: string, def: abaplint.IClassDefinition | abaplint.IInterfaceDefinition | undefined): string;
|
|
49
49
|
lookupClassOrInterface(name: string | undefined, token: abaplint.Token | undefined, directGlobal?: boolean): string;
|
|
50
|
-
|
|
50
|
+
buildPrefix(): string;
|
|
51
51
|
protected traverseStructure(node: abaplint.Nodes.StructureNode): Chunk;
|
|
52
52
|
protected traverseStatement(node: abaplint.Nodes.StatementNode): Chunk;
|
|
53
53
|
protected traverseExpression(node: abaplint.Nodes.ExpressionNode): Chunk;
|
package/build/src/traversal.js
CHANGED
|
@@ -522,7 +522,7 @@ class Traversal {
|
|
|
522
522
|
if (def) {
|
|
523
523
|
if (def.isGlobal() === false) {
|
|
524
524
|
const prefix = this.buildPrefix();
|
|
525
|
-
return `${prefix}
|
|
525
|
+
return `${prefix}${(_a = def === null || def === void 0 ? void 0 : def.getName()) === null || _a === void 0 ? void 0 : _a.toUpperCase()}`;
|
|
526
526
|
}
|
|
527
527
|
else {
|
|
528
528
|
return (_b = def === null || def === void 0 ? void 0 : def.getName()) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
@@ -547,7 +547,7 @@ class Traversal {
|
|
|
547
547
|
return "abap.Classes['" + internalName + "']";
|
|
548
548
|
}
|
|
549
549
|
buildPrefix() {
|
|
550
|
-
return this.obj.getType() + "-" + this.obj.getName();
|
|
550
|
+
return this.obj.getType() + "-" + this.obj.getName() + "-";
|
|
551
551
|
}
|
|
552
552
|
////////////////////////////
|
|
553
553
|
traverseStructure(node) {
|