@abaplint/cli 2.119.34 → 2.119.36

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 +29 -6
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -7569,17 +7569,17 @@ const _select_core_1 = __webpack_require__(/*! ./_select_core */ "../core/build/
7569
7569
  class SQLCompare extends combi_1.Expression {
7570
7570
  getRunnable() {
7571
7571
  const subSelect = (0, combi_1.ver)(version_1.Version.v750, sql_set_op_group_1.SQLSetOpGroup, version_1.Version.OpenABAP);
7572
+ const simpleSubSelect = (0, combi_1.seq)("(", "SELECT", (0, _select_core_1.buildSelectCore)(undefined, false), ")");
7573
+ const simpleScalarSubSelect = (0, combi_1.ver)(version_1.Version.v740sp08, simpleSubSelect, version_1.Version.OpenABAP);
7572
7574
  const between = (0, combi_1.seq)("BETWEEN", _1.SQLSource, "AND", _1.SQLSource);
7573
7575
  const like = (0, combi_1.seq)("LIKE", _1.SQLSource, (0, combi_1.optPrio)((0, combi_1.seq)("ESCAPE", _1.SQLSource)));
7574
7576
  const nul = (0, combi_1.seq)("IS", (0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)("NULL", (0, combi_1.ver)(version_1.Version.v753, "INITIAL")));
7575
- const sub = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("ALL", "ANY", "SOME")), subSelect);
7577
+ const sub = (0, combi_1.seq)((0, combi_1.optPrio)((0, combi_1.altPrio)("ALL", "ANY", "SOME")), (0, combi_1.altPrio)(subSelect, simpleScalarSubSelect));
7576
7578
  const source = new _1.SQLSource();
7577
7579
  const arith = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.plusPrio)((0, combi_1.seq)((0, combi_1.altPrio)("+", "-", "*", "/"), _1.SQLFieldName)), version_1.Version.OpenABAP);
7578
7580
  const paren = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.ParenLeftW), _1.Source, (0, combi_1.tok)(tokens_1.WParenRightW));
7579
7581
  const at = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WAt), (0, combi_1.altPrio)(_1.SimpleSource3, paren)), version_1.Version.OpenABAP);
7580
7582
  const rett = (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLCase, _1.SQLAggregation, _1.SQLFunction, _1.ConstantString, (0, combi_1.seq)((0, combi_1.altPrio)(_1.SQLPath, _1.SQLFieldName), (0, combi_1.optPrio)(arith)), at), (0, combi_1.altPrio)((0, combi_1.seq)(_1.SQLCompareOperator, (0, combi_1.altPrio)(sub, _1.SQLCase, _1.SQLAggregation, _1.SQLFunction, (0, combi_1.seq)(source, (0, combi_1.optPrio)(arith)))), (0, combi_1.seq)((0, combi_1.optPrio)("NOT"), (0, combi_1.altPrio)(_1.SQLIn, like, between)), nul));
7581
- // simple subquery for pre-v750 versions: EXISTS ( SELECT ... )
7582
- const simpleSubSelect = (0, combi_1.seq)("(", "SELECT", (0, _select_core_1.buildSelectCore)(undefined, false), ")");
7583
7583
  const exists = (0, combi_1.seq)("EXISTS", (0, combi_1.altPrio)(subSelect, simpleSubSelect));
7584
7584
  return (0, combi_1.altPrio)(exists, _1.Dynamic, rett);
7585
7585
  }
@@ -60082,9 +60082,10 @@ class FunctionGroup extends _abap_object_1.ABAPObject {
60082
60082
  }
60083
60083
  }
60084
60084
  findTextFile() {
60085
- const search = this.getName() + ".fugr.sapl" + this.getName() + ".xml";
60085
+ const name = this.getName().replace(/\//g, "#");
60086
+ const regex = new RegExp(name + "\\.fugr\\.(#\\w+#)?sapl" + name.replace(/^#\w+#/, "") + "\\.xml", "i");
60086
60087
  for (const f of this.getFiles()) {
60087
- if (f.getFilename().includes(search.toLowerCase())) {
60088
+ if (regex.test(f.getFilename())) {
60088
60089
  return f;
60089
60090
  }
60090
60091
  }
@@ -66162,7 +66163,7 @@ class Registry {
66162
66163
  }
66163
66164
  static abaplintVersion() {
66164
66165
  // magic, see build script "version.js"
66165
- return "2.119.34";
66166
+ return "2.119.36";
66166
66167
  }
66167
66168
  getDDICReferences() {
66168
66169
  return this.ddicReferences;
@@ -86542,6 +86543,7 @@ const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_i
86542
86543
  const version_1 = __webpack_require__(/*! ../version */ "../core/build/src/version.js");
86543
86544
  const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "../core/build/src/objects/_abap_object.js");
86544
86545
  const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "../core/build/src/abap/5_syntax/syntax.js");
86546
+ const _typed_identifier_1 = __webpack_require__(/*! ../abap/types/_typed_identifier */ "../core/build/src/abap/types/_typed_identifier.js");
86545
86547
  const _scope_type_1 = __webpack_require__(/*! ../abap/5_syntax/_scope_type */ "../core/build/src/abap/5_syntax/_scope_type.js");
86546
86548
  const _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ "../core/build/src/abap/5_syntax/_reference.js");
86547
86549
  const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "../core/build/src/edit_helper.js");
@@ -86642,10 +86644,16 @@ DATA(percentage) = CONV decfloat34( comment_number / abs_statement_number ) * 10
86642
86644
  }
86643
86645
  const file = obj.getABAPFileByName(identifier.getFilename());
86644
86646
  const writeStatement = edit_helper_1.EditHelper.findStatement(next, file);
86647
+ if (writeStatement === undefined) {
86648
+ continue;
86649
+ }
86645
86650
  const statementType = writeStatement === null || writeStatement === void 0 ? void 0 : writeStatement.get();
86646
86651
  if (statementType === undefined) {
86647
86652
  continue;
86648
86653
  }
86654
+ else if (this.statementHasGenericRead(node, writeStatement)) {
86655
+ continue;
86656
+ }
86649
86657
  // for now only allow some specific target statements, todo refactor
86650
86658
  if (!(statementType instanceof Statements.Move
86651
86659
  || statementType instanceof Statements.Catch
@@ -86733,6 +86741,21 @@ DATA(percentage) = CONV decfloat34( comment_number / abs_statement_number ) * 10
86733
86741
  }
86734
86742
  return undefined;
86735
86743
  }
86744
+ statementHasGenericRead(node, statement) {
86745
+ for (const ref of node.getData().references) {
86746
+ if (ref.referenceType !== _reference_1.ReferenceType.DataReadReference
86747
+ || ref.resolved === undefined
86748
+ || statement.includesToken(ref.position.getToken()) === false
86749
+ || !(ref.resolved instanceof _typed_identifier_1.TypedIdentifier)) {
86750
+ continue;
86751
+ }
86752
+ else if (ref.resolved.getType().isGeneric() === true
86753
+ || ref.resolved.getType().containsVoid() === true) {
86754
+ return true;
86755
+ }
86756
+ }
86757
+ return false;
86758
+ }
86736
86759
  isLocalDefinition(node, identifier) {
86737
86760
  const { start, end } = node.calcCoverage();
86738
86761
  if (identifier.getStart().isAfter(start) && identifier.getStart().isBefore(end)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.119.34",
3
+ "version": "2.119.36",
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.119.34",
41
+ "@abaplint/core": "^2.119.36",
42
42
  "@types/chai": "^4.3.20",
43
43
  "@types/minimist": "^1.2.5",
44
44
  "@types/mocha": "^10.0.10",