@abaplint/cli 2.119.48 → 2.119.49

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 +148 -22
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -2940,7 +2940,7 @@ class ExpandMacros {
2940
2940
  }
2941
2941
  }
2942
2942
  }
2943
- handleMacros(statements, file) {
2943
+ handleMacros(statements, file, seen = new Set()) {
2944
2944
  var _a;
2945
2945
  const result = [];
2946
2946
  let containsUnknown = false;
@@ -2958,13 +2958,20 @@ class ExpandMacros {
2958
2958
  });
2959
2959
  }
2960
2960
  result.push(new statement_node_1.StatementNode(new _statement_1.MacroCall(), statement.getColon()).setChildren(this.tokensToNodes(statement.getTokens())));
2961
- const expanded = this.expandContents(macroName, statement);
2962
- const handled = this.handleMacros(expanded, file);
2963
- for (const e of handled.statements) {
2964
- result.push(e);
2961
+ if (!seen.has(macroName.toUpperCase())) {
2962
+ const expanded = this.expandContents(macroName, statement);
2963
+ const nextSeen = new Set(seen).add(macroName.toUpperCase());
2964
+ const handled = this.handleMacros(expanded, file, nextSeen);
2965
+ for (const e of handled.statements) {
2966
+ result.push(e);
2967
+ }
2968
+ if (handled.containsUnknown === true) {
2969
+ containsUnknown = true;
2970
+ }
2965
2971
  }
2966
- if (handled.containsUnknown === true) {
2967
- containsUnknown = true;
2972
+ else {
2973
+ const node = new statement_node_1.StatementNode(new _statement_1.MacroRecursion(), statement.getColon());
2974
+ result.push(node.setChildren(this.tokensToNodes(statement.getTokens())));
2968
2975
  }
2969
2976
  continue;
2970
2977
  }
@@ -11321,7 +11328,7 @@ exports.StatementParser = StatementParser;
11321
11328
  "use strict";
11322
11329
 
11323
11330
  Object.defineProperty(exports, "__esModule", ({ value: true }));
11324
- exports.NativeSQL = exports.MacroContent = exports.MacroCall = exports.Empty = exports.Comment = exports.Unknown = void 0;
11331
+ exports.NativeSQL = exports.MacroRecursion = exports.MacroContent = exports.MacroCall = exports.Empty = exports.Comment = exports.Unknown = void 0;
11325
11332
  class Unknown {
11326
11333
  getMatcher() {
11327
11334
  throw new Error("Unknown Statement, get_matcher");
@@ -11352,6 +11359,12 @@ class MacroContent {
11352
11359
  }
11353
11360
  }
11354
11361
  exports.MacroContent = MacroContent;
11362
+ class MacroRecursion {
11363
+ getMatcher() {
11364
+ throw new Error("MacroRecursion Statement, get_matcher");
11365
+ }
11366
+ }
11367
+ exports.MacroRecursion = MacroRecursion;
11355
11368
  class NativeSQL {
11356
11369
  getMatcher() {
11357
11370
  throw new Error("NativeSQL Statement, get_matcher");
@@ -20424,7 +20437,7 @@ class SubStatement {
20424
20437
  }
20425
20438
  first() {
20426
20439
  const o = new this.obj();
20427
- if (o instanceof _statement_1.MacroCall || o instanceof _statement_1.NativeSQL) {
20440
+ if (o instanceof _statement_1.MacroCall || o instanceof _statement_1.MacroRecursion || o instanceof _statement_1.NativeSQL) {
20428
20441
  return [""];
20429
20442
  }
20430
20443
  return o.getMatcher().first();
@@ -22634,7 +22647,7 @@ const _statement_1 = __webpack_require__(/*! ../../2_statements/statements/_stat
22634
22647
  class Normal {
22635
22648
  getMatcher() {
22636
22649
  // note that the sequence of alternatives here influences performance
22637
- 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
22650
+ 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.sta)(_statement_1.MacroRecursion), (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
22638
22651
  (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.MergeDatabase), (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
22639
22652
  (0, _combi_1.sta)(Statements.Field), // todo, should be dynpro specific
22640
22653
  (0, _combi_1.sub)(Structures.Chain), // todo, should be dynpro specific
@@ -67930,7 +67943,7 @@ class Registry {
67930
67943
  }
67931
67944
  static abaplintVersion() {
67932
67945
  // magic, see build script "version.js"
67933
- return "2.119.48";
67946
+ return "2.119.49";
67934
67947
  }
67935
67948
  getDDICReferences() {
67936
67949
  return this.ddicReferences;
@@ -81431,6 +81444,7 @@ __exportStar(__webpack_require__(/*! ./no_chained_assignment */ "../core/build/s
81431
81444
  __exportStar(__webpack_require__(/*! ./no_comments_between_methods */ "../core/build/src/rules/no_comments_between_methods.js"), exports);
81432
81445
  __exportStar(__webpack_require__(/*! ./no_external_form_calls */ "../core/build/src/rules/no_external_form_calls.js"), exports);
81433
81446
  __exportStar(__webpack_require__(/*! ./no_inline_in_optional_branches */ "../core/build/src/rules/no_inline_in_optional_branches.js"), exports);
81447
+ __exportStar(__webpack_require__(/*! ./no_macros */ "../core/build/src/rules/no_macros.js"), exports);
81434
81448
  __exportStar(__webpack_require__(/*! ./no_prefixes */ "../core/build/src/rules/no_prefixes.js"), exports);
81435
81449
  __exportStar(__webpack_require__(/*! ./no_public_attributes */ "../core/build/src/rules/no_public_attributes.js"), exports);
81436
81450
  __exportStar(__webpack_require__(/*! ./no_yoda_conditions */ "../core/build/src/rules/no_yoda_conditions.js"), exports);
@@ -85788,6 +85802,98 @@ exports.NoInlineInOptionalBranches = NoInlineInOptionalBranches;
85788
85802
 
85789
85803
  /***/ },
85790
85804
 
85805
+ /***/ "../core/build/src/rules/no_macros.js"
85806
+ /*!********************************************!*\
85807
+ !*** ../core/build/src/rules/no_macros.js ***!
85808
+ \********************************************/
85809
+ (__unused_webpack_module, exports, __webpack_require__) {
85810
+
85811
+ "use strict";
85812
+
85813
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
85814
+ if (k2 === undefined) k2 = k;
85815
+ var desc = Object.getOwnPropertyDescriptor(m, k);
85816
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
85817
+ desc = { enumerable: true, get: function() { return m[k]; } };
85818
+ }
85819
+ Object.defineProperty(o, k2, desc);
85820
+ }) : (function(o, m, k, k2) {
85821
+ if (k2 === undefined) k2 = k;
85822
+ o[k2] = m[k];
85823
+ }));
85824
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
85825
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
85826
+ }) : function(o, v) {
85827
+ o["default"] = v;
85828
+ });
85829
+ var __importStar = (this && this.__importStar) || (function () {
85830
+ var ownKeys = function(o) {
85831
+ ownKeys = Object.getOwnPropertyNames || function (o) {
85832
+ var ar = [];
85833
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
85834
+ return ar;
85835
+ };
85836
+ return ownKeys(o);
85837
+ };
85838
+ return function (mod) {
85839
+ if (mod && mod.__esModule) return mod;
85840
+ var result = {};
85841
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
85842
+ __setModuleDefault(result, mod);
85843
+ return result;
85844
+ };
85845
+ })();
85846
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
85847
+ exports.NoMacros = exports.NoMacrosConf = void 0;
85848
+ const issue_1 = __webpack_require__(/*! ../issue */ "../core/build/src/issue.js");
85849
+ const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "../core/build/src/rules/_abap_rule.js");
85850
+ const Statements = __importStar(__webpack_require__(/*! ../abap/2_statements/statements */ "../core/build/src/abap/2_statements/statements/index.js"));
85851
+ const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "../core/build/src/rules/_basic_rule_config.js");
85852
+ const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
85853
+ class NoMacrosConf extends _basic_rule_config_1.BasicRuleConfig {
85854
+ }
85855
+ exports.NoMacrosConf = NoMacrosConf;
85856
+ class NoMacros extends _abap_rule_1.ABAPRule {
85857
+ constructor() {
85858
+ super(...arguments);
85859
+ this.conf = new NoMacrosConf();
85860
+ }
85861
+ getMetadata() {
85862
+ return {
85863
+ key: "no_macros",
85864
+ title: "No macros",
85865
+ shortDescription: `Checks that macros are not used`,
85866
+ extendedInformation: `Macros reduce readability and are difficult to debug, use methods or form routines instead.
85867
+
85868
+ https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/abenmacros_guidl.htm`,
85869
+ tags: [_irule_1.RuleTag.SingleFile],
85870
+ badExample: `DEFINE _macro.
85871
+ WRITE 'hello'.
85872
+ END-OF-DEFINITION.`,
85873
+ goodExample: `WRITE 'hello'.`,
85874
+ };
85875
+ }
85876
+ getConfig() {
85877
+ return this.conf;
85878
+ }
85879
+ setConfig(conf) {
85880
+ this.conf = conf;
85881
+ }
85882
+ runParsed(file) {
85883
+ const issues = [];
85884
+ for (const stat of file.getStatements()) {
85885
+ if (stat.get() instanceof Statements.Define) {
85886
+ issues.push(issue_1.Issue.atStatement(file, stat, "Do not define macros", this.getMetadata().key, this.conf.severity));
85887
+ }
85888
+ }
85889
+ return issues;
85890
+ }
85891
+ }
85892
+ exports.NoMacros = NoMacros;
85893
+ //# sourceMappingURL=no_macros.js.map
85894
+
85895
+ /***/ },
85896
+
85791
85897
  /***/ "../core/build/src/rules/no_prefixes.js"
