@abaplint/cli 2.113.226 → 2.113.228

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.
Files changed (2) hide show
  1. package/build/cli.js +158 -21
  2. package/package.json +5 -5
package/build/cli.js CHANGED
@@ -6111,9 +6111,10 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
6111
6111
  exports.InlineField = void 0;
6112
6112
  const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
6113
6113
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
6114
+ const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
6114
6115
  class InlineField extends combi_1.Expression {
6115
6116
  getRunnable() {
6116
- return new _1.Field();
6117
+ return (0, combi_1.seq)(_1.Field, (0, combi_1.starPrio)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.FieldAll)));
6117
6118
  }
6118
6119
  }
6119
6120
  exports.InlineField = InlineField;
@@ -7686,7 +7687,7 @@ class SelectLoop extends combi_1.Expression {
7686
7687
  const into = (0, combi_1.altPrio)(sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList);
7687
7688
  const perm = (0, combi_1.per)(_1.SQLFrom, where, sql_up_to_1.SQLUpTo, sql_order_by_1.SQLOrderBy, sql_having_1.SQLHaving, _1.SQLClient, bypass, _1.SQLGroupBy, _1.SQLForAllEntries, (0, combi_1.alt)(tab, sql_into_structure_1.SQLIntoStructure, _1.SQLIntoList, packTab));
7688
7689
  const strict = (0, combi_1.seq)(_1.SQLFrom, (0, combi_1.ver)(version_1.Version.v750, sql_fields_loop_1.SQLFieldsLoop), (0, combi_1.optPrio)(_1.SQLForAllEntries), (0, combi_1.optPrio)((0, combi_1.seq)(where, (0, combi_1.optPrio)(sql_order_by_1.SQLOrderBy), into, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo))));
7689
- const aggr = (0, combi_1.seq)(_1.SQLAggregation, into, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), _1.SQLFrom, where, _1.SQLGroupBy);
7690
+ const aggr = (0, combi_1.seq)((0, combi_1.plusPrio)(_1.SQLAggregation), into, (0, combi_1.optPrio)(sql_up_to_1.SQLUpTo), _1.SQLFrom, (0, combi_1.optPrio)(_1.SQLClient), (0, combi_1.optPrio)(where), _1.SQLGroupBy);
7690
7691
  const ret = (0, combi_1.seq)("SELECT", (0, combi_1.altPrio)((0, combi_1.seq)((0, combi_1.optPrio)("DISTINCT"), sql_field_list_loop_1.SQLFieldListLoop, perm), strict, aggr), (0, combi_1.optPrio)(sql_hints_1.SQLHints));
7691
7692
  return ret;
7692
7693
  }
