@abaplint/transpiler 2.3.13 → 2.3.15
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.
- package/build/src/expressions/constant.js +3 -4
- package/build/src/expressions/field_chain.js +11 -2
- package/build/src/expressions/target.js +8 -2
- package/build/src/handlers/handle_abap.d.ts +0 -2
- package/build/src/handlers/handle_abap.js +0 -32
- package/build/src/transpile_types.js +6 -1
- package/build/src/validation.js +1 -1
- package/package.json +2 -2
|
@@ -11,12 +11,11 @@ class ConstantTranspiler {
|
|
|
11
11
|
const int = node.findFirstExpression(core_1.Expressions.Integer);
|
|
12
12
|
if (int) {
|
|
13
13
|
const concat = int.concatTokens().trim();
|
|
14
|
-
|
|
15
|
-
let ret = "constant_" + post + int.getLastToken().getStr();
|
|
14
|
+
let code = `new abap.types.Integer().set(${concat})`;
|
|
16
15
|
if (this.addGet === true) {
|
|
17
|
-
|
|
16
|
+
code += ".get()";
|
|
18
17
|
}
|
|
19
|
-
return new chunk_1.Chunk().append(
|
|
18
|
+
return new chunk_1.Chunk().append(code, node, traversal);
|
|
20
19
|
}
|
|
21
20
|
let str = node.findDirectExpression(core_1.Expressions.ConstantString);
|
|
22
21
|
if (str === undefined) {
|
|
@@ -42,11 +42,20 @@ class FieldChainTranspiler {
|
|
|
42
42
|
ret.append(".getPointer()", c, traversal);
|
|
43
43
|
}
|
|
44
44
|
else if (c.get() instanceof core_1.Expressions.ComponentName) {
|
|
45
|
-
|
|
45
|
+
const name = c.getFirstToken().getStr().toLowerCase();
|
|
46
|
+
if (name.match(/^\d/)) {
|
|
47
|
+
ret.append(`["` + name + `"]`, c, traversal);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
ret.append(`.` + name, c, traversal);
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
53
|
else if (c instanceof core_1.Nodes.TokenNode) {
|
|
48
54
|
const str = c.getFirstToken().getStr();
|
|
49
|
-
if (str === "-"
|
|
55
|
+
if (str === "-") {
|
|
56
|
+
ret.append(".get()", c, traversal);
|
|
57
|
+
}
|
|
58
|
+
else if (str === "->") {
|
|
50
59
|
ret.append(".get().", c, traversal);
|
|
51
60
|
}
|
|
52
61
|
}
|
|
@@ -22,7 +22,13 @@ class TargetTranspiler {
|
|
|
22
22
|
ret.append(name, c, traversal);
|
|
23
23
|
}
|
|
24
24
|
else if (c.get() instanceof core_1.Expressions.ComponentName) {
|
|
25
|
-
|
|
25
|
+
const name = c.getFirstToken().getStr().toLowerCase();
|
|
26
|
+
if (name.match(/^\d/)) {
|
|
27
|
+
ret.append(`["` + name + `"]`, c, traversal);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
ret.append(`.` + name, c, traversal);
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
33
|
else if (c.get() instanceof core_1.Expressions.AttributeName) {
|
|
28
34
|
const intf = traversal.isInterfaceAttribute(c.getFirstToken());
|
|
@@ -42,7 +48,7 @@ class TargetTranspiler {
|
|
|
42
48
|
ret.appendChunk(new _1.FieldSymbolTranspiler().transpile(c, traversal));
|
|
43
49
|
}
|
|
44
50
|
else if (c.getFirstToken().getStr() === "-") {
|
|
45
|
-
ret.append(".get()
|
|
51
|
+
ret.append(".get()", c, traversal);
|
|
46
52
|
}
|
|
47
53
|
else if (c instanceof core_1.Nodes.ExpressionNode && c.get() instanceof core_1.Expressions.Dereference) {
|
|
48
54
|
ret.append(".getPointer()", c, traversal);
|
|
@@ -9,6 +9,4 @@ export declare class HandleABAP {
|
|
|
9
9
|
private rearrangeClassLocals;
|
|
10
10
|
protected addImportsAndExports(output: IOutputFile): Chunk;
|
|
11
11
|
protected findExports(node: abaplint.Nodes.StructureNode | undefined): string[];
|
|
12
|
-
protected handleConstants(obj: abaplint.ABAPObject, file: abaplint.ABAPFile, reg: abaplint.IRegistry): string;
|
|
13
|
-
protected findConstants(obj: abaplint.ABAPObject, file: abaplint.ABAPFile, reg: abaplint.IRegistry): Set<string>;
|
|
14
12
|
}
|
|
@@ -19,7 +19,6 @@ class HandleABAP {
|
|
|
19
19
|
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.addFilenames) === true) {
|
|
20
20
|
chunk.appendString("// " + file.getFilename() + "\n");
|
|
21
21
|
}
|
|
22
|
-
chunk.appendString(this.handleConstants(obj, file, reg));
|
|
23
22
|
const rearranged = new rearranger_1.Rearranger().run(obj.getType(), file.getStructure());
|
|
24
23
|
const contents = new traversal_1.Traversal(spaghetti, file, obj, reg, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.unknownTypes) === "runtimeError").traverse(rearranged);
|
|
25
24
|
chunk.appendChunk(contents);
|
|
@@ -137,37 +136,6 @@ class HandleABAP {
|
|
|
137
136
|
}
|
|
138
137
|
return res;
|
|
139
138
|
}
|
|
140
|
-
handleConstants(obj, file, reg) {
|
|
141
|
-
var _a, _b;
|
|
142
|
-
let result = "";
|
|
143
|
-
const constants = this.findConstants(obj, file, reg);
|
|
144
|
-
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.skipConstants) === false || ((_b = this.options) === null || _b === void 0 ? void 0 : _b.skipConstants) === undefined) {
|
|
145
|
-
for (const concat of Array.from(constants).sort()) {
|
|
146
|
-
const post = concat.startsWith("-") ? "minus_" : "";
|
|
147
|
-
result += `const constant_${post}${concat.replace("-", "")} = new abap.types.Integer().set(${concat});\n`;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return result;
|
|
151
|
-
}
|
|
152
|
-
findConstants(obj, file, reg) {
|
|
153
|
-
var _a, _b;
|
|
154
|
-
let constants = new Set();
|
|
155
|
-
for (const i of ((_a = file.getStructure()) === null || _a === void 0 ? void 0 : _a.findAllExpressions(abaplint.Expressions.Integer)) || []) {
|
|
156
|
-
constants.add(i.concatTokens().replace(" ", ""));
|
|
157
|
-
}
|
|
158
|
-
// extra constants from interfaces, used for default values
|
|
159
|
-
if (obj.getType() === "CLAS") {
|
|
160
|
-
const clas = obj;
|
|
161
|
-
for (const i of ((_b = clas.getClassDefinition()) === null || _b === void 0 ? void 0 : _b.interfaces) || []) {
|
|
162
|
-
const intf = reg.getObject("INTF", i.name);
|
|
163
|
-
const main = intf === null || intf === void 0 ? void 0 : intf.getMainABAPFile();
|
|
164
|
-
if (intf && main) {
|
|
165
|
-
constants = new Set([...constants, ...this.findConstants(intf, main, reg).values()]);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return constants;
|
|
170
|
-
}
|
|
171
139
|
}
|
|
172
140
|
exports.HandleABAP = HandleABAP;
|
|
173
141
|
//# sourceMappingURL=handle_abap.js.map
|
|
@@ -64,7 +64,12 @@ class TranspileTypes {
|
|
|
64
64
|
resolved = "Structure";
|
|
65
65
|
const list = [];
|
|
66
66
|
for (const c of type.getComponents()) {
|
|
67
|
-
|
|
67
|
+
if (c.name.toLowerCase().startsWith("0")) {
|
|
68
|
+
list.push(`"` + c.name.toLowerCase() + `": ` + this.toType(c.type));
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
list.push(c.name.toLowerCase() + ": " + this.toType(c.type));
|
|
72
|
+
}
|
|
68
73
|
}
|
|
69
74
|
extra = "{" + list.join(", ") + "}";
|
|
70
75
|
if (type.getQualifiedName() !== undefined) {
|
package/build/src/validation.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.15",
|
|
4
4
|
"description": "Transpiler",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/src/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"author": "abaplint",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"@abaplint/core": "^2.93.
|
|
31
|
+
"@abaplint/core": "^2.93.50",
|
|
32
32
|
"source-map": "^0.7.4"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|