@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
- const clas = traversal.lookupClassOrInterface(name, node.getFirstToken(), directGlobal);
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
- ret += `if (${clas} === undefined) { throw new ${cx}; }\n`;
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);
@@ -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
- private buildPrefix;
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;
@@ -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}-${(_a = def === null || def === void 0 ? void 0 : def.getName()) === null || _a === void 0 ? void 0 : _a.toUpperCase()}`;
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.6.32",
3
+ "version": "2.6.34",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",