@abaplint/transpiler-cli 2.7.120 → 2.7.122
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/bundle.js +95 -67
- package/package.json +4 -4
package/build/bundle.js
CHANGED
|
@@ -49047,7 +49047,7 @@ class Registry {
|
|
|
49047
49047
|
}
|
|
49048
49048
|
static abaplintVersion() {
|
|
49049
49049
|
// magic, see build script "version.sh"
|
|
49050
|
-
return "2.102.
|
|
49050
|
+
return "2.102.61";
|
|
49051
49051
|
}
|
|
49052
49052
|
getDDICReferences() {
|
|
49053
49053
|
return this.ddicReferences;
|
|
@@ -51611,7 +51611,7 @@ class CheckSubrc extends _abap_rule_1.ABAPRule {
|
|
|
51611
51611
|
|
|
51612
51612
|
If sy-dbcnt is checked after database statements, it is considered okay.
|
|
51613
51613
|
|
|
51614
|
-
"SELECT SINGLE @abap_true FROM " is considered as an existence check
|
|
51614
|
+
"SELECT SINGLE @abap_true FROM " is considered as an existence check, also "SELECT COUNT( * )" is considered okay
|
|
51615
51615
|
|
|
51616
51616
|
If IS ASSIGNED is checked after assigning, it is considered okay.
|
|
51617
51617
|
|
|
@@ -51662,6 +51662,8 @@ FIND statement with MATCH COUNT is considered okay if subrc is not checked`,
|
|
|
51662
51662
|
else if (config.selectTable === true
|
|
51663
51663
|
&& statement.get() instanceof Statements.Select
|
|
51664
51664
|
&& statement.concatTokens().toUpperCase().startsWith("SELECT SINGLE ") === false
|
|
51665
|
+
&& statement.concatTokens().toUpperCase().startsWith("SELECT COUNT( * ) ") === false
|
|
51666
|
+
&& statement.concatTokens().toUpperCase().startsWith("SELECT COUNT(*) ") === false
|
|
51665
51667
|
&& this.isChecked(i, statements) === false
|
|
51666
51668
|
&& this.checksDbcnt(i, statements) === false) {
|
|
51667
51669
|
issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));
|
|
@@ -78607,6 +78609,7 @@ exports.MessageTranspiler = MessageTranspiler;
|
|
|
78607
78609
|
|
|
78608
78610
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
78609
78611
|
exports.MethodImplementationTranspiler = void 0;
|
|
78612
|
+
/* eslint-disable max-len */
|
|
78610
78613
|
const abaplint = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
|
|
78611
78614
|
const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
|
|
78612
78615
|
const traversal_1 = __webpack_require__(/*! ../traversal */ "./node_modules/@abaplint/transpiler/build/src/traversal.js");
|
|
@@ -78615,7 +78618,7 @@ const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/tr
|
|
|
78615
78618
|
const unique_identifier_1 = __webpack_require__(/*! ../unique_identifier */ "./node_modules/@abaplint/transpiler/build/src/unique_identifier.js");
|
|
78616
78619
|
class MethodImplementationTranspiler {
|
|
78617
78620
|
transpile(node, traversal) {
|
|
78618
|
-
var _a, _b;
|
|
78621
|
+
var _a, _b, _c;
|
|
78619
78622
|
const token = node.findFirstExpression(abaplint.Expressions.MethodName).getFirstToken();
|
|
78620
78623
|
let methodName = token.getStr();
|
|
78621
78624
|
const scope = traversal.findCurrentScopeByToken(token);
|
|
@@ -78647,13 +78650,27 @@ class MethodImplementationTranspiler {
|
|
|
78647
78650
|
unique = "INPUT";
|
|
78648
78651
|
}
|
|
78649
78652
|
const parameterDefault = methodDef === null || methodDef === void 0 ? void 0 : methodDef.getParameterDefault(varName);
|
|
78650
|
-
|
|
78653
|
+
const isOptional = methodDef === null || methodDef === void 0 ? void 0 : methodDef.getOptional().includes(varName.toUpperCase());
|
|
78651
78654
|
const passByValue = identifier.getMeta().includes("pass_by_value" /* abaplint.IdentifierMeta.PassByValue */);
|
|
78652
78655
|
const type = identifier.getType();
|
|
78653
78656
|
if (identifier.getMeta().includes("exporting" /* abaplint.IdentifierMeta.MethodExporting */)) {
|
|
78654
78657
|
after += `let ${varName} = ${unique}?.${varName} || ${new transpile_types_1.TranspileTypes().toType(identifier.getType())};\n`;
|
|
78658
|
+
// begin new
|
|
78659
|
+
}
|
|
78660
|
+
else if (identifier.getMeta().includes("importing" /* abaplint.IdentifierMeta.MethodImporting */)
|
|
78661
|
+
&& parameterDefault === undefined
|
|
78662
|
+
&& passByValue === false
|
|
78663
|
+
&& isOptional === false
|
|
78664
|
+
&& type.isGeneric() === false) {
|
|
78665
|
+
after += `let ${varName} = ${unique}?.${varName};\n`;
|
|
78666
|
+
if (identifier.getType().getQualifiedName() !== undefined && identifier.getType().getQualifiedName() !== "") {
|
|
78667
|
+
after += `if (${varName}.getQualifiedName === undefined || ${varName}.getQualifiedName() !== "${(_a = identifier.getType().getQualifiedName()) === null || _a === void 0 ? void 0 : _a.toUpperCase()}") { ${varName} = undefined; }\n`;
|
|
78668
|
+
}
|
|
78669
|
+
after += `if (${varName} === undefined) { ${varName} = ${new transpile_types_1.TranspileTypes().toType(identifier.getType())}.set(${unique}.${varName}); }\n`;
|
|
78670
|
+
// end new
|
|
78655
78671
|
}
|
|
78656
|
-
else if (identifier.getMeta().includes("importing" /* abaplint.IdentifierMeta.MethodImporting */)
|
|
78672
|
+
else if (identifier.getMeta().includes("importing" /* abaplint.IdentifierMeta.MethodImporting */)
|
|
78673
|
+
&& type.isGeneric() === false) {
|
|
78657
78674
|
after += new transpile_types_1.TranspileTypes().declare(identifier) + "\n";
|
|
78658
78675
|
// note: it might be nessesary to do a type conversion, eg char is passed to xstring parameter
|
|
78659
78676
|
after += "if (" + unique + " && " + unique + "." + varName + ") {" + varName + ".set(" + unique + "." + varName + ");}\n";
|
|
@@ -78663,67 +78680,7 @@ class MethodImplementationTranspiler {
|
|
|
78663
78680
|
after += "if (" + unique + " && " + unique + "." + varName + ") {" + varName + " = " + unique + "." + varName + ";}\n";
|
|
78664
78681
|
}
|
|
78665
78682
|
if (parameterDefault) {
|
|
78666
|
-
|
|
78667
|
-
if (parameterDefault.get() instanceof abaplint.Expressions.Constant) {
|
|
78668
|
-
val = new expressions_1.ConstantTranspiler().transpile(parameterDefault, traversal).getCode();
|
|
78669
|
-
}
|
|
78670
|
-
else if (parameterDefault.get() instanceof abaplint.Expressions.FieldChain) {
|
|
78671
|
-
if (parameterDefault.getFirstToken().getStr().toLowerCase() === "abap_true") {
|
|
78672
|
-
val = "abap.builtin.abap_true";
|
|
78673
|
-
}
|
|
78674
|
-
else if (parameterDefault.getFirstToken().getStr().toLowerCase() === "abap_false") {
|
|
78675
|
-
val = "abap.builtin.abap_false";
|
|
78676
|
-
}
|
|
78677
|
-
else if (parameterDefault.getFirstToken().getStr().toLowerCase() === "abap_undefined") {
|
|
78678
|
-
val = "abap.builtin.abap_undefined";
|
|
78679
|
-
}
|
|
78680
|
-
else if (parameterDefault.getFirstToken().getStr().toLowerCase() === "space") {
|
|
78681
|
-
val = "abap.builtin.space";
|
|
78682
|
-
}
|
|
78683
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-langu") {
|
|
78684
|
-
val = "abap.builtin.sy.get().langu";
|
|
78685
|
-
}
|
|
78686
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-mandt") {
|
|
78687
|
-
val = "abap.builtin.sy.get().mandt";
|
|
78688
|
-
}
|
|
78689
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-uname") {
|
|
78690
|
-
val = "abap.builtin.sy.get().uname";
|
|
78691
|
-
}
|
|
78692
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-sysid") {
|
|
78693
|
-
val = "abap.builtin.sy.get().sysid";
|
|
78694
|
-
}
|
|
78695
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgid") {
|
|
78696
|
-
val = "abap.builtin.sy.get().msgid";
|
|
78697
|
-
}
|
|
78698
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgty") {
|
|
78699
|
-
val = "abap.builtin.sy.get().msgty";
|
|
78700
|
-
}
|
|
78701
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgno") {
|
|
78702
|
-
val = "abap.builtin.sy.get().msgno";
|
|
78703
|
-
}
|
|
78704
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgv1") {
|
|
78705
|
-
val = "abap.builtin.sy.get().msgv1";
|
|
78706
|
-
}
|
|
78707
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgv2") {
|
|
78708
|
-
val = "abap.builtin.sy.get().msgv2";
|
|
78709
|
-
}
|
|
78710
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgv3") {
|
|
78711
|
-
val = "abap.builtin.sy.get().msgv3";
|
|
78712
|
-
}
|
|
78713
|
-
else if (parameterDefault.concatTokens().toLowerCase() === "sy-msgv4") {
|
|
78714
|
-
val = "abap.builtin.sy.get().msgv4";
|
|
78715
|
-
}
|
|
78716
|
-
else {
|
|
78717
|
-
// note: this can be difficult, the "def" might be from an interface, ie. a different scope than the method
|
|
78718
|
-
val = new expressions_1.FieldChainTranspiler().transpile(parameterDefault, traversal, true, methodDef === null || methodDef === void 0 ? void 0 : methodDef.getFilename(), true).getCode();
|
|
78719
|
-
if (val.startsWith(parameterDefault.getFirstToken().getStr().toLowerCase()) === true) {
|
|
78720
|
-
val = "this." + val;
|
|
78721
|
-
}
|
|
78722
|
-
}
|
|
78723
|
-
}
|
|
78724
|
-
else {
|
|
78725
|
-
throw new Error("MethodImplementationTranspiler, unknown default param type");
|
|
78726
|
-
}
|
|
78683
|
+
const val = this.buildDefault(parameterDefault, traversal, methodDef === null || methodDef === void 0 ? void 0 : methodDef.getFilename());
|
|
78727
78684
|
if (passByValue === true || identifier.getMeta().includes("changing" /* abaplint.IdentifierMeta.MethodChanging */)) {
|
|
78728
78685
|
after += "if (" + unique + " === undefined || " + unique + "." + varName + " === undefined) {" + varName + ".set(" + val + ");}\n";
|
|
78729
78686
|
}
|
|
@@ -78756,7 +78713,7 @@ class MethodImplementationTranspiler {
|
|
|
78756
78713
|
}
|
|
78757
78714
|
if (method && method.isStatic()) {
|
|
78758
78715
|
// in ABAP static methods can be called with instance arrows, "->"
|
|
78759
|
-
const className = (
|
|
78716
|
+
const className = (_c = (_b = scope.getParent()) === null || _b === void 0 ? void 0 : _b.getIdentifier().sname) === null || _c === void 0 ? void 0 : _c.toLowerCase();
|
|
78760
78717
|
staticMethod = "async " + traversal_1.Traversal.escapeNamespace(methodName) + "(" + unique + ") {\n" +
|
|
78761
78718
|
"return " + traversal_1.Traversal.escapeNamespace(className) + "." + traversal_1.Traversal.escapeNamespace(methodName) + "(" + unique + ");\n" +
|
|
78762
78719
|
"}\n" + "static ";
|
|
@@ -78766,6 +78723,77 @@ class MethodImplementationTranspiler {
|
|
|
78766
78723
|
return new chunk_1.Chunk().append(str, node, traversal);
|
|
78767
78724
|
}
|
|
78768
78725
|
/////////////////////////////
|
|
78726
|
+
buildDefault(parameterDefault, traversal, filename) {
|
|
78727
|
+
let val = "";
|
|
78728
|
+
if (parameterDefault.get() instanceof abaplint.Expressions.Constant) {
|
|
78729
|
+
val = new expressions_1.ConstantTranspiler().transpile(parameterDefault, traversal).getCode();
|
|
78730
|
+
}
|
|
78731
|
+
else if (parameterDefault.get() instanceof abaplint.Expressions.FieldChain) {
|
|
78732
|
+
val = this.buildDefaultFallback(parameterDefault, traversal, filename);
|
|
78733
|
+
}
|
|
78734
|
+
else {
|
|
78735
|
+
throw new Error("MethodImplementationTranspiler, unknown default param type");
|
|
78736
|
+
}
|
|
78737
|
+
return val;
|
|
78738
|
+
}
|
|
78739
|
+
buildDefaultFallback(parameterDefault, traversal, filename) {
|
|
78740
|
+
let val = "";
|
|
78741
|
+
const firstTokenLower = parameterDefault.getFirstToken().getStr().toLowerCase();
|
|
78742
|
+
const concat = parameterDefault.concatTokens().toLowerCase();
|
|
78743
|
+
if (firstTokenLower === "abap_true") {
|
|
78744
|
+
val = "abap.builtin.abap_true";
|
|
78745
|
+
}
|
|
78746
|
+
else if (firstTokenLower === "abap_false") {
|
|
78747
|
+
val = "abap.builtin.abap_false";
|
|
78748
|
+
}
|
|
78749
|
+
else if (firstTokenLower === "abap_undefined") {
|
|
78750
|
+
val = "abap.builtin.abap_undefined";
|
|
78751
|
+
}
|
|
78752
|
+
else if (firstTokenLower === "space") {
|
|
78753
|
+
val = "abap.builtin.space";
|
|
78754
|
+
}
|
|
78755
|
+
else if (concat === "sy-langu") {
|
|
78756
|
+
val = "abap.builtin.sy.get().langu";
|
|
78757
|
+
}
|
|
78758
|
+
else if (concat === "sy-mandt") {
|
|
78759
|
+
val = "abap.builtin.sy.get().mandt";
|
|
78760
|
+
}
|
|
78761
|
+
else if (concat === "sy-uname") {
|
|
78762
|
+
val = "abap.builtin.sy.get().uname";
|
|
78763
|
+
}
|
|
78764
|
+
else if (concat === "sy-sysid") {
|
|
78765
|
+
val = "abap.builtin.sy.get().sysid";
|
|
78766
|
+
}
|
|
78767
|
+
else if (concat === "sy-msgid") {
|
|
78768
|
+
val = "abap.builtin.sy.get().msgid";
|
|
78769
|
+
}
|
|
78770
|
+
else if (concat === "sy-msgty") {
|
|
78771
|
+
val = "abap.builtin.sy.get().msgty";
|
|
78772
|
+
}
|
|
78773
|
+
else if (concat === "sy-msgno") {
|
|
78774
|
+
val = "abap.builtin.sy.get().msgno";
|
|
78775
|
+
}
|
|
78776
|
+
else if (concat === "sy-msgv1") {
|
|
78777
|
+
val = "abap.builtin.sy.get().msgv1";
|
|
78778
|
+
}
|
|
78779
|
+
else if (concat === "sy-msgv2") {
|
|
78780
|
+
val = "abap.builtin.sy.get().msgv2";
|
|
78781
|
+
}
|
|
78782
|
+
else if (concat === "sy-msgv3") {
|
|
78783
|
+
val = "abap.builtin.sy.get().msgv3";
|
|
78784
|
+
}
|
|
78785
|
+
else if (concat === "sy-msgv4") {
|
|
78786
|
+
val = "abap.builtin.sy.get().msgv4";
|
|
78787
|
+
}
|
|
78788
|
+
else {
|
|
78789
|
+
// note: this can be difficult, the "def" might be from an interface, ie. a different scope than the method
|
|
78790
|
+
val = new expressions_1.FieldChainTranspiler().transpile(parameterDefault, traversal, true, filename, true).getCode();
|
|
78791
|
+
if (val.startsWith(parameterDefault.getFirstToken().getStr().toLowerCase()) === true) {
|
|
78792
|
+
val = "this." + val;
|
|
78793
|
+
}
|
|
78794
|
+
}
|
|
78795
|
+
return val;
|
|
78796
|
+
}
|
|
78769
78797
|
findMethod(name, cdef, traversal) {
|
|
78770
78798
|
var _a, _b;
|
|
78771
78799
|
if (cdef === undefined) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/transpiler-cli",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.122",
|
|
4
4
|
"description": "Transpiler - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"author": "abaplint",
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@abaplint/transpiler": "^2.7.
|
|
29
|
+
"@abaplint/transpiler": "^2.7.122",
|
|
30
30
|
"@types/glob": "^7.2.0",
|
|
31
31
|
"glob": "=7.2.0",
|
|
32
32
|
"@types/progress": "^2.0.6",
|
|
33
|
-
"@types/node": "^20.8.
|
|
34
|
-
"@abaplint/core": "^2.102.
|
|
33
|
+
"@types/node": "^20.8.8",
|
|
34
|
+
"@abaplint/core": "^2.102.61",
|
|
35
35
|
"progress": "^2.0.3",
|
|
36
36
|
"webpack": "^5.89.0",
|
|
37
37
|
"webpack-cli": "^5.1.4",
|