@abaplint/transpiler 2.1.75 → 2.1.77

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.
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MethodCallTranspiler = void 0;
4
4
  const core_1 = require("@abaplint/core");
5
+ const traversal_1 = require("../traversal");
5
6
  const method_call_param_1 = require("./method_call_param");
6
7
  const chunk_1 = require("../chunk");
7
8
  class MethodCallTranspiler {
@@ -27,7 +28,7 @@ class MethodCallTranspiler {
27
28
  throw new Error("MethodCallTranspiler, unexpected node");
28
29
  }
29
30
  const ret = new chunk_1.Chunk();
30
- ret.append(name.replace("~", "$"), nameToken, traversal);
31
+ ret.append(traversal_1.Traversal.escapeClassName(name.replace("~", "$")), nameToken, traversal);
31
32
  ret.appendChunk(new method_call_param_1.MethodCallParamTranspiler(m === null || m === void 0 ? void 0 : m.def).transpile(step, traversal));
32
33
  ret.appendString(")");
33
34
  return ret;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MethodCallChainTranspiler = void 0;
4
4
  const core_1 = require("@abaplint/core");
5
+ const traversal_1 = require("../traversal");
5
6
  const chunk_1 = require("../chunk");
6
7
  class MethodCallChainTranspiler {
7
8
  transpile(node, traversal) {
@@ -29,7 +30,7 @@ class MethodCallChainTranspiler {
29
30
  ret = new chunk_1.Chunk().append(traversal.lookupClassOrInterface(c.getFirstToken().getStr(), c.getFirstToken()), c, traversal);
30
31
  }
31
32
  else if (c instanceof core_1.Nodes.ExpressionNode && c.get() instanceof core_1.Expressions.MethodName) {
32
- const name = c.getFirstToken().getStr().toLowerCase().replace("~", "$");
33
+ const name = traversal_1.Traversal.escapeClassName(c.getFirstToken().getStr().toLowerCase().replace("~", "$"));
33
34
  ret.append(name, c, traversal);
34
35
  }
35
36
  else if (c instanceof core_1.Nodes.TokenNode && c.getFirstToken().getStr() === "->") {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MethodSourceTranspiler = void 0;
4
4
  /* eslint-disable max-len */
5
5
  const core_1 = require("@abaplint/core");
6
+ const traversal_1 = require("../traversal");
6
7
  const chunk_1 = require("../chunk");
7
8
  const _1 = require(".");
8
9
  class MethodSourceTranspiler {
@@ -64,7 +65,7 @@ class MethodSourceTranspiler {
64
65
  if (i === 0) {
65
66
  this.prepend += "this.";
66
67
  }
67
- const methodName = child.concatTokens().toLowerCase().replace("~", "$");
68
+ const methodName = traversal_1.Traversal.escapeClassName(child.concatTokens().toLowerCase().replace("~", "$"));
68
69
  call += methodName;
69
70
  }
70
71
  else if (child.concatTokens() === "=>") {
@@ -90,11 +90,11 @@ class MethodImplementationTranspiler {
90
90
  if (method && method.isStatic()) {
91
91
  // in ABAP static methods can be called with instance arrows, "->"
92
92
  const className = (_b = (_a = scope.getParent()) === null || _a === void 0 ? void 0 : _a.getIdentifier().sname) === null || _b === void 0 ? void 0 : _b.toLowerCase();
93
- staticMethod = "async " + methodName + "(" + unique + ") {\n" +
94
- "return " + traversal_1.Traversal.escapeClassName(className) + "." + methodName + "(" + unique + ");\n" +
93
+ staticMethod = "async " + traversal_1.Traversal.escapeClassName(methodName) + "(" + unique + ") {\n" +
94
+ "return " + traversal_1.Traversal.escapeClassName(className) + "." + traversal_1.Traversal.escapeClassName(methodName) + "(" + unique + ");\n" +
95
95
  "}\n" + "static ";
96
96
  }
97
- const str = staticMethod + "async " + methodName + "(" + unique + ") {" + after;
97
+ const str = staticMethod + "async " + traversal_1.Traversal.escapeClassName(methodName) + "(" + unique + ") {" + after;
98
98
  return new chunk_1.Chunk().append(str, node, traversal);
99
99
  }
100
100
  findMethod(name, cdef, traversal) {
@@ -7,21 +7,26 @@ class MoveTranspiler {
7
7
  transpile(node, traversal) {
8
8
  var _a;
9
9
  const source = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Source));
10
- const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target));
10
+ const targets = [];
11
+ for (const t of node.findDirectExpressions(abaplint.Expressions.Target)) {
12
+ targets.push(traversal.traverse(t));
13
+ }
11
14
  const ret = new chunk_1.Chunk();
12
15
  const second = (_a = node.getChildren()[1]) === null || _a === void 0 ? void 0 : _a.concatTokens();
13
16
  if (second === "?=") {
14
17
  ret.appendString("await abap.statements.cast(")
15
- .appendChunk(target)
18
+ .appendChunk(targets[0])
16
19
  .appendString(", ")
17
20
  .appendChunk(source)
18
21
  .append(");", node.getLastToken(), traversal);
19
22
  }
20
23
  else {
21
- ret.appendChunk(target)
22
- .appendString(".set(")
23
- .appendChunk(source)
24
- .append(");", node.getLastToken(), traversal);
24
+ for (const target of targets) {
25
+ ret.appendChunk(target)
26
+ .appendString(".set(")
27
+ .appendChunk(source)
28
+ .append(");", node.getLastToken(), traversal);
29
+ }
25
30
  }
26
31
  return ret;
27
32
  }
@@ -140,7 +140,7 @@ class Traversal {
140
140
  return name;
141
141
  }
142
142
  else if (this.isClassAttribute(t)) {
143
- name = "this." + name;
143
+ name = "this." + Traversal.escapeClassName(name);
144
144
  }
145
145
  else if (this.isBuiltinVariable(t)) {
146
146
  name = "abap.builtin." + name;
@@ -306,7 +306,7 @@ class Traversal {
306
306
  if (a.getMeta().includes("static" /* abaplint.IdentifierMeta.Static */) === true) {
307
307
  continue;
308
308
  }
309
- const n = name.toLowerCase() + "$" + a.getName().toLowerCase();
309
+ const n = Traversal.escapeClassName(name.toLowerCase()) + "$" + a.getName().toLowerCase();
310
310
  ret += "this." + n + " = " + new transpile_types_1.TranspileTypes().toType(a.getType()) + ";\n";
311
311
  }
312
312
  for (const i of (intf === null || intf === void 0 ? void 0 : intf.getImplementing()) || []) {
@@ -38,7 +38,7 @@ exports.config = {
38
38
  "ambiguous_statement": true,
39
39
  "implement_methods": true,
40
40
  "begin_end_names": true,
41
- "no_chained_assignment": true,
41
+ // "no_chained_assignment": true,
42
42
  "check_syntax": true,
43
43
  "form_no_dash": true,
44
44
  "omit_preceding_zeros": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.1.75",
3
+ "version": "2.1.77",
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.93.28",
31
+ "@abaplint/core": "^2.93.29",
32
32
  "source-map": "^0.7.4"
33
33
  },
34
34
  "devDependencies": {