@abaplint/transpiler 2.7.58 → 2.7.59

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.
@@ -32,6 +32,7 @@ export * from "./parameter_list_t";
32
32
  export * from "./parameter_name";
33
33
  export * from "./parameter_s";
34
34
  export * from "./parameter_t";
35
+ export * from "./receive_parameters";
35
36
  export * from "./simple_source1";
36
37
  export * from "./simple_source2";
37
38
  export * from "./simple_source3";
@@ -39,11 +40,11 @@ export * from "./simple_source4";
39
40
  export * from "./source_field_symbol";
40
41
  export * from "./source_field";
41
42
  export * from "./source";
43
+ export * from "./sql_arithmetic_operator";
42
44
  export * from "./sql_cond";
43
45
  export * from "./sql_field_and_value";
44
- export * from "./sql_field";
45
46
  export * from "./sql_field_name";
46
- export * from "./sql_arithmetic_operator";
47
+ export * from "./sql_field";
47
48
  export * from "./sql_from_source";
48
49
  export * from "./sql_from";
49
50
  export * from "./sql_into_structure";
@@ -48,6 +48,7 @@ __exportStar(require("./parameter_list_t"), exports);
48
48
  __exportStar(require("./parameter_name"), exports);
49
49
  __exportStar(require("./parameter_s"), exports);
50
50
  __exportStar(require("./parameter_t"), exports);
51
+ __exportStar(require("./receive_parameters"), exports);
51
52
  __exportStar(require("./simple_source1"), exports);
52
53
  __exportStar(require("./simple_source2"), exports);
53
54
  __exportStar(require("./simple_source3"), exports);
@@ -55,11 +56,11 @@ __exportStar(require("./simple_source4"), exports);
55
56
  __exportStar(require("./source_field_symbol"), exports);
56
57
  __exportStar(require("./source_field"), exports);
57
58
  __exportStar(require("./source"), exports);
59
+ __exportStar(require("./sql_arithmetic_operator"), exports);
58
60
  __exportStar(require("./sql_cond"), exports);
59
61
  __exportStar(require("./sql_field_and_value"), exports);
60
- __exportStar(require("./sql_field"), exports);
61
62
  __exportStar(require("./sql_field_name"), exports);
62
- __exportStar(require("./sql_arithmetic_operator"), exports);
63
+ __exportStar(require("./sql_field"), exports);
63
64
  __exportStar(require("./sql_from_source"), exports);
64
65
  __exportStar(require("./sql_from"), exports);
65
66
  __exportStar(require("./sql_into_structure"), 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 ReceiveParametersTranspiler 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.ReceiveParametersTranspiler = void 0;
4
+ const function_parameters_1 = require("./function_parameters");
5
+ class ReceiveParametersTranspiler {
6
+ transpile(node, traversal) {
7
+ return new function_parameters_1.FunctionParametersTranspiler().transpile(node, traversal);
8
+ }
9
+ }
10
+ exports.ReceiveParametersTranspiler = ReceiveParametersTranspiler;
11
+ //# sourceMappingURL=receive_parameters.js.map
@@ -31,12 +31,18 @@ class CallFunctionTranspiler {
31
31
  if (exceptions) {
32
32
  ret.appendString("try {\n");
33
33
  }
34
+ const calling = node.findExpressionAfterToken("CALLING");
34
35
  const dest = (_b = node.findDirectExpression(abaplint.Expressions.Destination)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(abaplint.Expressions.Source);
35
36
  if (dest) {
36
37
  const s = new expressions_1.SourceTranspiler(true).transpile(dest, traversal);
37
38
  param = param.replace("{", ",").replace(/}$/, "");
38
39
  ret.appendString(`await abap.statements.callFunction({name:${fmname},destination:${s.getCode()}${param}});`);
39
40
  }
41
+ else if (calling) {
42
+ param = param.replace("{", ",").replace(/}$/, "");
43
+ // typically used in combination with STARTING NEW TASK so dont await,
44
+ ret.appendString(`abap.statements.callFunction({name:${fmname},calling:this->${calling.concatTokens().toLowerCase()}${param}});`);
45
+ }
40
46
  else {
41
47
  const illegalFunc = traversal.lookupClassOrInterface("'CX_SY_DYN_CALL_ILLEGAL_FUNC'", node.getFirstToken(), true);
42
48
  const call = `abap.FunctionModules[${fmname}]`;
@@ -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 ReceiveTranspiler 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,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ReceiveTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
4
5
  const chunk_1 = require("../chunk");
5
6
  class ReceiveTranspiler {
6
- transpile(_node, _traversal) {
7
- return new chunk_1.Chunk(`throw new Error("Receive, transpiler todo");`);
7
+ transpile(node, traversal) {
8
+ var _a;
9
+ const fmchild = (_a = node.findDirectExpression(abaplint.Expressions.FunctionName)) === null || _a === void 0 ? void 0 : _a.getFirstChild();
10
+ if (fmchild === undefined) {
11
+ throw new Error("ReceiveTranspilerNameNotFound");
12
+ }
13
+ const fmname = fmchild.concatTokens().toUpperCase();
14
+ let param = "";
15
+ const fmp = node.findDirectExpression(abaplint.Expressions.ReceiveParameters);
16
+ if (fmp) {
17
+ param = traversal.traverse(fmp).getCode();
18
+ }
19
+ const ret = new chunk_1.Chunk();
20
+ ret.appendString(`abap.statements.receive({name:${fmname},${param}});`);
21
+ return ret;
8
22
  }
9
23
  }
10
24
  exports.ReceiveTranspiler = ReceiveTranspiler;
@@ -16,13 +16,18 @@ class WaitTranspiler {
16
16
  const sec = new expressions_1.SourceTranspiler(true).transpile(seconds, traversal).getCode();
17
17
  return new chunk_1.Chunk().appendString(`await new Promise(r => setTimeout(r, ${sec} * 1000));`);
18
18
  }
19
- const lookup = traversal.lookupClassOrInterface("KERNEL_PUSH_CHANNELS", node.getFirstToken());
20
19
  const cond = node.findFirstExpression(abaplint.Expressions.Cond);
21
20
  if (cond) {
22
- options.push("cond: " + traversal.traverse(cond).getCode());
21
+ options.push("cond: () => {return " + traversal.traverse(cond).getCode() + ";}");
22
+ }
23
+ if (concat.startsWith("WAIT FOR ")) {
24
+ const lookup = traversal.lookupClassOrInterface("KERNEL_PUSH_CHANNELS", node.getFirstToken());
25
+ const call = `await ${lookup}.wait({${options.join(",")}});`;
26
+ return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("Wait, kernel class missing");\n${call}`, node, traversal);
27
+ }
28
+ else {
29
+ return new chunk_1.Chunk().append("await abap.statements.wait({" + options.join(",") + "});", node, traversal);
23
30
  }
24
- const call = `await ${lookup}.wait({${options.join(",")}});`;
25
- return new chunk_1.Chunk().append(`if (${lookup} === undefined) throw new Error("Wait, kernel class missing");\n${call}`, node, traversal);
26
31
  }
27
32
  }
28
33
  exports.WaitTranspiler = WaitTranspiler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.7.58",
3
+ "version": "2.7.59",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",