@abaplint/transpiler 2.1.20 → 2.1.23

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.
@@ -24,10 +24,11 @@ class SQLiteDatabaseSchema {
24
24
  }
25
25
  const fields = [];
26
26
  for (const field of type.getComponents()) {
27
- fields.push(field.name.toLowerCase() + " " + this.toType(field.type, field.name, tabl.getName()));
27
+ fields.push("'" + field.name.toLowerCase() + "' " + this.toType(field.type, field.name, tabl.getName()));
28
28
  }
29
29
  // assumption: all transparent tables have primary keys
30
- const key = ", PRIMARY KEY(" + tabl.listKeys().map(e => e.toLowerCase()).join(",") + ")";
30
+ // add single quotes to field names to allow for keywords as field names
31
+ const key = ", PRIMARY KEY(" + tabl.listKeys().map(e => "'" + e.toLowerCase() + "'").join(",") + ")";
31
32
  return `CREATE TABLE ${tabl.getName().toLowerCase()} (${fields.join(", ")}${key});\n`;
32
33
  }
33
34
  toType(type, fieldname, table) {
@@ -7,14 +7,14 @@ const expressions_1 = require("../expressions");
7
7
  const chunk_1 = require("../chunk");
8
8
  class LoopTranspiler {
9
9
  transpile(node, traversal) {
10
- var _a;
10
+ var _a, _b;
11
11
  if (!(node.get() instanceof abaplint.Statements.Loop)) {
12
12
  throw new Error("LoopTranspiler, unexpected node");
13
13
  }
14
14
  const source = traversal.traverse(node.findDirectExpression(abaplint.Expressions.SimpleSource2)).getCode();
15
15
  const unique1 = unique_identifier_1.UniqueIdentifier.get();
16
16
  let target = "";
17
- const into = node.findDirectExpression(abaplint.Expressions.Target);
17
+ const into = (_a = node.findDirectExpression(abaplint.Expressions.LoopTarget)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(abaplint.Expressions.Target);
18
18
  if (into) {
19
19
  const concat = node.concatTokens().toUpperCase();
20
20
  const t = traversal.traverse(into).getCode();
@@ -33,7 +33,7 @@ class LoopTranspiler {
33
33
  }
34
34
  }
35
35
  else {
36
- const assigning = (_a = node.findFirstExpression(abaplint.Expressions.FSTarget)) === null || _a === void 0 ? void 0 : _a.findFirstExpression(abaplint.Expressions.FieldSymbol);
36
+ const assigning = (_b = node.findFirstExpression(abaplint.Expressions.FSTarget)) === null || _b === void 0 ? void 0 : _b.findFirstExpression(abaplint.Expressions.FieldSymbol);
37
37
  if (assigning) {
38
38
  target = traversal.traverse(assigning).getCode() + ".assign(" + unique1 + ");";
39
39
  }
@@ -7,7 +7,7 @@ const expressions_1 = require("../expressions");
7
7
  const unique_identifier_1 = require("../unique_identifier");
8
8
  class SelectTranspiler {
9
9
  transpile(node, traversal, targetOverride) {
10
- var _a, _b, _c, _d, _e, _f;
10
+ var _a, _b, _c, _d;
11
11
  let target = "undefined";
12
12
  if (targetOverride) {
13
13
  target = targetOverride;
@@ -16,9 +16,17 @@ class SelectTranspiler {
16
16
  target = traversal.traverse(node.findFirstExpression(abaplint.Expressions.Target)).getCode();
17
17
  }
18
18
  let select = "SELECT ";
19
- select += (((_a = node.findFirstExpression(abaplint.Expressions.SQLFieldList)) === null || _a === void 0 ? void 0 : _a.concatTokens())
20
- || ((_b = node.findFirstExpression(abaplint.Expressions.SQLFieldListLoop)) === null || _b === void 0 ? void 0 : _b.concatTokens())) + " ";
21
- select += ((_c = node.findFirstExpression(abaplint.Expressions.SQLFrom)) === null || _c === void 0 ? void 0 : _c.concatTokens()) + " ";
19
+ const fieldList = node.findFirstExpression(abaplint.Expressions.SQLFieldList)
20
+ || node.findFirstExpression(abaplint.Expressions.SQLFieldListLoop);
21
+ if ((fieldList === null || fieldList === void 0 ? void 0 : fieldList.getChildren().length) === 1) {
22
+ select += fieldList.concatTokens();
23
+ }
24
+ else {
25
+ // add commas between field names, this is required for SQLite, and easy to remove in other clients?
26
+ select += fieldList === null || fieldList === void 0 ? void 0 : fieldList.findAllExpressions(abaplint.Expressions.SQLField).map(e => e.concatTokens()).join(", ");
27
+ }
28
+ select += " ";
29
+ select += ((_a = node.findFirstExpression(abaplint.Expressions.SQLFrom)) === null || _a === void 0 ? void 0 : _a.concatTokens()) + " ";
22
30
  let where;
23
31
  for (const sqlCond of node.findAllExpressions(abaplint.Expressions.SQLCond)) {
24
32
  if (this.isWhereExpression(node, sqlCond)) {
@@ -58,7 +66,7 @@ class SelectTranspiler {
58
66
  }
59
67
  if (node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) {
60
68
  const unique = unique_identifier_1.UniqueIdentifier.get();
61
- const faeName = (_f = (_e = (_d = node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) === null || _d === void 0 ? void 0 : _d.findDirectExpression(abaplint.Expressions.SQLSource)) === null || _e === void 0 ? void 0 : _e.concatTokens()) === null || _f === void 0 ? void 0 : _f.toLowerCase();
69
+ const faeName = (_d = (_c = (_b = node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(abaplint.Expressions.SQLSource)) === null || _c === void 0 ? void 0 : _c.concatTokens()) === null || _d === void 0 ? void 0 : _d.toLowerCase();
62
70
  select = select.replace(new RegExp(" " + faeName, "g"), " " + unique);
63
71
  select = select.replace(unique + ".get().table_line.get()", unique + ".get()"); // there can be only one?
64
72
  const code = `if (${faeName}.array().length === 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.1.20",
3
+ "version": "2.1.23",
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.21",
31
+ "@abaplint/core": "^2.91.28",
32
32
  "source-map": "^0.7.4"
33
33
  },
34
34
  "devDependencies": {