@abaplint/transpiler 2.0.34 → 2.0.37

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.
@@ -4,4 +4,5 @@ import { Traversal } from "../traversal";
4
4
  import { Chunk } from "../chunk";
5
5
  export declare class DataTranspiler implements IStatementTranspiler {
6
6
  transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
+ static buildValue(node: abaplint.Nodes.StatementNode, name: string, traversal: Traversal): string;
7
8
  }
@@ -21,6 +21,16 @@ class DataTranspiler {
21
21
  if (found === undefined) {
22
22
  throw new Error("DataTranspiler, var not found, \"" + token.getStr() + "\"");
23
23
  }
24
+ const value = DataTranspiler.buildValue(node, found.getName().toLowerCase(), traversal);
25
+ const ret = new chunk_1.Chunk()
26
+ .appendString("let ")
27
+ .append(found.getName().toLowerCase(), token, traversal)
28
+ .appendString(" = " + new transpile_types_1.TranspileTypes().toType(found.getType()))
29
+ .append(";", node.getLastToken(), traversal)
30
+ .append(value, node.getLastToken(), traversal);
31
+ return ret;
32
+ }
33
+ static buildValue(node, name, traversal) {
24
34
  let value = "";
25
35
  const val = node.findFirstExpression(abaplint.Expressions.Value);
26
36
  if (val) {
@@ -30,20 +40,14 @@ class DataTranspiler {
30
40
  }
31
41
  if (int) {
32
42
  const escaped = new constant_1.ConstantTranspiler().escape(int.concatTokens());
33
- value = "\n" + found.getName().toLowerCase() + ".set(" + escaped + ");";
43
+ value = "\n" + name + ".set(" + escaped + ");";
34
44
  }
35
45
  else if (val.getChildren()[1].get() instanceof abaplint.Expressions.SimpleFieldChain) {
36
46
  const s = new expressions_1.FieldChainTranspiler().transpile(val.getChildren()[1], traversal).getCode();
37
- value = "\n" + found.getName().toLowerCase() + ".set(" + s + ");";
47
+ value = "\n" + name + ".set(" + s + ");";
38
48
  }
39
49
  }
40
- const ret = new chunk_1.Chunk()
41
- .appendString("let ")
42
- .append(found.getName().toLowerCase(), token, traversal)
43
- .appendString(" = " + new transpile_types_1.TranspileTypes().toType(found.getType()))
44
- .append(";", node.getLastToken(), traversal)
45
- .append(value, node.getLastToken(), traversal);
46
- return ret;
50
+ return value;
47
51
  }
48
52
  }
49
53
  exports.DataTranspiler = DataTranspiler;
@@ -6,11 +6,19 @@ const statements_1 = require("../statements");
6
6
  const chunk_1 = require("../chunk");
7
7
  class DataTranspiler {
8
8
  transpile(node, traversal) {
9
+ var _a, _b;
9
10
  const begin = node.findDirectStatement(abaplint.Statements.DataBegin);
10
11
  if (begin === undefined) {
11
12
  return new chunk_1.Chunk("");
12
13
  }
14
+ const topName = (_a = begin.findDirectExpression(abaplint.Expressions.DefinitionName)) === null || _a === void 0 ? void 0 : _a.concatTokens().toLowerCase();
13
15
  const chunk = new statements_1.DataTranspiler().transpile(begin, traversal);
16
+ for (const d of node.findDirectStatements(abaplint.Statements.Data)) {
17
+ const subName = (_b = d.findFirstExpression(abaplint.Expressions.DefinitionName)) === null || _b === void 0 ? void 0 : _b.concatTokens().toLowerCase();
18
+ if (subName && topName) {
19
+ chunk.appendString(statements_1.DataTranspiler.buildValue(d, topName + ".get()." + subName, traversal));
20
+ }
21
+ }
14
22
  chunk.appendString("\n");
15
23
  return chunk;
16
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.0.34",
3
+ "version": "2.0.37",
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.91.1",
31
+ "@abaplint/core": "^2.91.2",
32
32
  "source-map": "^0.7.4"
33
33
  },
34
34
  "devDependencies": {