@abaplint/transpiler 2.13.0 → 2.13.2

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.
@@ -4,5 +4,6 @@ import { Traversal } from "../traversal";
4
4
  import { Chunk } from "../chunk";
5
5
  export declare class DataTranspiler implements IStatementTranspiler {
6
6
  transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
+ static findEnumDefault(scope: abaplint.ISpaghettiScopeNode, _enumType: abaplint.AbstractType): string | undefined;
7
8
  static buildValue(node: abaplint.Nodes.StatementNode, name: string, traversal: Traversal): string;
8
9
  }
@@ -28,6 +28,13 @@ class DataTranspiler {
28
28
  else {
29
29
  value = DataTranspiler.buildValue(node, traversal_1.Traversal.prefixVariable(found.getName().toLowerCase()), traversal);
30
30
  }
31
+ // for enum types, initialize with the first enum value
32
+ if (found.getType() instanceof abaplint.BasicTypes.EnumType && value === "") {
33
+ const enumDefault = DataTranspiler.findEnumDefault(scope, found.getType());
34
+ if (enumDefault) {
35
+ value = "\n" + traversal_1.Traversal.prefixVariable(found.getName().toLowerCase()) + ".set(\"" + enumDefault + "\");";
36
+ }
37
+ }
31
38
  const ret = new chunk_1.Chunk()
32
39
  .appendString("let ")
33
40
  .appendString(traversal_1.Traversal.prefixVariable(traversal_1.Traversal.escapeNamespace(found.getName().toLowerCase())))
@@ -36,6 +43,26 @@ class DataTranspiler {
36
43
  .appendString(value);
37
44
  return ret;
38
45
  }
46
+ static findEnumDefault(scope, _enumType) {
47
+ let current = scope;
48
+ while (current) {
49
+ const vars = current.getData().vars;
50
+ for (const key of Object.keys(vars)) {
51
+ const v = vars[key];
52
+ if (v.getMeta().includes("enum" /* abaplint.IdentifierMeta.Enum */)) {
53
+ const structType = v.getType();
54
+ if (structType instanceof abaplint.BasicTypes.StructureType) {
55
+ const components = structType.getComponents();
56
+ if (components.length > 0) {
57
+ return components[0].name.toUpperCase();
58
+ }
59
+ }
60
+ }
61
+ }
62
+ current = current.getParent();
63
+ }
64
+ return undefined;
65
+ }
39
66
  static buildValue(node, name, traversal) {
40
67
  let value = "";
41
68
  const val = node.findFirstExpression(abaplint.Expressions.Value);
@@ -123,6 +123,7 @@ export * from "./select";
123
123
  export * from "./selection_screen";
124
124
  export * from "./set_bit";
125
125
  export * from "./set_dataset";
126
+ export * from "./set_extended_check";
126
127
  export * from "./set_handler";
127
128
  export * from "./set_language";
128
129
  export * from "./set_locale";
@@ -139,6 +139,7 @@ __exportStar(require("./select"), exports);
139
139
  __exportStar(require("./selection_screen"), exports);
140
140
  __exportStar(require("./set_bit"), exports);
141
141
  __exportStar(require("./set_dataset"), exports);
142
+ __exportStar(require("./set_extended_check"), exports);
142
143
  __exportStar(require("./set_handler"), exports);
143
144
  __exportStar(require("./set_language"), exports);
144
145
  __exportStar(require("./set_locale"), exports);
@@ -4,7 +4,7 @@ exports.RetryTranspiler = void 0;
4
4
  const chunk_1 = require("../chunk");
5
5
  class RetryTranspiler {
6
6
  transpile(_node, _traversal) {
7
- return new chunk_1.Chunk(`throw new Error("Retry, not supported, transpiler");`);
7
+ return new chunk_1.Chunk(`throw new Error("RETRY, not supported, transpiler");`);
8
8
  }
9
9
  }
10
10
  exports.RetryTranspiler = RetryTranspiler;
@@ -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 SetExtendedCheckTranspiler 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.SetExtendedCheckTranspiler = void 0;
4
+ const chunk_1 = require("../chunk");
5
+ class SetExtendedCheckTranspiler {
6
+ transpile(_node, _traversal) {
7
+ return new chunk_1.Chunk(`throw new Error("SET EXTENDED CHECK, not supported, transpiler");`);
8
+ }
9
+ }
10
+ exports.SetExtendedCheckTranspiler = SetExtendedCheckTranspiler;
11
+ //# sourceMappingURL=set_extended_check.js.map
@@ -4,7 +4,7 @@ exports.StopTranspiler = void 0;
4
4
  const chunk_1 = require("../chunk");
5
5
  class StopTranspiler {
6
6
  transpile(_node, _traversal) {
7
- return new chunk_1.Chunk(`throw new Error("Stop, not supported, transpiler");`);
7
+ return new chunk_1.Chunk(`throw new Error("STOP, not supported, transpiler");`);
8
8
  }
9
9
  }
10
10
  exports.StopTranspiler = StopTranspiler;
@@ -15,6 +15,7 @@ export * from "./module";
15
15
  export * from "./select";
16
16
  export * from "./method";
17
17
  export * from "./try";
18
+ export * from "./type_enum";
18
19
  export * from "./types";
19
20
  export * from "./when";
20
21
  export * from "./while";
@@ -31,6 +31,7 @@ __exportStar(require("./module"), exports);
31
31
  __exportStar(require("./select"), exports);
32
32
  __exportStar(require("./method"), exports);
33
33
  __exportStar(require("./try"), exports);
34
+ __exportStar(require("./type_enum"), exports);
34
35
  __exportStar(require("./types"), exports);
35
36
  __exportStar(require("./when"), exports);
36
37
  __exportStar(require("./while"), exports);
@@ -0,0 +1,7 @@
1
+ import * as abaplint from "@abaplint/core";
2
+ import { IStructureTranspiler } from "./_structure_transpiler";
3
+ import { Traversal } from "../traversal";
4
+ import { Chunk } from "../chunk";
5
+ export declare class TypeEnumTranspiler implements IStructureTranspiler {
6
+ transpile(node: abaplint.Nodes.StructureNode, _traversal: Traversal): Chunk;
7
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypeEnumTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
5
+ const traversal_1 = require("../traversal");
6
+ const chunk_1 = require("../chunk");
7
+ class TypeEnumTranspiler {
8
+ transpile(node, _traversal) {
9
+ const begin = node.findDirectStatement(abaplint.Statements.TypeEnumBegin);
10
+ if (begin === undefined) {
11
+ return new chunk_1.Chunk("");
12
+ }
13
+ const nsNames = begin.findAllExpressions(abaplint.Expressions.NamespaceSimpleName);
14
+ if (nsNames.length < 2) {
15
+ return new chunk_1.Chunk("");
16
+ }
17
+ const structureName = nsNames[1].concatTokens().toLowerCase();
18
+ const values = [];
19
+ for (const t of node.findDirectStatements(abaplint.Statements.Type)) {
20
+ const name = t.findFirstExpression(abaplint.Expressions.NamespaceSimpleName);
21
+ if (name) {
22
+ values.push(name.concatTokens().toLowerCase());
23
+ }
24
+ }
25
+ const fields = values.map(v => `"${v}": new abap.types.String()`).join(",\n");
26
+ let ret = `let ${traversal_1.Traversal.prefixVariable(structureName)} = new abap.types.Structure({
27
+ ${fields}});\n`;
28
+ for (const v of values) {
29
+ ret += `${traversal_1.Traversal.prefixVariable(structureName)}.get().${v}.set("${v.toUpperCase()}");\n`;
30
+ }
31
+ return new chunk_1.Chunk(ret);
32
+ }
33
+ }
34
+ exports.TypeEnumTranspiler = TypeEnumTranspiler;
35
+ //# sourceMappingURL=type_enum.js.map
@@ -195,6 +195,12 @@ class TranspileTypes {
195
195
  else if (type instanceof abaplint.BasicTypes.DecFloat34Type) {
196
196
  resolved = "DecFloat34";
197
197
  }
198
+ else if (type instanceof abaplint.BasicTypes.EnumType) {
199
+ resolved = "String";
200
+ if (type.getQualifiedName() !== undefined) {
201
+ extra = "{qualifiedName: \"" + type.getQualifiedName()?.toUpperCase() + "\"}";
202
+ }
203
+ }
198
204
  else if (type instanceof abaplint.BasicTypes.UnknownType) {
199
205
  return `(() => { throw new Error("Unknown type: ${type.getError()}") })()`;
200
206
  }
@@ -100,9 +100,6 @@ exports.config = {
100
100
  "begin_end_names": true,
101
101
  "check_syntax": true,
102
102
  "form_no_dash": true,
103
- "obsolete_statement": {
104
- "setExtended": true,
105
- },
106
103
  "forbidden_identifier": {
107
104
  "check": [],
108
105
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.13.0",
3
+ "version": "2.13.2",
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.118.1",
32
+ "@abaplint/core": "^2.118.7",
33
33
  "source-map": "^0.7.6"
34
34
  },
35
35
  "devDependencies": {