85792
85898
  /*!**********************************************!*\
85793
85899
  !*** ../core/build/src/rules/no_prefixes.js ***!
@@ -87750,19 +87856,23 @@ See recognized syntax at https://syntax.abaplint.org`,
87750
87856
  if (obj instanceof _abap_object_1.ABAPObject) {
87751
87857
  for (const file of obj.getABAPFiles()) {
87752
87858
  for (const statement of file.getStatements()) {
87753
- if (!(statement.get() instanceof _statement_1.Unknown)) {
87754
- continue;
87755
- }
87756
- if (statement.getTokens().length > statement_parser_1.STATEMENT_MAX_TOKENS) {
87757
- const message = "Statement too long, refactor statement";
87758
- const issue = issue_1.Issue.atToken(file, statement.getTokens()[0], message, this.getMetadata().key, this.conf.severity);
87759
- issues.push(issue);
87859
+ if (statement.get() instanceof _statement_1.Unknown) {
87860
+ if (statement.getTokens().length > statement_parser_1.STATEMENT_MAX_TOKENS) {
87861
+ const message = "Statement too long, refactor statement";
87862
+ const issue = issue_1.Issue.atToken(file, statement.getTokens()[0], message, this.getMetadata().key, this.conf.severity);
87863
+ issues.push(issue);
87864
+ }
87865
+ else {
87866
+ const tok = statement.getFirstToken();
87867
+ const message = "Statement does not exist in ABAP " + this.reg.getConfig().getRelease().name + " (or a parser error), \"" + tok.getStr() + "\"";
87868
+ const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);
87869
+ issues.push(issue);
87870
+ }
87760
87871
  }
87761
- else {
87872
+ else if (statement.get() instanceof _statement_1.MacroRecursion) {
87762
87873
  const tok = statement.getFirstToken();
87763
- const message = "Statement does not exist in ABAP" + this.reg.getConfig().getRelease().name + "(or a parser error), \"" + tok.getStr() + "\"";
87764
- const issue = issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity);
87765
- issues.push(issue);
87874
+ const message = "Macro recursion detected involving \"" + tok.getStr() + "\"";
87875
+ issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity));
87766
87876
  }
87767
87877
  }
87768
87878
  if (this.reg.getConfig().getRelease() === version_1.Release.v700) {
@@ -99033,6 +99143,21 @@ function loadConfig(filename) {
99033
99143
  base: path.dirname(f) === process.cwd() ? "." : path.dirname(f),
99034
99144
  };
99035
99145
  }
99146
+ function formatNullable(value) {
99147
+ return value === null ? "n/a" : value.toString();
99148
+ }
99149
+ function outputSyntaxConfig(config) {
99150
+ const release = config.getRelease();
99151
+ const releaseDetails = [
99152
+ `SAP_BASIS ${formatNullable(release.abap)}`,
99153
+ `kernel ${formatNullable(release.kernel)}`,
99154
+ `on-premise ${formatNullable(release.op)}`,
99155
+ `cloud ${formatNullable(release.cloud)}`,
99156
+ `CE ${formatNullable(release.ce)}`,
99157
+ ].join(", ");
99158
+ process.stderr.write(`ABAP release: ${release.name} (${releaseDetails})\n`);
99159
+ process.stderr.write(`ABAP language version: ${config.getLanguageVersion()}\n`);
99160
+ }
99036
99161
  async function loadDependencies(config, compress, bar, base) {
99037
99162
  let files = [];
99038
99163
  const deps = config.get().dependencies || [];
@@ -99127,6 +99252,7 @@ async function run(arg) {
99127
99252
  let loaded = [];
99128
99253
  let deps = [];
99129
99254
  const { config, base } = loadConfig(arg.configFilename);
99255
+ outputSyntaxConfig(config);
99130
99256
  try {
99131
99257
  if (config.get().global.files === undefined) {
99132
99258
  throw "Error: Update abaplint configuration file to latest format";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.119.48",
3
+ "version": "2.119.49",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "homepage": "https://abaplint.org",
41
41
  "devDependencies": {
42
- "@abaplint/core": "^2.119.48",
42
+ "@abaplint/core": "^2.119.49",
43
43
  "@types/chai": "^4.3.20",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.10",