@abaplint/transpiler 2.11.16 → 2.11.17

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.
@@ -0,0 +1,6 @@
1
+ import { Nodes } from "@abaplint/core";
2
+ import { Traversal } from "../traversal";
3
+ import { Chunk } from "../chunk";
4
+ export declare class FieldAssignmentTranspiler {
5
+ transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
6
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FieldAssignmentTranspiler = void 0;
4
+ const core_1 = require("@abaplint/core");
5
+ const chunk_1 = require("../chunk");
6
+ class FieldAssignmentTranspiler {
7
+ transpile(node, traversal) {
8
+ const ret = new chunk_1.Chunk();
9
+ const field = node.findDirectExpression(core_1.Expressions.FieldSub);
10
+ if (field === undefined) {
11
+ throw new Error("FieldAssignmentTranspiler, Expected FieldSub");
12
+ }
13
+ const source = node.findDirectExpression(core_1.Expressions.Source);
14
+ if (source === undefined) {
15
+ throw new Error("FieldAssignmentTranspiler, Expected Source");
16
+ }
17
+ ret.appendString(`.setField("${field.concatTokens().toLowerCase()}", ${traversal.traverse(source).getCode()})`);
18
+ return ret;
19
+ }
20
+ }
21
+ exports.FieldAssignmentTranspiler = FieldAssignmentTranspiler;
22
+ //# sourceMappingURL=field_assignment.js.map
@@ -6,6 +6,7 @@ const _1 = require(".");
6
6
  const constant_1 = require("./constant");
7
7
  const chunk_1 = require("../chunk");
8
8
  const transpile_types_1 = require("../transpile_types");
9
+ const value_body_1 = require("./value_body");
9
10
  class SourceTranspiler {
10
11
  addGet;
11
12
  constructor(addGet = false) {
@@ -84,6 +85,13 @@ class SourceTranspiler {
84
85
  ret.appendString(traversal.traverse(c.getFirstChild()).getCode());
85
86
  ret.appendString(")");
86
87
  }
88
+ else if (c.get() instanceof core_1.Expressions.ValueBody) {
89
+ const typ = node.findFirstExpression(core_1.Expressions.TypeNameOrInfer);
90
+ if (typ === undefined) {
91
+ throw new Error("TypeNameOrInfer not found in ValueBody");
92
+ }
93
+ ret.appendChunk(new value_body_1.ValueBodyTranspiler().transpile(typ, c, traversal));
94
+ }
87
95
  else {
88
96
  ret.appendString("SourceUnknown-" + c.get().constructor.name);
89
97
  }
@@ -95,6 +95,10 @@ class SQLCondTranspiler {
95
95
  ret += this.sqlSource(source, traversal, filename, table);
96
96
  return ret;
97
97
  }
98
+ if (fieldNameExpression && c.getChildren().length === 3 && c.concatTokens().toUpperCase().endsWith(" IS NULL")) {
99
+ ret += fieldName + " IS NULL";
100
+ return ret;
101
+ }
98
102
  if (fieldName === undefined || operator === undefined || source === undefined) {
99
103
  throw new Error("SQL Condition, transpiler todo2, " + c.concatTokens());
100
104
  }
@@ -1,7 +1,8 @@
1
- import { Nodes } from "@abaplint/core";
1
+ import { AbstractType, Nodes } from "@abaplint/core";
2
2
  import { IExpressionTranspiler } from "./_expression_transpiler";
3
3
  import { Traversal } from "../traversal";
4
4
  import { Chunk } from "../chunk";
5
5
  export declare class TypeNameOrInfer implements IExpressionTranspiler {
6
+ findType(node: Nodes.ExpressionNode, traversal: Traversal): AbstractType;
6
7
  transpile(node: Nodes.ExpressionNode, traversal: Traversal): Chunk;
7
8
  }
@@ -4,7 +4,7 @@ exports.TypeNameOrInfer = void 0;
4
4
  const chunk_1 = require("../chunk");
5
5
  const transpile_types_1 = require("../transpile_types");
6
6
  class TypeNameOrInfer {
7
- transpile(node, traversal) {
7
+ findType(node, traversal) {
8
8
  let type;
9
9
  const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
10
10
  if (node.concatTokens() === "#") {
@@ -16,6 +16,10 @@ class TypeNameOrInfer {
16
16
  if (type === undefined) {
17
17
  throw new Error("TypeNameOrInfer, type not found: " + node.concatTokens());
18
18
  }
19
+ return type;
20
+ }
21
+ transpile(node, traversal) {
22
+ const type = this.findType(node, traversal);
19
23
  const ret = new chunk_1.Chunk();
20
24
  ret.appendString(transpile_types_1.TranspileTypes.toType(type));
21
25
  return ret;
@@ -0,0 +1,6 @@
1
+ import { Nodes } from "@abaplint/core";
2
+ import { Traversal } from "../traversal";
3
+ import { Chunk } from "../chunk";
4
+ export declare class ValueBodyTranspiler {
5
+ transpile(typ: Nodes.ExpressionNode, body: Nodes.ExpressionNode, traversal: Traversal): Chunk;
6
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValueBodyTranspiler = void 0;
4
+ const core_1 = require("@abaplint/core");
5
+ const chunk_1 = require("../chunk");
6
+ const type_name_or_infer_1 = require("./type_name_or_infer");
7
+ const value_body_line_1 = require("./value_body_line");
8
+ const field_assignment_1 = require("./field_assignment");
9
+ class ValueBodyTranspiler {
10
+ transpile(typ, body, traversal) {
11
+ if (!(typ.get() instanceof core_1.Expressions.TypeNameOrInfer)) {
12
+ throw new Error("ValueBodyTranspiler, Expected TypeNameOrInfer");
13
+ }
14
+ const ret = new chunk_1.Chunk().appendString(new type_name_or_infer_1.TypeNameOrInfer().transpile(typ, traversal).getCode());
15
+ const context = new type_name_or_infer_1.TypeNameOrInfer().findType(typ, traversal);
16
+ for (const child of body.getChildren()) {
17
+ if (child.get() instanceof core_1.Expressions.FieldAssignment && child instanceof core_1.Nodes.ExpressionNode) {
18
+ ret.appendString(new field_assignment_1.FieldAssignmentTranspiler().transpile(child, traversal).getCode());
19
+ }
20
+ else if (child.get() instanceof core_1.Expressions.ValueBodyLine && child instanceof core_1.Nodes.ExpressionNode) {
21
+ if (!(context instanceof core_1.BasicTypes.TableType)) {
22
+ throw new Error("ValueBodyTranspiler, Expected BasicTypes");
23
+ }
24
+ const rowType = context.getRowType();
25
+ ret.appendString(new value_body_line_1.ValueBodyLineTranspiler().transpile(rowType, child, traversal).getCode());
26
+ }
27
+ else {
28
+ throw new Error("ValueBodyTranspiler, unknown " + child.get().constructor.name);
29
+ }
30
+ }
31
+ return ret;
32
+ }
33
+ }
34
+ exports.ValueBodyTranspiler = ValueBodyTranspiler;
35
+ //# sourceMappingURL=value_body.js.map
@@ -0,0 +1,6 @@
1
+ import { Nodes, AbstractType } from "@abaplint/core";
2
+ import { Traversal } from "../traversal";
3
+ import { Chunk } from "../chunk";
4
+ export declare class ValueBodyLineTranspiler {
5
+ transpile(rowType: AbstractType, line: Nodes.ExpressionNode, traversal: Traversal): Chunk;
6
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValueBodyLineTranspiler = void 0;
4
+ const core_1 = require("@abaplint/core");
5
+ const chunk_1 = require("../chunk");
6
+ const transpile_types_1 = require("../transpile_types");
7
+ const field_assignment_1 = require("./field_assignment");
8
+ class ValueBodyLineTranspiler {
9
+ transpile(rowType, line, traversal) {
10
+ const ret = new chunk_1.Chunk();
11
+ ret.appendString(`.appendThis(${transpile_types_1.TranspileTypes.toType(rowType)}`);
12
+ for (const child of line.getChildren()) {
13
+ if (child instanceof core_1.Nodes.TokenNode) {
14
+ // last or first parenthesis
15
+ continue;
16
+ }
17
+ else if (child.get() instanceof core_1.Expressions.FieldAssignment && child instanceof core_1.Nodes.ExpressionNode) {
18
+ ret.appendString(new field_assignment_1.FieldAssignmentTranspiler().transpile(child, traversal).getCode());
19
+ }
20
+ else {
21
+ throw new Error("ValueBodyLineTranspiler, unknown " + child.get().constructor.name);
22
+ }
23
+ }
24
+ ret.appendString(`)`);
25
+ return ret;
26
+ }
27
+ }
28
+ exports.ValueBodyLineTranspiler = ValueBodyLineTranspiler;
29
+ //# sourceMappingURL=value_body_line.js.map
@@ -29,7 +29,8 @@ class AppendTranspiler {
29
29
  }
30
30
  else {
31
31
  const options = [];
32
- const s = node.findDirectExpression(abaplint.Expressions.SimpleSource4);
32
+ const s = node.findDirectExpression(abaplint.Expressions.SimpleSource4)
33
+ || node.findDirectExpression(abaplint.Expressions.Source);
33
34
  if (s) {
34
35
  const option = new chunk_1.Chunk().appendString("source: ");
35
36
  option.appendChunk(traversal.traverse(s));
@@ -6,14 +6,14 @@ const chunk_1 = require("../chunk");
6
6
  class InsertInternalTranspiler {
7
7
  transpile(node, traversal) {
8
8
  const options = [];
9
- let source = node.findDirectExpression(abaplint.Expressions.SimpleSource4);
9
+ const source = node.findDirectExpression(abaplint.Expressions.SimpleSource4)
10
+ || node.findDirectExpression(abaplint.Expressions.Source);
10
11
  const target = node.findDirectExpression(abaplint.Expressions.Target);
11
12
  const concat = node.concatTokens().toUpperCase();
12
13
  if (concat.startsWith("INSERT LINES OF ")) {
13
- source = node.findDirectExpression(abaplint.Expressions.Source);
14
14
  options.push("lines: true");
15
15
  }
16
- if (source === undefined) {
16
+ if (concat.startsWith("INSERT INITIAL LINE ")) {
17
17
  options.push("initial: true");
18
18
  }
19
19
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.11.16",
3
+ "version": "2.11.17",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "author": "abaplint",
30
30
  "license": "MIT",
31
31
  "dependencies": {
32
- "@abaplint/core": "^2.113.163",
32
+ "@abaplint/core": "^2.113.165",
33
33
  "source-map": "^0.7.6"
34
34
  },
35
35
  "devDependencies": {