@abaplint/cli 2.115.14 → 2.115.15

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 +106 -4
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -23308,8 +23308,25 @@ class Procedural {
23308
23308
  }
23309
23309
  return undefined;
23310
23310
  }
23311
+ findFunctionGroupScope(fg) {
23312
+ var _a, _b, _c;
23313
+ for (const module of fg.getModules()) {
23314
+ if (module.isGlobalParameters() === false) {
23315
+ continue;
23316
+ }
23317
+ // console.dir(fg.getSequencedFiles());
23318
+ const fmFile = fg.getSequencedFiles().find((f) => { return f.getFilename().endsWith(".fugr." + module.getName().toLowerCase().replace(/\//g, "#") + ".abap"); });
23319
+ if (fmFile === undefined) {
23320
+ continue;
23321
+ }
23322
+ const nameToken = (_c = (_b = (_a = fmFile.getStructure()) === null || _a === void 0 ? void 0 : _a.findFirstStatement(Statements.FunctionModule)) === null || _b === void 0 ? void 0 : _b.findFirstExpression(Expressions.Field)) === null || _c === void 0 ? void 0 : _c.getFirstToken();
23323
+ if (nameToken === undefined) {
23324
+ continue;
23325
+ }
23326
+ this.addFunctionScope(module, nameToken, fmFile.getFilename(), true);
23327
+ }
23328
+ }
23311
23329
  findFunctionScope(obj, node, filename) {
23312
- var _a, _b, _c, _d, _e;
23313
23330
  if (!(obj instanceof objects_1.FunctionGroup)) {
23314
23331
  throw new Error("findFunctionScope, expected function group input");
23315
23332
  }
@@ -23320,6 +23337,13 @@ class Procedural {
23320
23337
  if (definition === undefined) {
23321
23338
  throw new Error("Function module definition \"" + name + "\" not found");
23322
23339
  }
23340
+ if (definition.isGlobalParameters() === true) {
23341
+ return; // already added at global level
23342
+ }
23343
+ this.addFunctionScope(definition, nameToken, filename);
23344
+ }
23345
+ addFunctionScope(definition, nameToken, filename, ignoreIfAlreadyExists = false) {
23346
+ var _a, _b, _c, _d, _e;
23323
23347
  const ddic = new ddic_1.DDIC(this.reg);
23324
23348
  const allNames = new Set();
23325
23349
  for (const param of definition.getParameters()) {
@@ -23405,7 +23429,15 @@ class Procedural {
23405
23429
  }
23406
23430
  else {
23407
23431
  const type = new _typed_identifier_1.TypedIdentifier(nameToken, filename, found);
23408
- this.scope.addNamedIdentifier(param.name, type);
23432
+ if (ignoreIfAlreadyExists === true) {
23433
+ const exists = this.scope.findVariable(param.name);
23434
+ if (exists === undefined) {
23435
+ this.scope.addNamedIdentifier(param.name, type);
23436
+ }
23437
+ }
23438
+ else {
23439
+ this.scope.addNamedIdentifier(param.name, type);
23440
+ }
23409
23441
  allNames.add(param.name.toUpperCase());
23410
23442
  }
23411
23443
  }
@@ -36534,6 +36566,9 @@ class SyntaxLogic {
36534
36566
  stype = _scope_type_1.ScopeType.FunctionGroup;
36535
36567
  }
36536
36568
  this.scope.push(stype, this.object.getName(), new position_1.Position(1, 1), main.getFilename());
36569
+ if (this.object instanceof objects_1.FunctionGroup) {
36570
+ this.helpers.proc.findFunctionGroupScope(this.object);
36571
+ }
36537
36572
  }
36538
36573
  }
36539
36574
  else if (this.object instanceof objects_1.TypePool) {
@@ -40230,6 +40265,9 @@ class FunctionModuleDefinition {
40230
40265
  getName() {
40231
40266
  return this.name;
40232
40267
  }
40268
+ isGlobalParameters() {
40269
+ return this.globalParameters;
40270
+ }
40233
40271
  ///////////////
40234
40272
  parse(data) {
40235
40273
  if (data.FUNCNAME === undefined) {
@@ -40238,6 +40276,7 @@ class FunctionModuleDefinition {
40238
40276
  this.name = data.FUNCNAME;
40239
40277
  this.description = data.SHORT_TEXT;
40240
40278
  this.parameters = [];
40279
+ this.globalParameters = data.GLOBAL_FLAG === "X";
40241
40280
  this.moduleType = FunctionModuleType.regular;
40242
40281
  if (data.REMOTE_CALL === "R") {
40243
40282
  this.moduleType = FunctionModuleType.remote;
@@ -55335,7 +55374,7 @@ class Registry {
55335
55374
  }
55336
55375
  static abaplintVersion() {
55337
55376
  // magic, see build script "version.sh"
55338
- return "2.115.14";
55377
+ return "2.115.15";
55339
55378
  }
55340
55379
  getDDICReferences() {
55341
55380
  return this.ddicReferences;
@@ -64389,6 +64428,68 @@ exports.Exporting = Exporting;
64389
64428
 
64390
64429
  /***/ },
64391
64430
 
64431
+ /***/ "./node_modules/@abaplint/core/build/src/rules/fm_global_parameters_obsolete.js"
64432
+ /*!**************************************************************************************!*\
64433
+ !*** ./node_modules/@abaplint/core/build/src/rules/fm_global_parameters_obsolete.js ***!
64434
+ \**************************************************************************************/
64435
+ (__unused_webpack_module, exports, __webpack_require__) {
64436
+
64437
+ "use strict";
64438
+
64439
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
64440
+ exports.FMGlobalParametersObsolete = exports.FMGlobalParametersObsoleteConf = void 0;
64441
+ const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/core/build/src/issue.js");
64442
+ const Objects = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
64443
+ const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
64444
+ const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
64445
+ class FMGlobalParametersObsoleteConf extends _basic_rule_config_1.BasicRuleConfig {
64446
+ }
64447
+ exports.FMGlobalParametersObsoleteConf = FMGlobalParametersObsoleteConf;
64448
+ class FMGlobalParametersObsolete {
64449
+ constructor() {
64450
+ this.conf = new FMGlobalParametersObsoleteConf();
64451
+ }
64452
+ getMetadata() {
64453
+ return {
64454
+ key: "fm_global_parameters_obsolete",
64455
+ title: "FM Global Parameters Obsolete",
64456
+ shortDescription: `Check for function modules with global parameteers`,
64457
+ extendedInformation: `https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenglobal_parameters_obsolete.htm`,
64458
+ tags: [],
64459
+ };
64460
+ }
64461
+ initialize(_reg) {
64462
+ return this;
64463
+ }
64464
+ getConfig() {
64465
+ return this.conf;
64466
+ }
64467
+ setConfig(conf) {
64468
+ this.conf = conf;
64469
+ }
64470
+ run(obj) {
64471
+ if (!(obj instanceof Objects.FunctionGroup)) {
64472
+ return [];
64473
+ }
64474
+ const issues = [];
64475
+ for (const module of obj.getModules()) {
64476
+ if (module.isGlobalParameters() === true) {
64477
+ const file = obj.getMainABAPFile();
64478
+ if (file === undefined) {
64479
+ continue;
64480
+ }
64481
+ const message = `Function Module "${module.getName()}" uses obsolete global parameters`;
64482
+ issues.push(issue_1.Issue.atPosition(file, new position_1.Position(1, 1), message, this.getMetadata().key, this.conf.severity));
64483
+ }
64484
+ }
64485
+ return issues;
64486
+ }
64487
+ }
64488
+ exports.FMGlobalParametersObsolete = FMGlobalParametersObsolete;
64489
+ //# sourceMappingURL=fm_global_parameters_obsolete.js.map
64490
+
64491
+ /***/ },
64492
+
64392
64493
  /***/ "./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js"
64393
64494
  /*!*****************************************************************************!*\
64394
64495
  !*** ./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js ***!
@@ -66759,6 +66860,7 @@ __exportStar(__webpack_require__(/*! ./empty_structure */ "./node_modules/@abapl
66759
66860
  __exportStar(__webpack_require__(/*! ./exit_or_check */ "./node_modules/@abaplint/core/build/src/rules/exit_or_check.js"), exports);
66760
66861
  __exportStar(__webpack_require__(/*! ./expand_macros */ "./node_modules/@abaplint/core/build/src/rules/expand_macros.js"), exports);
66761
66862
  __exportStar(__webpack_require__(/*! ./exporting */ "./node_modules/@abaplint/core/build/src/rules/exporting.js"), exports);
66863
+ __exportStar(__webpack_require__(/*! ./fm_global_parameters_obsolete */ "./node_modules/@abaplint/core/build/src/rules/fm_global_parameters_obsolete.js"), exports);
66762
66864
  __exportStar(__webpack_require__(/*! ./forbidden_identifier */ "./node_modules/@abaplint/core/build/src/rules/forbidden_identifier.js"), exports);
66763
66865
  __exportStar(__webpack_require__(/*! ./forbidden_pseudo_and_pragma */ "./node_modules/@abaplint/core/build/src/rules/forbidden_pseudo_and_pragma.js"), exports);
66764
66866
  __exportStar(__webpack_require__(/*! ./forbidden_void_type */ "./node_modules/@abaplint/core/build/src/rules/forbidden_void_type.js"), exports);
@@ -66772,6 +66874,7 @@ __exportStar(__webpack_require__(/*! ./identical_conditions */ "./node_modules/@
66772
66874
  __exportStar(__webpack_require__(/*! ./identical_contents */ "./node_modules/@abaplint/core/build/src/rules/identical_contents.js"), exports);
66773
66875
  __exportStar(__webpack_require__(/*! ./identical_descriptions */ "./node_modules/@abaplint/core/build/src/rules/identical_descriptions.js"), exports);
66774
66876
  __exportStar(__webpack_require__(/*! ./identical_form_names */ "./node_modules/@abaplint/core/build/src/rules/identical_form_names.js"), exports);
66877
+ __exportStar(__webpack_require__(/*! ./identical_move */ "./node_modules/@abaplint/core/build/src/rules/identical_move.js"), exports);
66775
66878
  __exportStar(__webpack_require__(/*! ./if_in_if */ "./node_modules/@abaplint/core/build/src/rules/if_in_if.js"), exports);
66776
66879
  __exportStar(__webpack_require__(/*! ./implement_methods */ "./node_modules/@abaplint/core/build/src/rules/implement_methods.js"), exports);
66777
66880
  __exportStar(__webpack_require__(/*! ./implicit_start_of_selection */ "./node_modules/@abaplint/core/build/src/rules/implicit_start_of_selection.js"), exports);
@@ -66783,7 +66886,6 @@ __exportStar(__webpack_require__(/*! ./intf_referencing_clas */ "./node_modules/
66783
66886
  __exportStar(__webpack_require__(/*! ./invalid_table_index */ "./node_modules/@abaplint/core/build/src/rules/invalid_table_index.js"), exports);
66784
66887
  __exportStar(__webpack_require__(/*! ./keep_single_parameter_on_one_line */ "./node_modules/@abaplint/core/build/src/rules/keep_single_parameter_on_one_line.js"), exports);
66785
66888
  __exportStar(__webpack_require__(/*! ./keyword_case */ "./node_modules/@abaplint/core/build/src/rules/keyword_case.js"), exports);
66786
- __exportStar(__webpack_require__(/*! ./identical_move */ "./node_modules/@abaplint/core/build/src/rules/identical_move.js"), exports);
66787
66889
  __exportStar(__webpack_require__(/*! ./line_break_multiple_parameters */ "./node_modules/@abaplint/core/build/src/rules/line_break_multiple_parameters.js"), exports);
66788
66890
  __exportStar(__webpack_require__(/*! ./line_break_style */ "./node_modules/@abaplint/core/build/src/rules/line_break_style.js"), exports);
66789
66891
  __exportStar(__webpack_require__(/*! ./line_length */ "./node_modules/@abaplint/core/build/src/rules/line_length.js"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.115.14",
3
+ "version": "2.115.15",
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.115.14",
41
+ "@abaplint/core": "^2.115.15",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",