@abaplint/transpiler 2.10.48 → 2.10.49

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.
@@ -5,7 +5,8 @@ import { IExpressionTranspiler } from "./_expression_transpiler";
5
5
  export declare class ConstantTranspiler implements IExpressionTranspiler {
6
6
  private readonly addGet;
7
7
  constructor(addGet?: boolean);
8
+ private handleInteger;
8
9
  transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
9
- private character;
10
+ private handleCharacter;
10
11
  static escape(str: string): string;
11
12
  }
@@ -7,30 +7,33 @@ class ConstantTranspiler {
7
7
  constructor(addGet = false) {
8
8
  this.addGet = addGet;
9
9
  }
10
+ handleInteger(int, traversal) {
11
+ const concat = int.concatTokens().trim();
12
+ const parsed = Number.parseInt(concat, 10);
13
+ let code = "";
14
+ if (concat.length > 18) {
15
+ // its potentially larger than Number.MAX_SAFE_INTEGER
16
+ // https://stackoverflow.com/questions/1379934/large-numbers-erroneously-rounded-in-javascript
17
+ code = `new abap.types.Integer8().set("${concat}")`;
18
+ }
19
+ else if (parsed > 2147483647 || parsed < -2147483648) {
20
+ code = `new abap.types.Integer8().set("${concat}")`;
21
+ }
22
+ else if (parsed >= -10 && parsed <= 200) {
23
+ code = `abap.IntegerFactory.get(${concat})`;
24
+ }
25
+ else {
26
+ code = `new abap.types.Integer().set(${concat})`;
27
+ }
28
+ if (this.addGet === true) {
29
+ code += ".get()";
30
+ }
31
+ return new chunk_1.Chunk().append(code, int, traversal);
32
+ }
10
33
  transpile(node, traversal) {
11
34
  const int = node.findFirstExpression(core_1.Expressions.Integer);
12
35
  if (int) {
13
- const concat = int.concatTokens().trim();
14
- const parsed = Number.parseInt(concat, 10);
15
- let code = "";
16
- if (concat.length > 18) {
17
- // its potentially larger than Number.MAX_SAFE_INTEGER
18
- // https://stackoverflow.com/questions/1379934/large-numbers-erroneously-rounded-in-javascript
19
- code = `new abap.types.Integer8().set("${concat}")`;
20
- }
21
- else if (parsed > 2147483647 || parsed < -2147483648) {
22
- code = `new abap.types.Integer8().set("${concat}")`;
23
- }
24
- else if (parsed >= -10 && parsed <= 200) {
25
- code = `abap.IntegerFactory.get(${concat})`;
26
- }
27
- else {
28
- code = `new abap.types.Integer().set(${concat})`;
29
- }
30
- if (this.addGet === true) {
31
- code += ".get()";
32
- }
33
- return new chunk_1.Chunk().append(code, node, traversal);
36
+ return this.handleInteger(int, traversal);
34
37
  }
35
38
  let str = node.findDirectExpression(core_1.Expressions.ConstantString);
36
39
  if (str === undefined) {
@@ -39,7 +42,7 @@ class ConstantTranspiler {
39
42
  if (str) {
40
43
  let res = str.getFirstToken().getStr();
41
44
  if (res.startsWith("'") && this.addGet === false) {
42
- const code = this.character(res);
45
+ const code = this.handleCharacter(res);
43
46
  return new chunk_1.Chunk().append(code, node, traversal);
44
47
  }
45
48
  else if (res.startsWith("`") && this.addGet === false) {
@@ -67,7 +70,7 @@ class ConstantTranspiler {
67
70
  chunk.appendString(",");
68
71
  }
69
72
  if (res.startsWith("'") && this.addGet === false) {
70
- const code = this.character(res);
73
+ const code = this.handleCharacter(res);
71
74
  chunk.append(code, node, traversal);
72
75
  }
73
76
  else if (res.startsWith("`") && this.addGet === false) {
@@ -80,14 +83,15 @@ class ConstantTranspiler {
80
83
  }
81
84
  return new chunk_1.Chunk(`todo, Constant`);
82
85
  }
83
- character(res) {
86
+ handleCharacter(res) {
84
87
  const foo = res.replace(/''/g, "'");
85
88
  let length = foo.length - 2;
86
89
  if (length <= 0) {
87
90
  // note: Characters cannot have length = zero, 1 is minimum
88
91
  length = 1;
89
92
  }
90
- const code = "new abap.types.Character(" + length + ").set(" + ConstantTranspiler.escape(res) + ")";
93
+ const code = "abap.CharacterFactory.get(" + length + ", " + ConstantTranspiler.escape(res) + ")";
94
+ // const code = "new abap.types.Character(" + length + ").set(" + ConstantTranspiler.escape(res) + ")";
91
95
  return code;
92
96
  }
93
97
  static escape(str) {
@@ -7,9 +7,8 @@ class ClearTranspiler {
7
7
  transpile(node, traversal) {
8
8
  const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target));
9
9
  const ret = new chunk_1.Chunk();
10
- ret.append("abap.statements.clear(", node, traversal);
11
10
  ret.appendChunk(target);
12
- ret.append(");", node.getLastToken(), traversal);
11
+ ret.append(".clear();", node.getLastToken(), traversal);
13
12
  return ret;
14
13
  }
15
14
  }
@@ -1,16 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RefreshTranspiler = void 0;
4
- const abaplint = require("@abaplint/core");
5
- const chunk_1 = require("../chunk");
4
+ const clear_1 = require("./clear");
6
5
  class RefreshTranspiler {
7
6
  transpile(node, traversal) {
8
- const target = traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target));
9
- const ret = new chunk_1.Chunk();
10
- ret.append("abap.statements.clear(", node, traversal);
11
- ret.appendChunk(target);
12
- ret.append(");", node.getLastToken(), traversal);
13
- return ret;
7
+ return new clear_1.ClearTranspiler().transpile(node, traversal);
14
8
  }
15
9
  }
16
10
  exports.RefreshTranspiler = RefreshTranspiler;
@@ -100,7 +100,7 @@ class SelectTranspiler {
100
100
  throw new Error("FAE, todo, empty table");
101
101
  } else {
102
102
  const ${unique2} = ${faeTranspiled}.array();
103
- abap.statements.clear(${target});
103
+ ${target}.clear();
104
104
  for await (const ${unique} of ${unique2}) {
105
105
  await abap.statements.select(${target}, {select: "${select.trim()}"${extra}}, {appending: true});
106
106
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.10.48",
3
+ "version": "2.10.49",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",