@abaplint/transpiler 2.3.71 → 2.3.73

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.
@@ -19,8 +19,6 @@ export * from "./field_length";
19
19
  export * from "./field_offset";
20
20
  export * from "./field_symbol";
21
21
  export * from "./function_exporting";
22
- export * from "./sql_from";
23
- export * from "./sql_join";
24
22
  export * from "./function_parameters";
25
23
  export * from "./message_number";
26
24
  export * from "./method_call_body";
@@ -41,8 +39,11 @@ export * from "./simple_source4";
41
39
  export * from "./source_field_symbol";
42
40
  export * from "./source";
43
41
  export * from "./sql_cond";
42
+ export * from "./sql_from";
43
+ export * from "./sql_join";
44
44
  export * from "./sql_source_simple";
45
45
  export * from "./sql_source";
46
+ export * from "./sql_target";
46
47
  export * from "./string_template_source";
47
48
  export * from "./string_template";
48
49
  export * from "./target";
@@ -35,8 +35,6 @@ __exportStar(require("./field_length"), exports);
35
35
  __exportStar(require("./field_offset"), exports);
36
36
  __exportStar(require("./field_symbol"), exports);
37
37
  __exportStar(require("./function_exporting"), exports);
38
- __exportStar(require("./sql_from"), exports);
39
- __exportStar(require("./sql_join"), exports);
40
38
  __exportStar(require("./function_parameters"), exports);
41
39
  __exportStar(require("./message_number"), exports);
42
40
  __exportStar(require("./method_call_body"), exports);
@@ -57,8 +55,11 @@ __exportStar(require("./simple_source4"), exports);
57
55
  __exportStar(require("./source_field_symbol"), exports);
58
56
  __exportStar(require("./source"), exports);
59
57
  __exportStar(require("./sql_cond"), exports);
58
+ __exportStar(require("./sql_from"), exports);
59
+ __exportStar(require("./sql_join"), exports);
60
60
  __exportStar(require("./sql_source_simple"), exports);
61
61
  __exportStar(require("./sql_source"), exports);
62
+ __exportStar(require("./sql_target"), exports);
62
63
  __exportStar(require("./string_template_source"), exports);
63
64
  __exportStar(require("./string_template"), exports);
64
65
  __exportStar(require("./target"), exports);
@@ -0,0 +1,7 @@
1
+ import { Nodes } from "@abaplint/core";
2
+ import { IExpressionTranspiler } from "./_expression_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class SQLTargetTranspiler implements IExpressionTranspiler {
6
+ transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLTargetTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
5
+ class SQLTargetTranspiler {
6
+ transpile(node, traversal) {
7
+ const s = node.findDirectExpression(abaplint.Expressions.Target);
8
+ return traversal.traverse(s);
9
+ }
10
+ }
11
+ exports.SQLTargetTranspiler = SQLTargetTranspiler;
12
+ //# sourceMappingURL=sql_target.js.map
@@ -104,6 +104,7 @@ export * from "./select";
104
104
  export * from "./set_bit";
105
105
  export * from "./set_dataset";
106
106
  export * from "./set_handler";
107
+ export * from "./set_language";
107
108
  export * from "./set_locale";
108
109
  export * from "./set_parameter";
109
110
  export * from "./set_screen";
@@ -120,6 +120,7 @@ __exportStar(require("./select"), exports);
120
120
  __exportStar(require("./set_bit"), exports);
121
121
  __exportStar(require("./set_dataset"), exports);
122
122
  __exportStar(require("./set_handler"), exports);
123
+ __exportStar(require("./set_language"), exports);
123
124
  __exportStar(require("./set_locale"), exports);
124
125
  __exportStar(require("./set_parameter"), exports);
125
126
  __exportStar(require("./set_screen"), exports);
