@abaplint/transpiler 2.5.25 → 2.5.27

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.
@@ -3,13 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ComponentChainSimpleTranspiler = void 0;
4
4
  const core_1 = require("@abaplint/core");
5
5
  const chunk_1 = require("../chunk");
6
+ const traversal_1 = require("../traversal");
6
7
  class ComponentChainSimpleTranspiler {
7
8
  transpile(node, traversal) {
8
9
  const ret = new chunk_1.Chunk();
9
10
  for (const c of node.getChildren()) {
10
11
  const type = c.get();
11
12
  if (type instanceof core_1.Expressions.ComponentName) {
12
- ret.append(c.getFirstToken().getStr().toLowerCase(), c, traversal);
13
+ let field = c.getFirstToken().getStr().toLowerCase();
14
+ const interfaceName = traversal.isInterfaceAttribute(c.getFirstToken());
15
+ if (interfaceName && field.startsWith(interfaceName) === false) {
16
+ field = interfaceName + "$" + field;
17
+ }
18
+ field = traversal_1.Traversal.escapeNamespace(field).replace("~", "$");
19
+ ret.append(field, c, traversal);
13
20
  }
14
21
  else if (type instanceof core_1.Expressions.ArrowOrDash) {
15
22
  ret.append(".get().", c, traversal);
@@ -42,10 +42,14 @@ class MethodImplementationTranspiler {
42
42
  }
43
43
  after = after + new transpile_types_1.TranspileTypes().declare(identifier) + "\n";
44
44
  const type = identifier.getType();
45
- const charOne = type instanceof abaplint.BasicTypes.CharacterType && type.getLength() === 1;
45
+ // todo, type X is also generic in method definitions, the real fix will be in abaplint
46
+ const charGeneric = type instanceof abaplint.BasicTypes.CharacterType
47
+ && type.getLength() === 1
48
+ && type.getDDICName() === undefined
49
+ && type.getQualifiedName() === undefined;
46
50
  if (identifier.getMeta().includes("importing" /* abaplint.IdentifierMeta.MethodImporting */)
47
51
  && type.isGeneric() === false
48
- && charOne === false) {
52
+ && charGeneric === false) {
49
53
  after += "if (" + unique + " && " + unique + "." + varName + ") {" + varName + ".set(" + unique + "." + varName + ");}\n";
50
54
  }
51
55
  else {
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReadTableTranspiler = void 0;
4
4
  const abaplint = require("@abaplint/core");
5
- const traversal_1 = require("../traversal");
6
5
  const expressions_1 = require("../expressions");
7
6
  const unique_identifier_1 = require("../unique_identifier");
8
7
  const chunk_1 = require("../chunk");
@@ -55,19 +54,15 @@ class ReadTableTranspiler {
55
54
  const left = compare.getChildren()[i * 3];
56
55
  const source = compare.getChildren()[(i * 3) + 2];
57
56
  const s = traversal.traverse(source).getCode();
58
- let field = left.concatTokens().toLowerCase();
59
- while (field.includes("->")) {
60
- field = field.replace("->", ".get().");
61
- }
62
- while (field.includes("-")) {
63
- field = field.replace("-", ".get().");
64
- }
65
- field = traversal_1.Traversal.escapeNamespace(field).replace("~", "$");
57
+ let field = "";
66
58
  if (left.get() instanceof abaplint.Expressions.Dynamic
67
59
  && left instanceof abaplint.Nodes.ExpressionNode) {
68
60
  const concat = left.concatTokens().toLowerCase();
69
61
  field = concat.substring(2, concat.length - 2);
70
62
  }
63
+ else {
64
+ field = traversal.traverse(left).getCode();
65
+ }
71
66
  if (s.includes("await")) {
72
67
  const id = unique_identifier_1.UniqueIdentifier.get();
73
68
  prefix += "const " + id + " = " + s + ";\n";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.5.25",
3
+ "version": "2.5.27",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",
@@ -28,7 +28,7 @@
28
28
  "author": "abaplint",
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@abaplint/core": "^2.95.35",
31
+ "@abaplint/core": "^2.95.36",
32
32
  "source-map": "^0.7.4"
33
33
  },
34
34
  "devDependencies": {