@abaplint/transpiler 1.7.28 → 1.7.32
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/database_setup.js +7 -1
- package/build/src/expressions/call_transformation_parameters.js +1 -1
- package/build/src/expressions/method_source.js +12 -2
- package/build/src/statements/call_transformation.js +1 -1
- package/build/src/unit_test.js +30 -29
- package/build/src/validation.js +1 -1
- package/package.json +4 -4
|
@@ -66,8 +66,14 @@ class DatabaseSetup {
|
|
|
66
66
|
if (type instanceof abaplint.BasicTypes.CharacterType) {
|
|
67
67
|
return `NCHAR(${type.getLength()})`;
|
|
68
68
|
}
|
|
69
|
+
else if (type instanceof abaplint.BasicTypes.StringType) {
|
|
70
|
+
return `TEXT`;
|
|
71
|
+
}
|
|
72
|
+
else if (type instanceof abaplint.BasicTypes.IntegerType) {
|
|
73
|
+
return `INT`;
|
|
74
|
+
}
|
|
69
75
|
else {
|
|
70
|
-
throw "
|
|
76
|
+
throw "database_setup, todo toType handle: " + type.constructor.name;
|
|
71
77
|
}
|
|
72
78
|
}
|
|
73
79
|
}
|
|
@@ -18,7 +18,7 @@ class CallTransformationParametersTranspiler {
|
|
|
18
18
|
}
|
|
19
19
|
res.appendString(c.concatTokens());
|
|
20
20
|
}
|
|
21
|
-
else if (c.get() instanceof abaplint.Expressions.
|
|
21
|
+
else if (c.get() instanceof abaplint.Expressions.SimpleSource3) {
|
|
22
22
|
res.appendChunk(traversal.traverse(c));
|
|
23
23
|
}
|
|
24
24
|
else if (c.concatTokens() === "=") {
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MethodSourceTranspiler = void 0;
|
|
4
4
|
const core_1 = require("@abaplint/core");
|
|
5
5
|
const chunk_1 = require("../chunk");
|
|
6
|
+
const _1 = require(".");
|
|
6
7
|
class MethodSourceTranspiler {
|
|
7
8
|
constructor(prepend) {
|
|
8
9
|
this.prepend = (prepend || "") + "await ";
|
|
@@ -18,8 +19,17 @@ class MethodSourceTranspiler {
|
|
|
18
19
|
}
|
|
19
20
|
else if (child.get() instanceof core_1.Expressions.Dynamic && (nextChild === null || nextChild === void 0 ? void 0 : nextChild.concatTokens()) === "=>") {
|
|
20
21
|
const second = child.getChildren()[1];
|
|
21
|
-
if (second.get() instanceof core_1.Expressions.FieldChain) {
|
|
22
|
-
|
|
22
|
+
if (second.get() instanceof core_1.Expressions.FieldChain && second instanceof core_1.Nodes.ExpressionNode) {
|
|
23
|
+
const t = new _1.FieldChainTranspiler(true).transpile(second, traversal).getCode();
|
|
24
|
+
const lookup = traversal.lookupClassOrInterface(t, child.getFirstToken(), true);
|
|
25
|
+
const lookupException = traversal.lookupClassOrInterface("'CX_SY_DYN_CALL_ILLEGAL_CLASS'", child.getFirstToken(), true);
|
|
26
|
+
// eslint-disable-next-line max-len
|
|
27
|
+
ret.appendString(`if (${lookup} === undefined && ${lookupException} === undefined) { throw "CX_SY_DYN_CALL_ILLEGAL_CLASS not found"; }\n`);
|
|
28
|
+
ret.appendString(`if (${lookup} === undefined) { throw new ${lookupException}(); }\n`);
|
|
29
|
+
if (i === 0) {
|
|
30
|
+
ret.appendString(this.prepend);
|
|
31
|
+
}
|
|
32
|
+
ret.appendString(lookup);
|
|
23
33
|
}
|
|
24
34
|
else if (second.get() instanceof core_1.Expressions.Constant) {
|
|
25
35
|
const lookup = traversal.lookupClassOrInterface(second.getFirstToken().getStr(), child.getFirstToken(), true);
|
|
@@ -10,7 +10,7 @@ class CallTransformationTranspiler {
|
|
|
10
10
|
const options = [];
|
|
11
11
|
const name = (_a = node.findDirectExpression(abaplint.Expressions.NamespaceSimpleName)) === null || _a === void 0 ? void 0 : _a.concatTokens();
|
|
12
12
|
options.push("name: \"" + name + "\"");
|
|
13
|
-
const sourceXML = node.findDirectExpression(abaplint.Expressions.
|
|
13
|
+
const sourceXML = node.findDirectExpression(abaplint.Expressions.SimpleSource3);
|
|
14
14
|
if (sourceXML) {
|
|
15
15
|
options.push("sourceXML: " + traversal.traverse(sourceXML).getCode());
|
|
16
16
|
}
|
package/build/src/unit_test.js
CHANGED
|
@@ -19,27 +19,28 @@ export async function initializeABAP(settings) {\n`;
|
|
|
19
19
|
return ret;
|
|
20
20
|
}
|
|
21
21
|
unitTestScript(reg, skip, _only) {
|
|
22
|
-
let ret =
|
|
22
|
+
let ret = `/* eslint-disable curly */
|
|
23
|
+
import fs from "fs";
|
|
23
24
|
import path from "path";
|
|
24
|
-
import {
|
|
25
|
-
import {fileURLToPath} from 'url';
|
|
26
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
25
|
+
import {fileURLToPath} from "url";
|
|
27
26
|
import {initializeABAP} from "./init.mjs";
|
|
28
27
|
import runtime from "@abaplint/runtime";
|
|
29
28
|
|
|
29
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
30
|
+
|
|
30
31
|
async function run() {
|
|
31
32
|
await initializeABAP();
|
|
32
33
|
const unit = new runtime.UnitTestResult();
|
|
33
34
|
let clas;
|
|
34
35
|
let locl;
|
|
35
36
|
let meth;
|
|
36
|
-
try {\n`;
|
|
37
|
+
try {\n`;
|
|
37
38
|
for (const obj of reg.getObjects()) {
|
|
38
39
|
if (reg.isDependency(obj) || !(obj instanceof abaplint.Objects.Class)) {
|
|
39
40
|
continue;
|
|
40
41
|
}
|
|
41
42
|
ret += `// --------------------------------------------\n`;
|
|
42
|
-
ret += `clas = unit.addObject("${obj.getName()}");\n`;
|
|
43
|
+
ret += ` clas = unit.addObject("${obj.getName()}");\n`;
|
|
43
44
|
for (const file of obj.getABAPFiles()) {
|
|
44
45
|
for (const def of file.getInfo().listClassDefinitions()) {
|
|
45
46
|
if (def.isForTesting === false
|
|
@@ -47,10 +48,10 @@ try {\n`;
|
|
|
47
48
|
|| def.methods.length === 0) {
|
|
48
49
|
continue;
|
|
49
50
|
}
|
|
50
|
-
ret += `{
|
|
51
|
-
const {${def.name}} = await import("./${obj.getName().toLowerCase()}.${obj.getType().toLowerCase()}.testclasses.mjs");
|
|
52
|
-
locl = clas.addTestClass("${def.name}")
|
|
53
|
-
|
|
51
|
+
ret += ` {
|
|
52
|
+
const {${def.name}} = await import("./${obj.getName().toLowerCase()}.${obj.getType().toLowerCase()}.testclasses.mjs");
|
|
53
|
+
locl = clas.addTestClass("${def.name}");
|
|
54
|
+
if (${def.name}.class_setup) await ${def.name}.class_setup();\n`;
|
|
54
55
|
for (const m of def.methods) {
|
|
55
56
|
if (m.isForTesting === false) {
|
|
56
57
|
continue;
|
|
@@ -62,31 +63,31 @@ locl = clas.addTestClass("${def.name}");\n`;
|
|
|
62
63
|
ret += ` meth.skip();\n`;
|
|
63
64
|
continue;
|
|
64
65
|
}
|
|
65
|
-
ret += `{\n
|
|
66
|
-
ret += `
|
|
67
|
-
ret += `
|
|
68
|
-
ret += `
|
|
69
|
-
ret += `
|
|
70
|
-
ret += `
|
|
71
|
-
ret += `
|
|
72
|
-
ret += `}\n`;
|
|
66
|
+
ret += ` {\n const test = await (new ${def.name}()).constructor_();\n`;
|
|
67
|
+
ret += ` if (test.setup) await test.setup();\n`;
|
|
68
|
+
ret += ` console.log("${obj.getName()}: running ${def.name}->${m.name}");\n`;
|
|
69
|
+
ret += ` meth = locl.addMethod("${m.name}");\n`;
|
|
70
|
+
ret += ` await test.${m.name}();\n`;
|
|
71
|
+
ret += ` meth.pass();\n`;
|
|
72
|
+
ret += ` if (test.teardown) await test.teardown();\n`;
|
|
73
|
+
ret += ` }\n`;
|
|
73
74
|
}
|
|
74
|
-
ret += `if (${def.name}.class_teardown) await ${def.name}.class_teardown();\n`;
|
|
75
|
-
ret += `}\n`;
|
|
75
|
+
ret += ` if (${def.name}.class_teardown) await ${def.name}.class_teardown();\n`;
|
|
76
|
+
ret += ` }\n`;
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
80
|
ret += `// -------------------END-------------------
|
|
80
|
-
console.log(abap.console.get());
|
|
81
|
-
fs.writeFileSync(__dirname + path.sep + "output.xml", unit.xUnitXML());
|
|
82
|
-
} catch (e) {
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
console.log(abap.console.get());
|
|
82
|
+
fs.writeFileSync(__dirname + path.sep + "output.xml", unit.xUnitXML());
|
|
83
|
+
} catch (e) {
|
|
84
|
+
if (meth) {
|
|
85
|
+
meth.fail();
|
|
86
|
+
}
|
|
87
|
+
console.log(abap.console.get());
|
|
88
|
+
fs.writeFileSync(__dirname + path.sep + "output.xml", unit.xUnitXML());
|
|
89
|
+
throw e;
|
|
85
90
|
}
|
|
86
|
-
console.log(abap.console.get());
|
|
87
|
-
fs.writeFileSync(__dirname + path.sep + "output.xml", unit.xUnitXML());
|
|
88
|
-
throw e;
|
|
89
|
-
}
|
|
90
91
|
}
|
|
91
92
|
|
|
92
93
|
run().then(() => {
|
package/build/src/validation.js
CHANGED
|
@@ -28,7 +28,7 @@ exports.config = {
|
|
|
28
28
|
},
|
|
29
29
|
"parser_error": true,
|
|
30
30
|
"allowed_object_types": {
|
|
31
|
-
"allowed": ["INTF", "CLAS", "PROG", "DEVC", "TABL", "XSLT", "TYPE", "DTEL", "DOMA", "TTYP", "MSAG", "FUGR"],
|
|
31
|
+
"allowed": ["INTF", "CLAS", "PROG", "DEVC", "TABL", "XSLT", "SICF", "TYPE", "DTEL", "DOMA", "TTYP", "MSAG", "FUGR"],
|
|
32
32
|
},
|
|
33
33
|
"exit_or_check": {
|
|
34
34
|
"allowCheck": true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.32",
|
|
4
4
|
"description": "Transpiler",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"typings": "build/src/index.d.ts",
|
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
"author": "abaplint",
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@abaplint/core": "^2.84.
|
|
30
|
+
"@abaplint/core": "^2.84.7",
|
|
31
31
|
"source-map": "^0.7.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/chai": "^4.3.0",
|
|
35
35
|
"@types/mocha": "^9.1.0",
|
|
36
|
-
"chai": "^4.3.
|
|
37
|
-
"mocha": "^9.
|
|
36
|
+
"chai": "^4.3.5",
|
|
37
|
+
"mocha": "^9.2.0",
|
|
38
38
|
"source-map-support": "^0.5.21",
|
|
39
39
|
"typescript": "^4.5.5"
|
|
40
40
|
}
|