@abaplint/transpiler 1.7.18 → 1.7.22

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.
@@ -13,6 +13,9 @@ class CallTransformationParametersTranspiler {
13
13
  const res = new chunk_1.Chunk().appendString("{");
14
14
  for (const c of node.getChildren()) {
15
15
  if (c.get() instanceof abaplint.Expressions.Field || c.get() instanceof abaplint.Expressions.Integer) {
16
+ if (res.getCode() !== "{") {
17
+ res.appendString(",");
18
+ }
16
19
  res.appendString(c.concatTokens());
17
20
  }
18
21
  else if (c.get() instanceof abaplint.Expressions.Source) {
@@ -8,7 +8,7 @@ class CompareTranspiler {
8
8
  // todo, this is not correct
9
9
  const concat = node.concatTokens().toUpperCase();
10
10
  let pre = concat.startsWith("NOT ") ? "!" : "";
11
- const sources = node.findDirectExpressions(core_1.Expressions.Source);
11
+ const sources = node.findDirectExpressions(core_1.Expressions.Source).concat(node.findDirectExpressions(core_1.Expressions.SourceFieldSymbol));
12
12
  if (sources.length === 1) {
13
13
  const s0 = traversal.traverse(sources[0]);
14
14
  if ((concat.startsWith("NOT ") && concat.endsWith(" IS INITIAL"))
@@ -38,6 +38,8 @@ class CompareOperatorTranspiler {
38
38
  return new chunk_1.Chunk().append("cn", node, traversal);
39
39
  case "NA":
40
40
  return new chunk_1.Chunk().append("na", node, traversal);
41
+ case "NP":
42
+ return new chunk_1.Chunk().append("np", node, traversal);
41
43
  default:
42
44
  return new chunk_1.Chunk().append("compareoperatortodo" + op, node, traversal);
43
45
  }
@@ -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 DatabaseTableTranspiler implements IExpressionTranspiler {
6
+ transpile(node: Nodes.ExpressionNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DatabaseTableTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class DatabaseTableTranspiler {
6
+ transpile(node, _traversal) {
7
+ const ret = new chunk_1.Chunk();
8
+ ret.appendString('"' + node.concatTokens() + '"');
9
+ return ret;
10
+ }
11
+ }
12
+ exports.DatabaseTableTranspiler = DatabaseTableTranspiler;
13
+ //# sourceMappingURL=database_table.js.map
@@ -12,6 +12,7 @@ export * from "./component_cond";
12
12
  export * from "./cond_sub";
13
13
  export * from "./cond";
14
14
  export * from "./constant";
15
+ export * from "./database_table";
15
16
  export * from "./field_chain";
16
17
  export * from "./field_length";
17
18
  export * from "./field_offset";
@@ -30,7 +31,9 @@ export * from "./simple_source1";
30
31
  export * from "./simple_source2";
31
32
  export * from "./simple_source3";
32
33
  export * from "./simple_source4";
34
+ export * from "./source_field_symbol";
33
35
  export * from "./source";
36
+ export * from "./sql_source";
34
37
  export * from "./string_template_source";
35
38
  export * from "./string_template";
36
39
  export * from "./target";
@@ -24,6 +24,7 @@ __exportStar(require("./component_cond"), exports);
24
24
  __exportStar(require("./cond_sub"), exports);
25
25
  __exportStar(require("./cond"), exports);
26
26
  __exportStar(require("./constant"), exports);
27
+ __exportStar(require("./database_table"), exports);
27
28
  __exportStar(require("./field_chain"), exports);
28
29
  __exportStar(require("./field_length"), exports);
29
30
  __exportStar(require("./field_offset"), exports);
@@ -42,7 +43,9 @@ __exportStar(require("./simple_source1"), exports);
42
43
  __exportStar(require("./simple_source2"), exports);
43
44
  __exportStar(require("./simple_source3"), exports);
44
45
  __exportStar(require("./simple_source4"), exports);
46
+ __exportStar(require("./source_field_symbol"), exports);
45
47
  __exportStar(require("./source"), exports);
48
+ __exportStar(require("./sql_source"), exports);
46
49
  __exportStar(require("./string_template_source"), exports);
47
50
  __exportStar(require("./string_template"), exports);
48
51
  __exportStar(require("./target"), exports);
@@ -1,10 +1,57 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MethodSourceTranspiler = void 0;
4
- const method_call_chain_1 = require("./method_call_chain");
4
+ const core_1 = require("@abaplint/core");
5
+ const chunk_1 = require("../chunk");
5
6
  class MethodSourceTranspiler {
6
7
  transpile(node, traversal) {
7
- const ret = new method_call_chain_1.MethodCallChainTranspiler().transpile(node, traversal);
8
+ const ret = new chunk_1.Chunk();
9
+ const children = node.getChildren();
10
+ for (let i = 0; i < children.length; i++) {
11
+ const child = children[i];
12
+ const nextChild = children[i + 1];
13
+ if (child.get() instanceof core_1.Expressions.ClassName) {
14
+ ret.appendString(traversal.lookupClassOrInterface(child.concatTokens(), child.getFirstToken()));
15
+ }
16
+ else if (child.get() instanceof core_1.Expressions.Dynamic && nextChild.concatTokens() === "=>") {
17
+ const second = child.getChildren()[1];
18
+ if (second.get() instanceof core_1.Expressions.FieldChain) {
19
+ ret.appendChunk(traversal.traverse(second));
20
+ }
21
+ else if (second.get() instanceof core_1.Expressions.Constant) {
22
+ const lookup = traversal.lookupClassOrInterface(second.getFirstToken().getStr(), child.getFirstToken(), true);
23
+ const lookupException = traversal.lookupClassOrInterface("'CX_SY_DYN_CALL_ILLEGAL_CLASS'", child.getFirstToken(), true);
24
+ // eslint-disable-next-line max-len
25
+ ret.appendString(`if (${lookup} === undefined && ${lookupException} === undefined) { throw "CX_SY_DYN_CALL_ILLEGAL_CLASS not found"; }\n`);
26
+ ret.appendString(`if (${lookup} === undefined) { throw new ${lookupException}(); }\n`);
27
+ ret.appendString(lookup);
28
+ }
29
+ else {
30
+ ret.appendString("MethodSourceTranspiler-Unexpected");
31
+ }
32
+ }
33
+ else if (child.get() instanceof core_1.Expressions.MethodName) {
34
+ const methodName = child.concatTokens().toLowerCase().replace("~", "$");
35
+ ret.append(methodName, child.getFirstToken().getStart(), traversal);
36
+ }
37
+ else if (child.concatTokens() === "=>") {
38
+ ret.append(".", child.getFirstToken().getStart(), traversal);
39
+ }
40
+ else if (child.concatTokens() === "->") {
41
+ if (ret.getCode() === "super") {
42
+ ret.append(".", child, traversal);
43
+ }
44
+ else {
45
+ ret.append(".get().", child, traversal);
46
+ }
47
+ }
48
+ else if (child.get() instanceof core_1.Expressions.FieldChain) {
49
+ ret.appendChunk(traversal.traverse(child));
50
+ }
51
+ else {
52
+ ret.appendString("MethodSourceTranspiler-" + child.get().constructor.name + "-todo");
53
+ }
54
+ }
8
55
  return ret;
9
56
  }
10
57
  }
@@ -0,0 +1,7 @@
1
+ import { Nodes } from "@abaplint/core";
2
+ import { Chunk } from "../chunk";
3
+ import { Traversal } from "../traversal";
4
+ import { IExpressionTranspiler } from "./_expression_transpiler";
5
+ export declare class SourceFieldSymbolTranspiler implements IExpressionTranspiler {
6
+ transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SourceFieldSymbolTranspiler = void 0;
4
+ const _1 = require(".");
5
+ class SourceFieldSymbolTranspiler {
6
+ transpile(node, traversal) {
7
+ return new _1.FieldSymbolTranspiler().transpile(node, traversal);
8
+ }
9
+ }
10
+ exports.SourceFieldSymbolTranspiler = SourceFieldSymbolTranspiler;
11
+ //# sourceMappingURL=source_field_symbol.js.map
@@ -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 SQLSourceTranspiler implements IExpressionTranspiler {
6
+ transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SQLSourceTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
5
+ class SQLSourceTranspiler {
6
+ transpile(node, traversal) {
7
+ return traversal.traverse(node.findDirectExpression(abaplint.Expressions.Source));
8
+ }
9
+ }
10
+ exports.SQLSourceTranspiler = SQLSourceTranspiler;
11
+ //# sourceMappingURL=sql_source.js.map
@@ -14,6 +14,7 @@ class HandleTable {
14
14
  const type = obj.parseType(reg);
15
15
  const chunk = new chunk_1.Chunk().appendString(`abap.DDIC["${obj.getName().toUpperCase()}"] = {
16
16
  "type": ${new transpile_types_1.TranspileTypes().toType(type)},
17
+ "keyFields": ${JSON.stringify(obj.listKeys())},
17
18
  };`);
18
19
  const output = {
19
20
  object: {
@@ -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 AuthorityCheckTranspiler implements IStatementTranspiler {
6
+ transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthorityCheckTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class AuthorityCheckTranspiler {
6
+ transpile(node, traversal) {
7
+ const lookup = traversal.lookupClassOrInterface("KERNEL_AUTHORITY_CHECK", node.getFirstToken());
8
+ const options = [];
9
+ // todo
10
+ const call = `await ${lookup}.call({${options.join(",")}});`;
11
+ return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("AuthorityCheck, kernel class missing");\n${call}`, node, traversal);
12
+ }
13
+ }
14
+ exports.AuthorityCheckTranspiler = AuthorityCheckTranspiler;
15
+ //# sourceMappingURL=authority_check.js.map
@@ -26,7 +26,7 @@ class CallTransformationTranspiler {
26
26
  if (result && result.get() instanceof abaplint.Expressions.CallTransformationParameters) {
27
27
  options.push("result: " + traversal.traverse(result).getCode());
28
28
  }
29
- const source = node.findExpressionAfterToken("Source");
29
+ const source = node.findExpressionAfterToken("SOURCE");
30
30
  if (source && source.get() instanceof abaplint.Expressions.CallTransformationParameters) {
31
31
  options.push("source: " + traversal.traverse(source).getCode());
32
32
  }
@@ -3,6 +3,7 @@ export * from "./append";
3
3
  export * from "./assert";
4
4
  export * from "./assign";
5
5
  export * from "./at";
6
+ export * from "./authority_check";
6
7
  export * from "./call_function";
7
8
  export * from "./call_transformation";
8
9
  export * from "./call";
@@ -12,8 +13,6 @@ export * from "./class_deferred";
12
13
  export * from "./class_implementation";
13
14
  export * from "./class_local_friends";
14
15
  export * from "./clear";
15
- export * from "./get_locale";
16
- export * from "./raise_event";
17
16
  export * from "./collect";
18
17
  export * from "./commit";
19
18
  export * from "./concatenate";
@@ -47,6 +46,7 @@ export * from "./form";
47
46
  export * from "./free";
48
47
  export * from "./function_pool";
49
48
  export * from "./get_bit";
49
+ export * from "./get_locale";
50
50
  export * from "./get_parameter";
51
51
  export * from "./get_reference";
52
52
  export * from "./get_run_time";
@@ -64,9 +64,10 @@ export * from "./move_corresponding";
64
64
  export * from "./move";
65
65
  export * from "./parameter";
66
66
  export * from "./perform";
67
+ export * from "./raise_event";
67
68
  export * from "./raise";
68
- export * from "./read_report";
69
69
  export * from "./read_line";
70
+ export * from "./read_report";
70
71
  export * from "./read_table";
71
72
  export * from "./refresh";
72
73
  export * from "./replace";
@@ -15,6 +15,7 @@ __exportStar(require("./append"), exports);
15
15
  __exportStar(require("./assert"), exports);
16
16
  __exportStar(require("./assign"), exports);
17
17
  __exportStar(require("./at"), exports);
18
+ __exportStar(require("./authority_check"), exports);
18
19
  __exportStar(require("./call_function"), exports);
19
20
  __exportStar(require("./call_transformation"), exports);
20
21
  __exportStar(require("./call"), exports);
@@ -24,8 +25,6 @@ __exportStar(require("./class_deferred"), exports);
24
25
  __exportStar(require("./class_implementation"), exports);
25
26
  __exportStar(require("./class_local_friends"), exports);
26
27
  __exportStar(require("./clear"), exports);
27
- __exportStar(require("./get_locale"), exports);
28
- __exportStar(require("./raise_event"), exports);
29
28
  __exportStar(require("./collect"), exports);
30
29
  __exportStar(require("./commit"), exports);
31
30
  __exportStar(require("./concatenate"), exports);
@@ -59,6 +58,7 @@ __exportStar(require("./form"), exports);
59
58
  __exportStar(require("./free"), exports);
60
59
  __exportStar(require("./function_pool"), exports);
61
60
  __exportStar(require("./get_bit"), exports);
61
+ __exportStar(require("./get_locale"), exports);
62
62
  __exportStar(require("./get_parameter"), exports);
63
63
  __exportStar(require("./get_reference"), exports);
64
64
  __exportStar(require("./get_run_time"), exports);
@@ -76,9 +76,10 @@ __exportStar(require("./move_corresponding"), exports);
76
76
  __exportStar(require("./move"), exports);
77
77
  __exportStar(require("./parameter"), exports);
78
78
  __exportStar(require("./perform"), exports);
79
+ __exportStar(require("./raise_event"), exports);
79
80
  __exportStar(require("./raise"), exports);
80
- __exportStar(require("./read_report"), exports);
81
81
  __exportStar(require("./read_line"), exports);
82
+ __exportStar(require("./read_report"), exports);
82
83
  __exportStar(require("./read_table"), exports);
83
84
  __exportStar(require("./refresh"), exports);
84
85
  __exportStar(require("./replace"), exports);
@@ -3,5 +3,5 @@ import { IStatementTranspiler } from "./_statement_transpiler";
3
3
  import { Traversal } from "../traversal";
4
4
  import { Chunk } from "../chunk";
5
5
  export declare class InsertDatabaseTranspiler implements IStatementTranspiler {
6
- transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
6
+ transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
7
  }
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InsertDatabaseTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
4
5
  const chunk_1 = require("../chunk");
5
6
  class InsertDatabaseTranspiler {
6
- transpile(_node, _traversal) {
7
- return new chunk_1.Chunk(`throw new Error("InsertDatabase, transpiler todo");`);
7
+ transpile(node, traversal) {
8
+ const table = traversal.traverse(node.findFirstExpression(abaplint.Expressions.DatabaseTable));
9
+ const options = [];
10
+ const values = node.findExpressionAfterToken("VALUES");
11
+ if (values) {
12
+ const tvalues = traversal.traverse(values);
13
+ options.push(`"values": ` + tvalues.getCode());
14
+ }
15
+ return new chunk_1.Chunk(`abap.statements.insertDatabase(${table.getCode()}, {${options.join(", ")}});`);
8
16
  }
9
17
  }
10
18
  exports.InsertDatabaseTranspiler = InsertDatabaseTranspiler;
@@ -40,6 +40,7 @@ exports.config = {
40
40
  "begin_end_names": true,
41
41
  "check_syntax": true,
42
42
  "form_no_dash": true,
43
+ "omit_preceding_zeros": true,
43
44
  "obsolete_statement": {
44
45
  "compute": true,
45
46
  "requested": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "1.7.18",
3
+ "version": "1.7.22",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",
@@ -27,12 +27,12 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "dependencies": {
30
- "@abaplint/core": "^2.83.23",
30
+ "@abaplint/core": "^2.84.3",
31
31
  "source-map": "^0.7.3"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/chai": "^4.3.0",
35
- "@types/mocha": "^9.0.0",
35
+ "@types/mocha": "^9.1.0",
36
36
  "chai": "^4.3.4",
37
37
  "mocha": "^9.1.4",
38
38
  "source-map-support": "^0.5.21",