@@ -66,6 +66,9 @@ class MethodImplementationTranspiler {
66
66
  else if (parameterDefault.getFirstToken().getStr().toLowerCase() === "space") {
67
67
  val = "abap.builtin.space";
68
68
  }
69
+ else if (parameterDefault.concatTokens().toLowerCase() === "sy-langu") {
70
+ val = "abap.builtin.sy.get().langu";
71
+ }
69
72
  else if (parameterDefault.concatTokens().toLowerCase() === "sy-uname") {
70
73
  val = "abap.builtin.sy.get().uname";
71
74
  }
@@ -8,7 +8,7 @@ const unique_identifier_1 = require("../unique_identifier");
8
8
  const sql_from_1 = require("../expressions/sql_from");
9
9
  class SelectTranspiler {
10
10
  transpile(node, traversal, targetOverride) {
11
- var _a, _b, _c;
11
+ var _a;
12
12
  let target = "undefined";
13
13
  if (targetOverride) {
14
14
  target = targetOverride;
@@ -76,14 +76,15 @@ class SelectTranspiler {
76
76
  }
77
77
  if (node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) {
78
78
  const unique = unique_identifier_1.UniqueIdentifier.get();
79
- const faeName = (_c = (_b = (_a = node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(abaplint.Expressions.SQLSource)) === null || _b === void 0 ? void 0 : _b.concatTokens()) === null || _c === void 0 ? void 0 : _c.toLowerCase();
80
- select = select.replace(new RegExp(" " + faeName, "g"), " " + unique);
79
+ const fn = (_a = node.findFirstExpression(abaplint.Expressions.SQLForAllEntries)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(abaplint.Expressions.SQLSource);
80
+ const faeTranspiled = new expressions_1.SQLSourceTranspiler().transpile(fn, traversal).getCode();
81
+ select = select.replace(new RegExp(" " + faeTranspiled, "g"), " " + unique);
81
82
  select = select.replace(unique + ".get().table_line.get()", unique + ".get()"); // there can be only one?
82
- const code = `if (${faeName}.array().length === 0) {
83
+ const code = `if (${faeTranspiled}.array().length === 0) {
83
84
  throw "FAE, todo, empty table";
84
85
  } else {
85
86
  abap.statements.clear(${target});
86
- for await (const ${unique} of abap.statements.loop(${faeName})) {
87
+ for await (const ${unique} of abap.statements.loop(${faeTranspiled})) {
87
88
  await abap.statements.select(${target}, {select: "${select.trim()}"${extra}}, {appending: true});
88
89
  }
89
90
  abap.builtin.sy.get().dbcnt.set(${target}.array().length);
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStatementTranspiler } from "./_statement_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class SetLanguageTranspiler implements IStatementTranspiler {
6
+ transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SetLanguageTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class SetLanguageTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("SetLanguage, transpiler todo");`);
8
+ }
9
+ }
10
+ exports.SetLanguageTranspiler = SetLanguageTranspiler;
11
+ //# sourceMappingURL=set_language.js.map
@@ -5,23 +5,24 @@ const abaplint = require("@abaplint/core");
5
5
  const select_1 = require("../statements/select");
6
6
  const chunk_1 = require("../chunk");
7
7
  const unique_identifier_1 = require("../unique_identifier");
8
+ const expressions_1 = require("../expressions");
8
9
  class SelectTranspiler {
9
10
  transpile(node, traversal) {
10
- var _a, _b;
11
+ var _a;
11
12
  const ret = new chunk_1.Chunk();
12
13
  const selectStatement = node.findFirstStatement(abaplint.Statements.SelectLoop);
13
14
  if (selectStatement === undefined) {
14
15
  throw "Structure, select loop not found";
15
16
  }
16
17
  const from = (_a = selectStatement.findFirstExpression(abaplint.Expressions.SQLFromSource)) === null || _a === void 0 ? void 0 : _a.concatTokens().toUpperCase();
17
- const intoName = (_b = selectStatement.findFirstExpression(abaplint.Expressions.SQLTarget)) === null || _b === void 0 ? void 0 : _b.concatTokens();
18
+ const intoName = new expressions_1.SQLTargetTranspiler().transpile(selectStatement.findFirstExpression(abaplint.Expressions.SQLTarget), traversal).getCode();
18
19
  // note: this implementation SELECTs everything into memory, which might be bad, and sometimes not correct
19
20
  const targetName = unique_identifier_1.UniqueIdentifier.get();
20
21
  const loopName = unique_identifier_1.UniqueIdentifier.get();
21
22
  ret.appendString(`let ${targetName} = new abap.types.Table(abap.DDIC["${from}"].type);\n`);
22
23
  ret.appendChunk(new select_1.SelectTranspiler().transpile(selectStatement, traversal, targetName));
23
24
  ret.appendString(`\nfor (const ${loopName} of ${targetName}.array()) {\n`);
24
- ret.appendString(`${intoName === null || intoName === void 0 ? void 0 : intoName.replace("-", ".get().")}.set(${loopName});\n`);
25
+ ret.appendString(`${intoName}.set(${loopName});\n`);
25
26
  const body = node.findDirectStructure(abaplint.Structures.Body);
26
27
  if (body) {
27
28
  ret.appendChunk(traversal.traverse(body));
@@ -27,7 +27,28 @@ exports.config = {
27
27
  },
28
28
  "parser_error": true,
29
29
  "allowed_object_types": {
30
- "allowed": ["INTF", "CLAS", "PROG", "DEVC", "TABL", "SHLP", "VIEW", "XSLT", "ENQU", "SHMA", "SICF", "NROB", "TYPE", "DTEL", "DOMA", "TTYP", "MSAG", "FUGR"],
30
+ "allowed": [
31
+ "CLAS",
32
+ "DEVC",
33
+ "DOMA",
34
+ "DTEL",
35
+ "ENQU",
36
+ "FUGR",
37
+ "INTF",
38
+ "MSAG",
39
+ "NROB",
40
+ "PARA",
41
+ "PROG",
42
+ "SHLP",
43
+ "SHMA",
44
+ "SICF",
45
+ "SMIM",
46
+ "TABL",
47
+ "TTYP",
48
+ "TYPE",
49
+ "VIEW",
50
+ "XSLT",
51
+ ],
31
52
  },
32
53
  "unknown_types": true,
33
54
  "ambiguous_statement": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.3.71",
3
+ "version": "2.3.73",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",