@abaplint/transpiler 1.7.20 → 1.7.24

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"))
@@ -31,6 +31,7 @@ export * from "./simple_source1";
31
31
  export * from "./simple_source2";
32
32
  export * from "./simple_source3";
33
33
  export * from "./simple_source4";
34
+ export * from "./source_field_symbol";
34
35
  export * from "./source";
35
36
  export * from "./sql_source";
36
37
  export * from "./string_template_source";
@@ -43,6 +43,7 @@ __exportStar(require("./simple_source1"), exports);
43
43
  __exportStar(require("./simple_source2"), exports);
44
44
  __exportStar(require("./simple_source3"), exports);
45
45
  __exportStar(require("./simple_source4"), exports);
46
+ __exportStar(require("./source_field_symbol"), exports);
46
47
  __exportStar(require("./source"), exports);
47
48
  __exportStar(require("./sql_source"), exports);
48
49
  __exportStar(require("./string_template_source"), exports);
@@ -1,10 +1,69 @@
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 === null || nextChild === void 0 ? void 0 : 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.Dynamic) {
34
+ const second = child.getChildren()[1];
35
+ if (second.get() instanceof core_1.Expressions.FieldChain) {
36
+ ret.appendChunk(traversal.traverse(second));
37
+ }
38
+ else if (second.get() instanceof core_1.Expressions.Constant) {
39
+ ret.appendString(second.getFirstToken().getStr().replace(/\'/g, "").toLowerCase().replace("~", "$"));
40
+ }
41
+ else {
42
+ ret.appendString("MethodSourceTranspiler-Unexpected");
43
+ }
44
+ }
45
+ else if (child.get() instanceof core_1.Expressions.MethodName) {
46
+ const methodName = child.concatTokens().toLowerCase().replace("~", "$");
47
+ ret.append(methodName, child.getFirstToken().getStart(), traversal);
48
+ }
49
+ else if (child.concatTokens() === "=>") {
50
+ ret.append(".", child.getFirstToken().getStart(), traversal);
51
+ }
52
+ else if (child.concatTokens() === "->") {
53
+ if (ret.getCode() === "super") {
54
+ ret.append(".", child, traversal);
55
+ }
56
+ else {
57
+ ret.append(".get().", child, traversal);
58
+ }
59
+ }
60
+ else if (child.get() instanceof core_1.Expressions.FieldChain) {
61
+ ret.appendChunk(traversal.traverse(child));
62
+ }
63
+ else {
64
+ ret.appendString("MethodSourceTranspiler-" + child.get().constructor.name + "-todo");
65
+ }
66
+ }
8
67
  return ret;
9
68
  }
10
69
  }
@@ -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
@@ -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);
@@ -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.20",
3
+ "version": "1.7.24",
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",