@abaplint/cli 2.113.219 → 2.113.221
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/cli.js +83 -24
- package/package.json +2 -2
package/build/cli.js
CHANGED
|
@@ -7608,7 +7608,7 @@ const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/co
|
|
|
7608
7608
|
const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
|
|
7609
7609
|
class ReportName extends combi_1.Expression {
|
|
7610
7610
|
getRunnable() {
|
|
7611
|
-
return (0, combi_1.seq)((0, combi_1.regex)(/^[\w
|
|
7611
|
+
return (0, combi_1.seq)((0, combi_1.regex)(/^[\w/$%&]+$/), (0, combi_1.star)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), (0, combi_1.regex)(/^\w+$/))));
|
|
7612
7612
|
}
|
|
7613
7613
|
}
|
|
7614
7614
|
exports.ReportName = ReportName;
|
|
@@ -8166,13 +8166,14 @@ const sql_field_name_1 = __webpack_require__(/*! ./sql_field_name */ "./node_mod
|
|
|
8166
8166
|
const sql_source_1 = __webpack_require__(/*! ./sql_source */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_source.js");
|
|
8167
8167
|
class SQLCase extends combi_1.Expression {
|
|
8168
8168
|
getRunnable() {
|
|
8169
|
+
const abap = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), _1.SimpleFieldChain2);
|
|
8169
8170
|
const field = (0, combi_1.altPrio)(_1.SQLAggregation, SQLCase, _1.SQLFunction, _1.SQLPath, sql_field_name_1.SQLFieldName, constant_1.Constant);
|
|
8170
8171
|
const sub = (0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/", "&&"), (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenLeftW)), field, (0, combi_1.optPrio)((0, combi_1.tok)(tokens_1.WParenRightW)));
|
|
8171
8172
|
const sourc = (0, combi_1.altPrio)(SQLCase, _1.SQLAggregation, _1.SQLFunction, sql_source_1.SQLSource, constant_1.Constant);
|
|
8172
|
-
const val = (0, combi_1.altPrio)(sql_cond_1.SQLCond, constant_1.Constant,
|
|
8173
|
+
const val = (0, combi_1.altPrio)(sql_cond_1.SQLCond, constant_1.Constant, abap);
|
|
8173
8174
|
const when = (0, combi_1.seq)("WHEN", val, "THEN", sourc, (0, combi_1.starPrio)(sub));
|
|
8174
8175
|
const els = (0, combi_1.seq)("ELSE", sourc);
|
|
8175
|
-
return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)("CASE", (0, combi_1.opt)(sql_field_name_1.SQLFieldName), (0, combi_1.plusPrio)(when), (0, combi_1.optPrio)(els), "END"));
|
|
8176
|
+
return (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)("CASE", (0, combi_1.opt)((0, combi_1.altPrio)(sql_field_name_1.SQLFieldName, abap)), (0, combi_1.plusPrio)(when), (0, combi_1.optPrio)(els), "END"));
|
|
8176
8177
|
}
|
|
8177
8178
|
}
|
|
8178
8179
|
exports.SQLCase = SQLCase;
|
|
@@ -15209,7 +15210,8 @@ class ModifyEntities {
|
|
|
15209
15210
|
const updateFrom = (0, combi_1.seq)("UPDATE FROM", expressions_1.Source, (0, combi_1.opt)(relating));
|
|
15210
15211
|
const deleteFrom = (0, combi_1.seq)("DELETE FROM", expressions_1.Source);
|
|
15211
15212
|
const updateFields = (0, combi_1.seq)("UPDATE", fieldsWith);
|
|
15212
|
-
const
|
|
15213
|
+
const updateSetFields = (0, combi_1.seq)("UPDATE SET FIELDS WITH", expressions_1.Source);
|
|
15214
|
+
const operation = (0, combi_1.alt)(updateSetFields, (0, combi_1.seq)("CREATE SET FIELDS WITH", expressions_1.Source), updateFields, deleteFrom, updateFrom, create, execute, (0, combi_1.seq)("CREATE", (0, combi_1.opt)(by), (0, combi_1.optPrio)("AUTO FILL CID"), (0, combi_1.altPrio)(withh, fieldsWith)));
|
|
15213
15215
|
const failed = (0, combi_1.seq)("FAILED", expressions_1.Target);
|
|
15214
15216
|
const result = (0, combi_1.seq)("RESULT", expressions_1.Target);
|
|
15215
15217
|
const mapped = (0, combi_1.seq)("MAPPED", expressions_1.Target);
|
|
@@ -15219,7 +15221,7 @@ class ModifyEntities {
|
|
|
15219
15221
|
const create2 = (0, combi_1.seq)("CREATE", fieldsWith, (0, combi_1.opt)((0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, fieldsWith)));
|
|
15220
15222
|
const create3 = (0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, fieldsWith);
|
|
15221
15223
|
const create4 = (0, combi_1.seq)("CREATE FROM", expressions_1.Source, (0, combi_1.plus)((0, combi_1.seq)("CREATE BY", expressions_1.AssociationName, "FROM", expressions_1.Source)));
|
|
15222
|
-
const entity = (0, combi_1.seq)("ENTITY", (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.EntityAssociation), (0, combi_1.alt)(execute, create, updateFields, deleteFrom, updateFrom, create2, create3, create4));
|
|
15224
|
+
const entity = (0, combi_1.seq)("ENTITY", (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.alt)(expressions_1.NamespaceSimpleName, expressions_1.EntityAssociation), (0, combi_1.alt)(execute, create, updateFields, deleteFrom, updateSetFields, updateFrom, create2, create3, create4));
|
|
15223
15225
|
return (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)("MODIFY", (0, combi_1.alt)(entities, entity), end));
|
|
15224
15226
|
}
|
|
15225
15227
|
}
|
|
@@ -16161,7 +16163,8 @@ class ReadEntities {
|
|
|
16161
16163
|
const result = (0, combi_1.seq)("RESULT", expressions_1.Target);
|
|
16162
16164
|
const failed = (0, combi_1.seq)("FAILED", expressions_1.Target);
|
|
16163
16165
|
const reported = (0, combi_1.seq)("REPORTED", expressions_1.Target);
|
|
16164
|
-
const
|
|
16166
|
+
const foo = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)("BY", expressions_1.AssociationName)), (0, combi_1.alt)(fields, from, all), (0, combi_1.optPrio)(result));
|
|
16167
|
+
const entity = (0, combi_1.seq)("ENTITY", expressions_1.NamespaceSimpleName, (0, combi_1.plus)(foo));
|
|
16165
16168
|
const s = (0, combi_1.seq)("ENTITIES OF", expressions_1.NamespaceSimpleName, (0, combi_1.opt)("IN LOCAL MODE"), (0, combi_1.plus)(entity), (0, combi_1.optPrio)((0, combi_1.seq)("LINK", expressions_1.Target)), (0, combi_1.optPrio)((0, combi_1.per)(failed, reported)));
|
|
16166
16169
|
const byall = (0, combi_1.seq)("BY", expressions_1.AssociationName, all);
|
|
16167
16170
|
const by = (0, combi_1.seq)("BY", expressions_1.AssociationName, fields);
|
|
@@ -17604,11 +17607,13 @@ class Submit {
|
|
|
17604
17607
|
const cover = (0, combi_1.seq)("SAP COVER PAGE", expressions_1.Source);
|
|
17605
17608
|
const copies = (0, combi_1.seq)("COPIES", expressions_1.Source);
|
|
17606
17609
|
const datasetExpiration = (0, combi_1.seq)("DATASET EXPIRATION", expressions_1.Source);
|
|
17610
|
+
const coverText = (0, combi_1.seq)("COVER TEXT", expressions_1.Source);
|
|
17611
|
+
const listName = (0, combi_1.seq)("LIST NAME", expressions_1.Source);
|
|
17607
17612
|
const keep = (0, combi_1.seq)("KEEP IN SPOOL", expressions_1.Source);
|
|
17608
17613
|
const imm = (0, combi_1.seq)("IMMEDIATELY", expressions_1.Source);
|
|
17609
17614
|
const dest = (0, combi_1.seq)("DESTINATION", expressions_1.Source);
|
|
17610
17615
|
const language = (0, combi_1.seq)("LANGUAGE", expressions_1.Source);
|
|
17611
|
-
const perm = (0, combi_1.per)((0, combi_1.plus)(awith), selectionTable, (0, combi_1.plus)(awith), spool, lineSize, lineCount, archive, user, sset, ssetp, keep, cover, imm, layout, dest, language, free, newList, uss, copies, datasetExpiration, "TO SAP-SPOOL", "WITHOUT SPOOL DYNPRO", "VIA SELECTION-SCREEN", exporting, expressions_1.AndReturn, job);
|
|
17616
|
+
const perm = (0, combi_1.per)((0, combi_1.plus)(awith), selectionTable, (0, combi_1.plus)(awith), spool, lineSize, lineCount, archive, user, sset, ssetp, keep, cover, imm, layout, dest, coverText, listName, language, free, newList, uss, copies, datasetExpiration, "TO SAP-SPOOL", "WITHOUT SPOOL DYNPRO", "VIA SELECTION-SCREEN", exporting, expressions_1.AndReturn, job);
|
|
17612
17617
|
const ret = (0, combi_1.seq)("SUBMIT", prog, (0, combi_1.opt)(perm));
|
|
17613
17618
|
return (0, combi_1.verNot)(version_1.Version.Cloud, ret);
|
|
17614
17619
|
}
|
|
@@ -21375,7 +21380,9 @@ class BuiltIn {
|
|
|
21375
21380
|
// https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abennews-610-system.htm
|
|
21376
21381
|
const id3 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), "sy-repid");
|
|
21377
21382
|
const syrepid = new _typed_identifier_1.TypedIdentifier(id3, BuiltIn.filename, new basic_1.CharacterType(40, { qualifiedName: "sy-repid" }), ["read_only" /* IdentifierMeta.ReadOnly */, "built-in" /* IdentifierMeta.BuiltIn */]);
|
|
21378
|
-
|
|
21383
|
+
const id4 = new tokens_1.Identifier(new position_1.Position(this.row++, 1), "syst-repid");
|
|
21384
|
+
const systrepid = new _typed_identifier_1.TypedIdentifier(id4, BuiltIn.filename, new basic_1.CharacterType(40, { qualifiedName: "syst-repid" }), ["read_only" /* IdentifierMeta.ReadOnly */, "built-in" /* IdentifierMeta.BuiltIn */]);
|
|
21385
|
+
return [sy, syst, syrepid, systrepid];
|
|
21379
21386
|
}
|
|
21380
21387
|
buildConstant(name, type, value) {
|
|
21381
21388
|
const id = new tokens_1.Identifier(new position_1.Position(this.row++, 1), name);
|
|
@@ -24395,7 +24402,7 @@ class BasicTypes {
|
|
|
24395
24402
|
const name = typename.concatTokens();
|
|
24396
24403
|
const type = (_d = this.input.scope.getDDIC().lookupDDLS(name)) === null || _d === void 0 ? void 0 : _d.type;
|
|
24397
24404
|
if (type) {
|
|
24398
|
-
return new Types.TableType(basic_1.VoidType.get("
|
|
24405
|
+
return new Types.TableType(basic_1.VoidType.get("RAP-TODO"), options);
|
|
24399
24406
|
}
|
|
24400
24407
|
else if (this.input.scope.getDDIC().inErrorNamespace(name)) {
|
|
24401
24408
|
return new Types.UnknownType(`DDLS ${name} not found`);
|
|
@@ -30682,7 +30689,7 @@ class ClassImplementation {
|
|
|
30682
30689
|
}
|
|
30683
30690
|
else {
|
|
30684
30691
|
// todo: instead of the void type, do proper typing, ie. only empty constructor method
|
|
30685
|
-
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), "super"), _builtin_1.BuiltIn.filename, basic_1.VoidType.get("
|
|
30692
|
+
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), "super"), _builtin_1.BuiltIn.filename, basic_1.VoidType.get("noSuperClass")));
|
|
30686
30693
|
}
|
|
30687
30694
|
input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(new tokens_1.Identifier(new position_1.Position(1, 1), "me"), _builtin_1.BuiltIn.filename, new basic_1.ObjectReferenceType(classDefinition)));
|
|
30688
30695
|
helper.addAliasedAttributes(classDefinition); // todo, this is not correct, take care of instance vs static
|
|
@@ -41145,7 +41152,7 @@ const cds_integer_1 = __webpack_require__(/*! ./cds_integer */ "./node_modules/@
|
|
|
41145
41152
|
class CDSArithmetics extends combi_1.Expression {
|
|
41146
41153
|
getRunnable() {
|
|
41147
41154
|
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.optPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
41148
|
-
const val = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString, name);
|
|
41155
|
+
const val = (0, combi_1.altPrio)(cds_integer_1.CDSInteger, _1.CDSFunction, _1.CDSCase, _1.CDSCast, _1.CDSString, _1.CDSAggregate, name);
|
|
41149
41156
|
const operator = (0, combi_1.altPrio)("+", "-", "*", "/");
|
|
41150
41157
|
const operatorValue = (0, combi_1.seq)(operator, val);
|
|
41151
41158
|
const paren = (0, combi_1.seq)("(", val, (0, combi_1.plusPrio)(operatorValue), ")");
|
|
@@ -41270,7 +41277,8 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
41270
41277
|
class CDSCast extends combi_1.Expression {
|
|
41271
41278
|
getRunnable() {
|
|
41272
41279
|
const name = (0, combi_1.seq)(_1.CDSName, (0, combi_1.starPrio)((0, combi_1.seq)(".", _1.CDSName)));
|
|
41273
|
-
|
|
41280
|
+
const first = (0, combi_1.altPrio)(_1.CDSFunction, _1.CDSCase, _1.CDSAggregate, _1.CDSArithmetics, CDSCast, _1.CDSString, _1.CDSInteger, name);
|
|
41281
|
+
return (0, combi_1.seq)("CAST", "(", first, "AS", _1.CDSType, (0, combi_1.optPrio)((0, combi_1.seq)("PRESERVING", "TYPE")), ")");
|
|
41274
41282
|
}
|
|
41275
41283
|
}
|
|
41276
41284
|
exports.CDSCast = CDSCast;
|
|
@@ -41586,7 +41594,7 @@ const combi_1 = __webpack_require__(/*! ../../abap/2_statements/combi */ "./node
|
|
|
41586
41594
|
class CDSFunctionInput extends combi_1.Expression {
|
|
41587
41595
|
getRunnable() {
|
|
41588
41596
|
const qualified = (0, combi_1.seq)(_1.CDSName, (0, combi_1.opt)(_1.CDSParameters), (0, combi_1.starPrio)((0, combi_1.seq)(".", _1.CDSName, (0, combi_1.opt)(_1.CDSParameters))));
|
|
41589
|
-
const input = (0, combi_1.altPrio)(_1.
|
|
41597
|
+
const input = (0, combi_1.altPrio)(_1.CDSArithmetics, _1.CDSCast, _1.CDSFunction, _1.CDSCase, _1.CDSString, qualified, _1.CDSInteger);
|
|
41590
41598
|
return input;
|
|
41591
41599
|
}
|
|
41592
41600
|
}
|
|
@@ -41678,7 +41686,7 @@ class CDSJoin extends combi_1.Expression {
|
|
|
41678
41686
|
getRunnable() {
|
|
41679
41687
|
const cond = (0, combi_1.seq)(_1.CDSSource, "ON", cds_condition_1.CDSCondition);
|
|
41680
41688
|
const foo = (0, combi_1.altPrio)((0, combi_1.seq)("(", cond, ")"), cond);
|
|
41681
|
-
return (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER TO ONE", "LEFT OUTER", "INNER", "CROSS")), "JOIN", foo);
|
|
41689
|
+
return (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("LEFT OUTER TO ONE", "LEFT OUTER", "INNER", "CROSS", "RIGHT OUTER")), "JOIN", foo);
|
|
41682
41690
|
}
|
|
41683
41691
|
}
|
|
41684
41692
|
exports.CDSJoin = CDSJoin;
|
|
@@ -54549,7 +54557,7 @@ class Registry {
|
|
|
54549
54557
|
}
|
|
54550
54558
|
static abaplintVersion() {
|
|
54551
54559
|
// magic, see build script "version.sh"
|
|
54552
|
-
return "2.113.
|
|
54560
|
+
return "2.113.221";
|
|
54553
54561
|
}
|
|
54554
54562
|
getDDICReferences() {
|
|
54555
54563
|
return this.ddicReferences;
|
|
@@ -55856,6 +55864,7 @@ ENDINTERFACE.`,
|
|
|
55856
55864
|
}
|
|
55857
55865
|
issues.push(...this.checkTypes(stru, file));
|
|
55858
55866
|
issues.push(...this.checkMethods(stru, file));
|
|
55867
|
+
issues.push(...this.checkEvents(stru, file));
|
|
55859
55868
|
return issues;
|
|
55860
55869
|
}
|
|
55861
55870
|
check(fields, column, file) {
|
|
@@ -55915,6 +55924,26 @@ ENDINTERFACE.`,
|
|
|
55915
55924
|
}
|
|
55916
55925
|
return issues;
|
|
55917
55926
|
}
|
|
55927
|
+
checkEvents(stru, file) {
|
|
55928
|
+
const issues = [];
|
|
55929
|
+
const events = stru.findAllStatements(Statements.Events);
|
|
55930
|
+
for (const e of events) {
|
|
55931
|
+
const fields = [];
|
|
55932
|
+
const params = e.findAllExpressions(Expressions.MethodParam);
|
|
55933
|
+
let column = 0;
|
|
55934
|
+
for (const p of params) {
|
|
55935
|
+
const children = p.getChildren();
|
|
55936
|
+
const name = children[children.length - 2];
|
|
55937
|
+
fields.push({
|
|
55938
|
+
nameEnd: name.getLastToken().getEnd(),
|
|
55939
|
+
after: p.findFirstExpression(Expressions.TypeParam).getFirstToken().getStart()
|
|
55940
|
+
});
|
|
55941
|
+
column = Math.max(column, name.getFirstToken().getEnd().getCol() + 1);
|
|
55942
|
+
}
|
|
55943
|
+
issues.push(...this.check(fields, column, file));
|
|
55944
|
+
}
|
|
55945
|
+
return issues;
|
|
55946
|
+
}
|
|
55918
55947
|
checkTypes(stru, file) {
|
|
55919
55948
|
const issues = [];
|
|
55920
55949
|
const types = stru.findAllStructuresRecursive(Structures.Types);
|
|
@@ -58216,6 +58245,7 @@ class CloudTypes {
|
|
|
58216
58245
|
|| obj instanceof Objects.ApplicationLogObject
|
|
58217
58246
|
|| obj instanceof Objects.CommunicationScenario
|
|
58218
58247
|
|| obj instanceof Objects.DataControl
|
|
58248
|
+
|| obj instanceof Objects.Namespace
|
|
58219
58249
|
|| obj instanceof Objects.KnowledgeTransferDocument
|
|
58220
58250
|
|| obj instanceof Objects.DataDefinition
|
|
58221
58251
|
|| obj instanceof Objects.DataElement
|
|
@@ -64689,20 +64719,51 @@ WRITE 'world'.`,
|
|
|
64689
64719
|
////////////////
|
|
64690
64720
|
analyzeIf(file, node) {
|
|
64691
64721
|
var _a;
|
|
64692
|
-
|
|
64722
|
+
const ifBody = node.findDirectStructure(Structures.Body);
|
|
64723
|
+
const elseIfBodies = node.findDirectStructures(Structures.ElseIf) || [];
|
|
64724
|
+
const elseBody = (_a = node.findDirectStructure(Structures.Else)) === null || _a === void 0 ? void 0 : _a.findDirectStructure(Structures.Body);
|
|
64725
|
+
if (elseBody === undefined) {
|
|
64693
64726
|
return [];
|
|
64694
64727
|
}
|
|
64695
|
-
const
|
|
64696
|
-
|
|
64728
|
+
const ifFirst = ifBody === null || ifBody === void 0 ? void 0 : ifBody.getFirstChild();
|
|
64729
|
+
const elseFirst = elseBody === null || elseBody === void 0 ? void 0 : elseBody.getFirstChild();
|
|
64730
|
+
const ifLast = ifBody === null || ifBody === void 0 ? void 0 : ifBody.getLastChild();
|
|
64731
|
+
const elseLast = elseBody === null || elseBody === void 0 ? void 0 : elseBody.getLastChild();
|
|
64732
|
+
if (elseIfBodies.length > 0) {
|
|
64733
|
+
let firstMatch = true;
|
|
64734
|
+
let lastMatch = true;
|
|
64735
|
+
for (const elseif of elseIfBodies) {
|
|
64736
|
+
const elseifBody = elseif.findDirectStructure(Structures.Body);
|
|
64737
|
+
const elseifFirst = elseifBody === null || elseifBody === void 0 ? void 0 : elseifBody.getFirstChild();
|
|
64738
|
+
const elseifLast = elseifBody === null || elseifBody === void 0 ? void 0 : elseifBody.getLastChild();
|
|
64739
|
+
if (ifFirst === undefined
|
|
64740
|
+
|| ifLast === undefined
|
|
64741
|
+
|| elseLast === undefined
|
|
64742
|
+
|| elseFirst === undefined) {
|
|
64743
|
+
return [];
|
|
64744
|
+
}
|
|
64745
|
+
if (elseifFirst === undefined
|
|
64746
|
+
|| ifFirst.concatTokens() !== elseifFirst.concatTokens()
|
|
64747
|
+
|| elseFirst.concatTokens() !== elseifFirst.concatTokens()) {
|
|
64748
|
+
firstMatch = false;
|
|
64749
|
+
}
|
|
64750
|
+
if (elseifLast === undefined
|
|
64751
|
+
|| ifLast.concatTokens() !== elseifLast.concatTokens()
|
|
64752
|
+
|| elseLast.concatTokens() !== elseifLast.concatTokens()) {
|
|
64753
|
+
lastMatch = false;
|
|
64754
|
+
}
|
|
64755
|
+
}
|
|
64756
|
+
if (firstMatch === true || lastMatch === true) {
|
|
64757
|
+
const message = "Identical contents";
|
|
64758
|
+
const issue = issue_1.Issue.atToken(file, node.getFirstToken(), message, this.getMetadata().key, this.conf.severity);
|
|
64759
|
+
return [issue];
|
|
64760
|
+
}
|
|
64697
64761
|
return [];
|
|
64698
64762
|
}
|
|
64699
|
-
|
|
64700
|
-
if (elseBody === undefined || ifBody === undefined) {
|
|
64763
|
+
else if (elseBody === undefined || ifBody === undefined) {
|
|
64701
64764
|
return [];
|
|
64702
64765
|
}
|
|
64703
64766
|
{
|
|
64704
|
-
const ifFirst = ifBody.getFirstChild();
|
|
64705
|
-
const elseFirst = elseBody.getFirstChild();
|
|
64706
64767
|
if (ifFirst === undefined || elseFirst === undefined || this.isChained(ifFirst)) {
|
|
64707
64768
|
return [];
|
|
64708
64769
|
}
|
|
@@ -64713,8 +64774,6 @@ WRITE 'world'.`,
|
|
|
64713
64774
|
}
|
|
64714
64775
|
}
|
|
64715
64776
|
{
|
|
64716
|
-
const ifLast = ifBody.getLastChild();
|
|
64717
|
-
const elseLast = elseBody.getLastChild();
|
|
64718
64777
|
if (ifLast === undefined || elseLast === undefined || this.isChained(ifLast)) {
|
|
64719
64778
|
return [];
|
|
64720
64779
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@abaplint/cli",
|
|
3
|
-
"version": "2.113.
|
|
3
|
+
"version": "2.113.221",
|
|
4
4
|
"description": "abaplint - Command Line Interface",
|
|
5
5
|
"funding": "https://github.com/sponsors/larshp",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://abaplint.org",
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@abaplint/core": "^2.113.
|
|
41
|
+
"@abaplint/core": "^2.113.221",
|
|
42
42
|
"@types/chai": "^4.3.20",
|
|
43
43
|
"@types/minimist": "^1.2.5",
|
|
44
44
|
"@types/mocha": "^10.0.10",
|