@@ -14514,6 +14515,7 @@ __exportStar(__webpack_require__(/*! ./editor_call */ "./node_modules/@abaplint/
14514
14515
  __exportStar(__webpack_require__(/*! ./break */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/break.js"), exports);
14515
14516
  __exportStar(__webpack_require__(/*! ./delete_textpool */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/delete_textpool.js"), exports);
14516
14517
  __exportStar(__webpack_require__(/*! ./get */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/get.js"), exports);
14518
+ __exportStar(__webpack_require__(/*! ./loop_extract */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_extract.js"), exports);
14517
14519
  __exportStar(__webpack_require__(/*! ./selectoption */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/selectoption.js"), exports);
14518
14520
  __exportStar(__webpack_require__(/*! ./convert */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/convert.js"), exports);
14519
14521
  __exportStar(__webpack_require__(/*! ./static */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/static.js"), exports);
@@ -15057,8 +15059,8 @@ class Loop {
15057
15059
  const to = (0, combi_1.seq)("TO", expressions_1.Source);
15058
15060
  const usingKey = (0, combi_1.seq)("USING KEY", (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic));
15059
15061
  const options = (0, combi_1.per)(expressions_1.LoopTarget, from, to, where, usingKey, group, step);
15060
- const at = (0, combi_1.seq)("AT", (0, combi_1.opt)((0, combi_1.seq)("SCREEN", (0, combi_1.failCombinator)())), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp08, "GROUP", version_1.Version.OpenABAP)), expressions_1.LoopSource, (0, combi_1.opt)(options));
15061
- return (0, combi_1.seq)("LOOP", (0, combi_1.opt)(at));
15062
+ const at = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)("SCREEN", (0, combi_1.failCombinator)())), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp08, "GROUP", version_1.Version.OpenABAP)), expressions_1.LoopSource, (0, combi_1.opt)(options));
15063
+ return (0, combi_1.seq)("LOOP AT", at);
15062
15064
  }
15063
15065
  }
15064
15066
  exports.Loop = Loop;
@@ -15090,6 +15092,27 @@ exports.LoopAtScreen = LoopAtScreen;
15090
15092
 
15091
15093
  /***/ }),
15092
15094
 
15095
+ /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_extract.js":
15096
+ /*!********************************************************************************************!*\
15097
+ !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/loop_extract.js ***!
15098
+ \********************************************************************************************/
15099
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
15100
+
15101
+ "use strict";
15102
+
15103
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
15104
+ exports.LoopExtract = void 0;
15105
+ const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
15106
+ class LoopExtract {
15107
+ getMatcher() {
15108
+ return (0, combi_1.str)("LOOP");
15109
+ }
15110
+ }
15111
+ exports.LoopExtract = LoopExtract;
15112
+ //# sourceMappingURL=loop_extract.js.map
15113
+
15114
+ /***/ }),
15115
+
15093
15116
  /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js":
15094
15117
  /*!***************************************************************************************!*\
15095
15118
  !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/statements/message.js ***!
@@ -16784,10 +16807,11 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
16784
16807
  const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
16785
16808
  class SelectionScreen {
16786
16809
  getMatcher() {
16787
- const beginBlock = (0, combi_1.seq)("BEGIN OF BLOCK", expressions_1.BlockName, (0, combi_1.optPrio)("WITH FRAME"), (0, combi_1.optPrio)((0, combi_1.seq)("TITLE", (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement))), (0, combi_1.optPrio)("NO INTERVALS"));
16810
+ const text = (0, combi_1.altPrio)(expressions_1.TextElement, expressions_1.InlineField);
16811
+ const beginBlock = (0, combi_1.seq)("BEGIN OF BLOCK", expressions_1.BlockName, (0, combi_1.optPrio)("WITH FRAME"), (0, combi_1.optPrio)((0, combi_1.seq)("TITLE", text)), (0, combi_1.optPrio)("NO INTERVALS"));
16788
16812
  const endBlock = (0, combi_1.seq)("END OF BLOCK", expressions_1.BlockName);
16789
16813
  const nesting = (0, combi_1.seq)("NESTING LEVEL", expressions_1.Source);
16790
- const scrOptions = (0, combi_1.per)((0, combi_1.seq)("AS", (0, combi_1.alt)("WINDOW", "SUBSCREEN")), (0, combi_1.seq)("TITLE", (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement)), "NO INTERVALS", nesting);
16814
+ const scrOptions = (0, combi_1.per)((0, combi_1.seq)("AS", (0, combi_1.alt)("WINDOW", "SUBSCREEN")), (0, combi_1.seq)("TITLE", text), "NO INTERVALS", nesting);
16791
16815
  const beginScreen = (0, combi_1.seq)("BEGIN OF SCREEN", expressions_1.Integer, (0, combi_1.opt)(scrOptions));
16792
16816
  const endScreen = (0, combi_1.seq)("END OF SCREEN", expressions_1.Integer);
16793
16817
  const beginLine = (0, combi_1.str)("BEGIN OF LINE");
@@ -16798,12 +16822,12 @@ class SelectionScreen {
16798
16822
  const ldb = (0, combi_1.seq)("FOR FIELD", expressions_1.FieldSub, (0, combi_1.optPrio)(ldbId));
16799
16823
  const commentOpt = (0, combi_1.per)(ldb, modif, visible);
16800
16824
  const position = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.regex)(/^\/?[\d\w]+$/)), (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenLeft), (0, combi_1.tok)(tokens_1.WParenLeft)), expressions_1.Integer, (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.ParenRight)));
16801
- const comment = (0, combi_1.seq)("COMMENT", position, (0, combi_1.opt)((0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement)), (0, combi_1.opt)(commentOpt));
16825
+ const comment = (0, combi_1.seq)("COMMENT", position, (0, combi_1.opt)(text), (0, combi_1.opt)(commentOpt));
16802
16826
  const command = (0, combi_1.seq)("USER-COMMAND", (0, combi_1.alt)(expressions_1.Field, expressions_1.Constant));
16803
- const push = (0, combi_1.seq)("PUSHBUTTON", position, (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement), command, (0, combi_1.opt)(modif), (0, combi_1.opt)(visible));
16827
+ const push = (0, combi_1.seq)("PUSHBUTTON", position, text, command, (0, combi_1.opt)(modif), (0, combi_1.opt)(visible));
16804
16828
  const prog = (0, combi_1.seq)("PROGRAM", expressions_1.Field);
16805
16829
  const def = (0, combi_1.seq)("DEFAULT", (0, combi_1.opt)(prog), "SCREEN", expressions_1.Integer);
16806
- const tab = (0, combi_1.seq)("TAB", (0, combi_1.tok)(tokens_1.WParenLeft), expressions_1.Integer, (0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.alt)(expressions_1.InlineField, expressions_1.TextElement), command, (0, combi_1.opt)(def), (0, combi_1.opt)(modif));
16830
+ const tab = (0, combi_1.seq)("TAB", (0, combi_1.tok)(tokens_1.WParenLeft), expressions_1.Integer, (0, combi_1.tok)(tokens_1.ParenRightW), text, command, (0, combi_1.opt)(def), (0, combi_1.opt)(modif));
16807
16831
  const func = (0, combi_1.seq)("FUNCTION KEY", expressions_1.Integer);
16808
16832
  const skip = (0, combi_1.seq)("SKIP", (0, combi_1.opt)(expressions_1.Integer));
16809
16833
  const posSymbols = (0, combi_1.altPrio)("POS_LOW", "POS_HIGH");
@@ -19847,6 +19871,7 @@ __exportStar(__webpack_require__(/*! ./dynpro_loop */ "./node_modules/@abaplint/
19847
19871
  __exportStar(__webpack_require__(/*! ./statics */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/statics.js"), exports);
19848
19872
  __exportStar(__webpack_require__(/*! ./test_injection */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_injection.js"), exports);
19849
19873
  __exportStar(__webpack_require__(/*! ./test_seam */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/test_seam.js"), exports);
19874
+ __exportStar(__webpack_require__(/*! ./loop_extract */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_extract.js"), exports);
19850
19875
  __exportStar(__webpack_require__(/*! ./try */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/try.js"), exports);
19851
19876
  __exportStar(__webpack_require__(/*! ./type_enum */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_enum.js"), exports);
19852
19877
  __exportStar(__webpack_require__(/*! ./type_mesh */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/type_mesh.js"), exports);
@@ -19952,6 +19977,29 @@ exports.LoopAtScreen = LoopAtScreen;
19952
19977
 
19953
19978
  /***/ }),
19954
19979
 
19980
+ /***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_extract.js":
19981
+ /*!********************************************************************************************!*\
19982
+ !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/loop_extract.js ***!
19983
+ \********************************************************************************************/
19984
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
19985
+
19986
+ "use strict";
19987
+
19988
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
19989
+ exports.LoopExtract = void 0;
19990
+ const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
19991
+ const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
19992
+ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/index.js");
19993
+ class LoopExtract {
19994
+ getMatcher() {
19995
+ return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.LoopExtract), (0, _combi_1.star)((0, _combi_1.sub)(_1.Body)), (0, _combi_1.sta)(Statements.EndLoop));
19996
+ }
19997
+ }
19998
+ exports.LoopExtract = LoopExtract;
19999
+ //# sourceMappingURL=loop_extract.js.map
20000
+
20001
+ /***/ }),
20002
+
19955
20003
  /***/ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js":
19956
20004
  /*!**************************************************************************************!*\
19957
20005
  !*** ./node_modules/@abaplint/core/build/src/abap/3_structures/structures/method.js ***!
@@ -20016,7 +20064,7 @@ const _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_stat
20016
20064
  class Normal {
20017
20065
  getMatcher() {
20018
20066
  // note that the sequence of alternatives here influences performance
20019
- return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.LoopAtScreen), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sub)(Structures.OnChange), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level
20067
+ return (0, _combi_1.alt)((0, _combi_1.sta)(Statements.Move), (0, _combi_1.sta)(Statements.Call), (0, _combi_1.sta)(Statements.Data), (0, _combi_1.sub)(Structures.If), (0, _combi_1.sta)(Statements.Clear), (0, _combi_1.sta)(Statements.FieldSymbol), (0, _combi_1.sta)(Statements.CreateObject), (0, _combi_1.sta)(Statements.CallFunction), (0, _combi_1.sta)(_statement_1.MacroCall), (0, _combi_1.sub)(Structures.LoopAtScreen), (0, _combi_1.sub)(Structures.Loop), (0, _combi_1.sub)(Structures.LoopExtract), (0, _combi_1.sta)(Statements.Append), (0, _combi_1.sub)(Structures.Try), (0, _combi_1.sub)(Structures.OnChange), (0, _combi_1.sta)(Statements.ReadTable), (0, _combi_1.sta)(Statements.Assert), (0, _combi_1.sta)(Statements.Return), (0, _combi_1.sta)(Statements.Select), (0, _combi_1.sta)(Statements.Assign), (0, _combi_1.sta)(Statements.InsertInternal), (0, _combi_1.sta)(Statements.DeleteInternal), (0, _combi_1.sta)(Statements.Concatenate), (0, _combi_1.sub)(Structures.Case), (0, _combi_1.sub)(Structures.CaseType), (0, _combi_1.sub)(Structures.Enhancement), (0, _combi_1.sub)(Structures.EnhancementSection), (0, _combi_1.sta)(Statements.AddCorresponding), (0, _combi_1.sta)(Statements.Add), (0, _combi_1.sta)(Statements.AssignLocalCopy), (0, _combi_1.sta)(Statements.AuthorityCheck), (0, _combi_1.sta)(Statements.Back), (0, _combi_1.sta)(Statements.Break), (0, _combi_1.sta)(Statements.BreakId), (0, _combi_1.sta)(Statements.CallDatabase), (0, _combi_1.sta)(Statements.CallDialog), (0, _combi_1.sta)(Statements.CallKernel), (0, _combi_1.sta)(Statements.CallOLE), (0, _combi_1.sta)(Statements.CallScreen), (0, _combi_1.sta)(Statements.ModifyScreen), (0, _combi_1.sta)(Statements.CallSelectionScreen), (0, _combi_1.sta)(Statements.CallTransaction), (0, _combi_1.sta)(Statements.CallTransformation), (0, _combi_1.sta)(Statements.Check), (0, _combi_1.sta)(Statements.ClassDefinitionLoad), (0, _combi_1.sta)(Statements.CloseCursor), (0, _combi_1.sta)(Statements.CloseDataset), (0, _combi_1.sta)(Statements.Collect), (0, _combi_1.sta)(Statements.Commit), (0, _combi_1.sta)(Statements.Communication), (0, _combi_1.sta)(Statements.Compute), (0, _combi_1.sta)(Statements.CallBadi), (0, _combi_1.sta)(Statements.Condense), (0, _combi_1.sta)(Statements.Constant), (0, _combi_1.sta)(Statements.Contexts), (0, _combi_1.sta)(Statements.Continue), (0, _combi_1.sta)(Statements.ConvertText), (0, _combi_1.sta)(Statements.Convert), (0, _combi_1.sta)(Statements.CreateData), (0, _combi_1.sta)(Statements.CreateOLE), (0, _combi_1.sta)(Statements.DeleteCluster), (0, _combi_1.sta)(Statements.DeleteDatabase), (0, _combi_1.sta)(Statements.DeleteDataset), (0, _combi_1.sta)(Statements.DeleteDynpro), (0, _combi_1.sta)(Statements.DeleteMemory), (0, _combi_1.sta)(Statements.DeleteReport), (0, _combi_1.sta)(Statements.DeleteTextpool), (0, _combi_1.sta)(Statements.Demand), (0, _combi_1.sta)(Statements.Describe), (0, _combi_1.sta)(Statements.Detail), (0, _combi_1.sta)(Statements.Divide), (0, _combi_1.sta)(Statements.EditorCall), (0, _combi_1.sta)(Statements.EnhancementPoint), (0, _combi_1.sta)(Statements.Exit), (0, _combi_1.sta)(Statements.ExportDynpro), (0, _combi_1.sta)(Statements.Export), (0, _combi_1.sta)(Statements.Extract), (0, _combi_1.sta)(Statements.FetchNextCursor), (0, _combi_1.sta)(Statements.FieldGroup), (0, _combi_1.sta)(Statements.Fields), (0, _combi_1.sta)(Statements.Find), (0, _combi_1.sta)(Statements.Format), (0, _combi_1.sta)(Statements.FreeMemory), (0, _combi_1.sta)(Statements.FreeObject), (0, _combi_1.sta)(Statements.Free), (0, _combi_1.sta)(Statements.GenerateDynpro), (0, _combi_1.sta)(Statements.GenerateReport), (0, _combi_1.sta)(Statements.GenerateSubroutine), (0, _combi_1.sta)(Statements.GetBadi), (0, _combi_1.sta)(Statements.GetBit), (0, _combi_1.sta)(Statements.GetCursor), (0, _combi_1.sta)(Statements.GetDataset), (0, _combi_1.sta)(Statements.GetLocale), (0, _combi_1.sta)(Statements.GetParameter), (0, _combi_1.sta)(Statements.GetPFStatus), (0, _combi_1.sta)(Statements.GetProperty), (0, _combi_1.sta)(Statements.GetReference), (0, _combi_1.sta)(Statements.GetRunTime), (0, _combi_1.sta)(Statements.GetTime), (0, _combi_1.sta)(Statements.Hide), (0, _combi_1.sta)(Statements.Nodes), (0, _combi_1.sta)(Statements.ImportDynpro), (0, _combi_1.sta)(Statements.ImportNametab), (0, _combi_1.sta)(Statements.MoveCorresponding), (0, _combi_1.sta)(Statements.Import), (0, _combi_1.sta)(Statements.Infotypes), (0, _combi_1.sta)(Statements.Include), // include does not have to be at top level
20020
20068
  (0, _combi_1.sta)(Statements.InsertDatabase), (0, _combi_1.sta)(Statements.InsertReport), (0, _combi_1.sta)(Statements.InsertTextpool), (0, _combi_1.sta)(Statements.InsertFieldGroup), (0, _combi_1.sta)(Statements.InterfaceLoad), (0, _combi_1.sta)(Statements.Leave), (0, _combi_1.sta)(Statements.LoadReport), (0, _combi_1.sta)(Statements.Local), (0, _combi_1.sta)(Statements.With), (0, _combi_1.sta)(Statements.LogPoint), (0, _combi_1.sta)(Statements.Message), (0, _combi_1.sta)(Statements.ModifyLine), (0, _combi_1.sta)(Statements.ModifyDatabase), (0, _combi_1.sta)(Statements.ModifyInternal), (0, _combi_1.sta)(Statements.Multiply), (0, _combi_1.sta)(Statements.NewLine), (0, _combi_1.sta)(Statements.NewPage), (0, _combi_1.sta)(Statements.OpenCursor), (0, _combi_1.sta)(Statements.OpenDataset), (0, _combi_1.sta)(Statements.Overlay), (0, _combi_1.sta)(Statements.Pack), (0, _combi_1.sta)(Statements.Perform), (0, _combi_1.sta)(Statements.FormDefinition), (0, _combi_1.sta)(Statements.Position), (0, _combi_1.sta)(Statements.Put), (0, _combi_1.sta)(Statements.PrintControl), (0, _combi_1.sta)(Statements.RaiseEvent), (0, _combi_1.sta)(Statements.RaiseEntityEvent), (0, _combi_1.sta)(Statements.Raise), (0, _combi_1.sta)(Statements.Ranges), (0, _combi_1.sta)(Statements.ReadDataset), (0, _combi_1.sta)(Statements.ReadLine), (0, _combi_1.sta)(Statements.ReadReport), (0, _combi_1.sta)(Statements.ReadTextpool), (0, _combi_1.sta)(Statements.Receive), (0, _combi_1.sta)(Statements.RefreshControl), (0, _combi_1.sta)(Statements.Refresh), (0, _combi_1.sta)(Statements.Reject), (0, _combi_1.sta)(Statements.Replace), (0, _combi_1.sta)(Statements.Reserve), (0, _combi_1.sta)(Statements.Resume), (0, _combi_1.sta)(Statements.Retry), (0, _combi_1.sta)(Statements.Rollback), (0, _combi_1.sta)(Statements.Scan), (0, _combi_1.sta)(Statements.ScrollList), (0, _combi_1.sta)(Statements.Search), (0, _combi_1.sta)(Statements.SetBit), (0, _combi_1.sta)(Statements.SetBlank), (0, _combi_1.sta)(Statements.SetCountry), (0, _combi_1.sta)(Statements.SetCursor), (0, _combi_1.sta)(Statements.SetDataset), (0, _combi_1.sta)(Statements.SetExtendedCheck), (0, _combi_1.sta)(Statements.SetHandler), (0, _combi_1.sta)(Statements.SetLanguage), (0, _combi_1.sta)(Statements.SetLeft), (0, _combi_1.sta)(Statements.SetLocale), (0, _combi_1.sta)(Statements.SetMargin), (0, _combi_1.sta)(Statements.SetParameter), (0, _combi_1.sta)(Statements.SetPFStatus), (0, _combi_1.sta)(Statements.SetProperty), (0, _combi_1.sta)(Statements.SetRunTime), (0, _combi_1.sta)(Statements.SetScreen), (0, _combi_1.sta)(Statements.SetTitlebar), (0, _combi_1.sta)(Statements.SetUserCommand), (0, _combi_1.sta)(Statements.SetUpdateTask), (0, _combi_1.sta)(Statements.Shift), (0, _combi_1.sta)(Statements.Skip), (0, _combi_1.sta)(Statements.SortDataset), (0, _combi_1.sta)(Statements.Sort), (0, _combi_1.sta)(Statements.Static), (0, _combi_1.sta)(Statements.Split), (0, _combi_1.sta)(Statements.Stop), (0, _combi_1.sta)(Statements.Submit), (0, _combi_1.sta)(Statements.Summary), (0, _combi_1.sta)(Statements.SubtractCorresponding), (0, _combi_1.sta)(Statements.Subtract), (0, _combi_1.sta)(Statements.SuppressDialog), (0, _combi_1.sta)(Statements.Supply), (0, _combi_1.sta)(Statements.Sum), (0, _combi_1.sta)(Statements.SyntaxCheck), (0, _combi_1.sta)(Statements.SystemCall), (0, _combi_1.sta)(Statements.Tables), (0, _combi_1.sta)(Statements.Transfer), (0, _combi_1.sta)(Statements.Translate), (0, _combi_1.sta)(Statements.Type), (0, _combi_1.sta)(Statements.TypePools), (0, _combi_1.sta)(Statements.Uline), (0, _combi_1.sta)(Statements.Unassign), (0, _combi_1.sta)(Statements.Unpack), (0, _combi_1.sta)(Statements.UpdateDatabase), (0, _combi_1.sta)(Statements.Wait), (0, _combi_1.sta)(Statements.Window), (0, _combi_1.sta)(Statements.Write), (0, _combi_1.sta)(Statements.CommitEntities), (0, _combi_1.sta)(Statements.GetPermissions), (0, _combi_1.sta)(Statements.SetLocks), (0, _combi_1.sta)(Statements.ModifyEntities), (0, _combi_1.sta)(Statements.ReadEntities), (0, _combi_1.sta)(Statements.RollbackEntities), (0, _combi_1.sta)(Statements.Module), // todo, should be dynpro specific
20021
20069
  (0, _combi_1.sta)(Statements.Field), // todo, should be dynpro specific
20022
20070
  (0, _combi_1.sub)(Structures.Chain), // todo, should be dynpro specific
@@ -20041,9 +20089,10 @@ exports.OnChange = void 0;
20041
20089
  const Statements = __webpack_require__(/*! ../../2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
20042
20090
  const _combi_1 = __webpack_require__(/*! ./_combi */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/_combi.js");
20043
20091
  const body_1 = __webpack_require__(/*! ./body */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/body.js");
20092
+ const else_1 = __webpack_require__(/*! ./else */ "./node_modules/@abaplint/core/build/src/abap/3_structures/structures/else.js");
20044
20093
  class OnChange {
20045
20094
  getMatcher() {
20046
- return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.OnChange), (0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.sta)(Statements.EndOn));
20095
+ return (0, _combi_1.beginEnd)((0, _combi_1.sta)(Statements.OnChange), (0, _combi_1.seq)((0, _combi_1.opt)((0, _combi_1.sub)(body_1.Body)), (0, _combi_1.opt)((0, _combi_1.sub)(else_1.Else))), (0, _combi_1.sta)(Statements.EndOn));
20047
20096
  }
20048
20097
  }
20049
20098
  exports.OnChange = OnChange;
@@ -24858,7 +24907,10 @@ class BasicTypes {
24858
24907
  }
24859
24908
  }
24860
24909
  const found = this.resolveTypeName(chain);
24861
- if (found && !(found instanceof Types.UnknownType) && !(found instanceof Types.VoidType)) {
24910
+ if (found && found instanceof Types.VoidType) {
24911
+ return found;
24912
+ }
24913
+ else if (found && !(found instanceof Types.UnknownType)) {
24862
24914
  return new Types.DataReference(found);
24863
24915
  }
24864
24916
  else if (chain.concatTokens().toUpperCase() === "DATA") {
@@ -32068,6 +32120,30 @@ exports.Format = Format;
32068
32120
 
32069
32121
  /***/ }),
32070
32122
 
32123
+ /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/free.js":
32124
+ /*!********************************************************************************!*\
32125
+ !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/free.js ***!
32126
+ \********************************************************************************/
32127
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
32128
+
32129
+ "use strict";
32130
+
32131
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
32132
+ exports.Free = void 0;
32133
+ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
32134
+ const target_1 = __webpack_require__(/*! ../expressions/target */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js");
32135
+ class Free {
32136
+ runSyntax(node, input) {
32137
+ for (const t of node.findDirectExpressions(Expressions.Target)) {
32138
+ target_1.Target.runSyntax(t, input);
32139
+ }
32140
+ }
32141
+ }
32142
+ exports.Free = Free;
32143
+ //# sourceMappingURL=free.js.map
32144
+
32145
+ /***/ }),
32146
+
32071
32147
  /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js":
32072
32148
  /*!************************************************************************************!*\
32073
32149
  !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_badi.js ***!
@@ -32440,7 +32516,7 @@ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modu
32440
32516
  const assert_error_1 = __webpack_require__(/*! ../assert_error */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/assert_error.js");
32441
32517
  class IncludeType {
32442
32518
  runSyntax(node, input) {
32443
- var _a, _b, _c;
32519
+ var _a, _b, _c, _d, _e;
32444
32520
  const components = [];
32445
32521
  const iname = node.findFirstExpression(Expressions.TypeName);
32446
32522
  if (iname === undefined) {
@@ -32455,7 +32531,10 @@ class IncludeType {
32455
32531
  ityp = found;
32456
32532
  }
32457
32533
  }
32458
- const as = (_b = node.findExpressionAfterToken("AS")) === null || _b === void 0 ? void 0 : _b.concatTokens();
32534
+ else if (ityp instanceof basic_1.UnknownType) {
32535
+ ityp = (_c = (_b = input.scope.findVariable(name)) === null || _b === void 0 ? void 0 : _b.getType()) !== null && _c !== void 0 ? _c : ityp;
32536
+ }
32537
+ const as = (_d = node.findExpressionAfterToken("AS")) === null || _d === void 0 ? void 0 : _d.concatTokens();
32459
32538
  if (as && ityp instanceof basic_1.StructureType) {
32460
32539
  ityp = new basic_1.StructureType(ityp.getComponents().concat([{
32461
32540
  name: as,
@@ -32469,12 +32548,15 @@ class IncludeType {
32469
32548
  if (ityp instanceof basic_1.VoidType) {
32470
32549
  return ityp;
32471
32550
  }
32551
+ else if (ityp instanceof basic_1.UnknownType) {
32552
+ return ityp;
32553
+ }
32472
32554
  if (!(ityp instanceof basic_1.StructureType)) {
32473
32555
  const message = "not structured, " + name;
32474
32556
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, iname.getFirstToken(), message));
32475
32557
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
32476
32558
  }
32477
- const suffix = (_c = node.findExpressionAfterToken("SUFFIX")) === null || _c === void 0 ? void 0 : _c.concatTokens();
32559
+ const suffix = (_e = node.findExpressionAfterToken("SUFFIX")) === null || _e === void 0 ? void 0 : _e.concatTokens();
32478
32560
  if (suffix && ityp instanceof basic_1.StructureType) {
32479
32561
  const components = [];
32480
32562
  for (const c of ityp.getComponents()) {
@@ -34034,6 +34116,30 @@ exports.Receive = Receive;
34034
34116
 
34035
34117
  /***/ }),
34036
34118
 
34119
+ /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/refresh.js":
34120
+ /*!***********************************************************************************!*\
34121
+ !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/refresh.js ***!
34122
+ \***********************************************************************************/
34123
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
34124
+
34125
+ "use strict";
34126
+
34127
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
34128
+ exports.Refresh = void 0;
34129
+ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
34130
+ const target_1 = __webpack_require__(/*! ../expressions/target */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js");
34131
+ class Refresh {
34132
+ runSyntax(node, input) {
34133
+ for (const t of node.findDirectExpressions(Expressions.Target)) {
34134
+ target_1.Target.runSyntax(t, input);
34135
+ }
34136
+ }
34137
+ }
34138
+ exports.Refresh = Refresh;
34139
+ //# sourceMappingURL=refresh.js.map
34140
+
34141
+ /***/ }),
34142
+
34037
34143
  /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js":
34038
34144
  /*!***********************************************************************************!*\
34039
34145
  !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js ***!
@@ -34194,8 +34300,8 @@ class SelectionScreen {
34194
34300
  return;
34195
34301
  }
34196
34302
  const field = node.findFirstExpression(Expressions.InlineField);
34197
- if (field !== undefined && field.getFirstToken().getStr().length > 8) {
34198
- const message = "SELECTION-SCREEN name too long, " + field.getFirstToken().getStr();
34303
+ if (field !== undefined && field.concatTokens().length > 8) {
34304
+ const message = "SELECTION-SCREEN name too long, " + field.concatTokens();
34199
34305
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, field.getFirstToken(), message));
34200
34306
  return;
34201
34307
  }
@@ -34209,10 +34315,12 @@ class SelectionScreen {
34209
34315
  input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(blockToken, input.filename, type, ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
34210
34316
  }
34211
34317
  else if (concat.startsWith("SELECTION-SCREEN TAB") && fieldName) {
34212
- input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(fieldName, input.filename, new basic_1.CharacterType(83), ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]));
34318
+ const id = new _typed_identifier_1.TypedIdentifier(fieldName, input.filename, new basic_1.CharacterType(83), ["selection_screen_tab" /* IdentifierMeta.SelectionScreenTab */]);
34319
+ input.scope.addNamedIdentifier(field.concatTokens(), id);
34213
34320
  }
34214
34321
  else if (fieldName) {
34215
- input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(fieldName, input.filename, new basic_1.CharacterType(83)));
34322
+ const id = new _typed_identifier_1.TypedIdentifier(fieldName, input.filename, new basic_1.CharacterType(83));
34323
+ input.scope.addNamedIdentifier(field.concatTokens(), id);
34216
34324
  }
34217
34325
  }
34218
34326
  }
@@ -35522,6 +35630,9 @@ class Data {
35522
35630
  return new _typed_identifier_1.TypedIdentifier(name, input.filename, found);
35523
35631
  }
35524
35632
  }
35633
+ else if (found instanceof Basic.UnknownType) {
35634
+ return new _typed_identifier_1.TypedIdentifier(name, input.filename, found);
35635
+ }
35525
35636
  for (const c of found) {
35526
35637
  components.push(c);
35527
35638
  }
@@ -35804,7 +35915,7 @@ class Types {
35804
35915
  }
35805
35916
  else if (ctyp instanceof Statements.IncludeType) {
35806
35917
  const found = new include_type_1.IncludeType().runSyntax(c, input);
35807
- if (found instanceof basic_1.VoidType) {
35918
+ if (found instanceof basic_1.VoidType || found instanceof Basic.UnknownType) {
35808
35919
  voidd = found;
35809
35920
  }
35810
35921
  else {
@@ -35913,6 +36024,8 @@ const do_1 = __webpack_require__(/*! ./statements/do */ "./node_modules/@abaplin
35913
36024
  const concatenate_1 = __webpack_require__(/*! ./statements/concatenate */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/concatenate.js");
35914
36025
  const call_function_1 = __webpack_require__(/*! ./statements/call_function */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/call_function.js");
35915
36026
  const clear_1 = __webpack_require__(/*! ./statements/clear */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/clear.js");
36027
+ const refresh_1 = __webpack_require__(/*! ./statements/refresh */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/refresh.js");
36028
+ const free_1 = __webpack_require__(/*! ./statements/free */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/free.js");
35916
36029
  const replace_1 = __webpack_require__(/*! ./statements/replace */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/replace.js");
35917
36030
  const get_bit_1 = __webpack_require__(/*! ./statements/get_bit */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_bit.js");
35918
36031
  const raise_1 = __webpack_require__(/*! ./statements/raise */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/raise.js");
@@ -36039,6 +36152,8 @@ if (Object.keys(map).length === 0) {
36039
36152
  addToMap(new delete_internal_1.DeleteInternal());
36040
36153
  addToMap(new delete_cluster_1.DeleteCluster());
36041
36154
  addToMap(new clear_1.Clear());
36155
+ addToMap(new free_1.Free());
36156
+ addToMap(new refresh_1.Refresh());
36042
36157
  addToMap(new receive_1.Receive());
36043
36158
  addToMap(new get_bit_1.GetBit());
36044
36159
  addToMap(new class_local_friends_1.ClassLocalFriends());
@@ -54600,7 +54715,7 @@ class Registry {
54600
54715
  }
54601
54716
  static abaplintVersion() {
54602
54717
  // magic, see build script "version.sh"
54603
- return "2.113.226";
54718
+ return "2.113.228";
54604
54719
  }
54605
54720
  getDDICReferences() {
54606
54721
  return this.ddicReferences;
@@ -56579,6 +56694,10 @@ DATA END OF foo.`,
56579
56694
  if (t.getChildren().length !== 3) {
56580
56695
  continue;
56581
56696
  }
56697
+ const data = t.findFirstStatement(Statements.DataBegin);
56698
+ if (data === null || data === void 0 ? void 0 : data.findDirectTokenByText("OCCURS")) {
56699
+ continue;
56700
+ }
56582
56701
  if (t.findFirstStatement(Statements.IncludeType)) {
56583
56702
  const token = t.getFirstToken();
56584
56703
  const message = "DATA BEGIN with single INCLUDE";
@@ -70110,6 +70229,12 @@ class ObsoleteStatementConf extends _basic_rule_config_1.BasicRuleConfig {
70110
70229
  this.formDefinition = true;
70111
70230
  /** Check for FORM IMPLEMENTATION */
70112
70231
  this.formImplementation = true;
70232
+ /** Check for COMMON PART */
70233
+ this.commonPart = true;
70234
+ /** Check for FIELD-GROUPS */
70235
+ this.fieldGroups = true;
70236
+ /** Check for REPLACE INTO */
70237
+ this.replaceInto = true;
70113
70238
  }
70114
70239
  }
70115
70240
  exports.ObsoleteStatementConf = ObsoleteStatementConf;
@@ -70221,10 +70346,22 @@ ENDIF.`,
70221
70346
  const issue = issue_1.Issue.atStatement(file, staNode, "COMMUNICATION is obsolete", this.getMetadata().key, this.conf.severity);
70222
70347
  issues.push(issue);
70223
70348
  }
70349
+ if (this.conf.commonPart && sta instanceof Statements.DataBegin && staNode.findDirectTokenByText("COMMON")) {
70350
+ const issue = issue_1.Issue.atStatement(file, staNode, "COMMON PART is obsolete", this.getMetadata().key, this.conf.severity);
70351
+ issues.push(issue);
70352
+ }
70353
+ if (this.conf.replaceInto && sta instanceof Statements.Replace && staNode.findDirectTokenByText("INTO")) {
70354
+ const issue = issue_1.Issue.atStatement(file, staNode, "REPLACE INTO is obsolete", this.getMetadata().key, this.conf.severity);
70355
+ issues.push(issue);
70356
+ }
70224
70357
  if (this.conf.pack && sta instanceof Statements.Pack) {
70225
70358
  const issue = issue_1.Issue.atStatement(file, staNode, "PACK is obsolete", this.getMetadata().key, this.conf.severity);
70226
70359
  issues.push(issue);
70227
70360
  }
70361
+ if (this.conf.fieldGroups && sta instanceof Statements.FieldGroup) {
70362
+ const issue = issue_1.Issue.atStatement(file, staNode, "FIELD-GROUPS is obsolete", this.getMetadata().key, this.conf.severity);
70363
+ issues.push(issue);
70364
+ }
70228
70365
  if (this.conf.parameter && sta instanceof Statements.Parameter) {
70229
70366
  const token = staNode.getFirstToken();
70230
70367
  if (token.getStr().toUpperCase() === "PARAMETER") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.113.226",
3
+ "version": "2.113.228",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,11 +38,11 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.113.226",
41
+ "@abaplint/core": "^2.113.228",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",
45
- "@types/node": "^24.6.2",
45
+ "@types/node": "^24.7.2",
46
46
  "@types/progress": "^2.0.7",
47
47
  "chai": "^4.5.0",
48
48
  "p-limit": "^3.1.0",
@@ -50,12 +50,12 @@
50
50
  "eslint": "^9.37.0",
51
51
  "glob": "^11.0.3",
52
52
  "json5": "^2.2.3",
53
- "memfs": "^4.48.1",
53
+ "memfs": "^4.49.0",
54
54
  "minimist": "^1.2.8",
55
55
  "mocha": "^11.7.4",
56
56
  "progress": "^2.0.3",
57
57
  "typescript": "^5.9.3",
58
- "webpack": "^5.102.0",
58
+ "webpack": "^5.102.1",
59
59
  "webpack-cli": "^6.0.1",
60
60
  "xml-js": "^1.6.11"
61
61
  }