@abaplint/cli 2.102.2 → 2.102.3

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 +21 -3
  2. package/package.json +3 -3
package/build/cli.js CHANGED
@@ -21205,6 +21205,7 @@ const _typed_identifier_1 = __webpack_require__(/*! ../types/_typed_identifier *
21205
21205
  const basic_1 = __webpack_require__(/*! ../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
21206
21206
  const ddic_1 = __webpack_require__(/*! ../../ddic */ "./node_modules/@abaplint/core/build/src/ddic.js");
21207
21207
  const _object_oriented_1 = __webpack_require__(/*! ./_object_oriented */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_object_oriented.js");
21208
+ const _reference_1 = __webpack_require__(/*! ./_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
21208
21209
  class Procedural {
21209
21210
  constructor(reg, scope) {
21210
21211
  this.scope = scope;
@@ -21278,7 +21279,19 @@ class Procedural {
21278
21279
  if (param.type === undefined || param.type === "") {
21279
21280
  found = new basic_1.AnyType();
21280
21281
  }
21281
- else {
21282
+ else if (param.type.includes("=>")) {
21283
+ // then its a type from global INTF or CLAS
21284
+ const [clas, name] = param.type.split("=>");
21285
+ const def = this.scope.findObjectDefinition(clas);
21286
+ if (def) {
21287
+ const type = def.getTypeDefinitions().getByName(name);
21288
+ if (type) {
21289
+ this.scope.addReference(nameToken, type, _reference_1.ReferenceType.TypeReference, filename);
21290
+ found = type.getType();
21291
+ }
21292
+ }
21293
+ }
21294
+ if (found === undefined) {
21282
21295
  found = ddic.lookup(param.type).type;
21283
21296
  }
21284
21297
  if (param.direction === types_1.FunctionModuleParameterDirection.tables) {
@@ -24889,10 +24902,12 @@ class MethodParameters {
24889
24902
  }
24890
24903
  for (const item of items) {
24891
24904
  const parameter = allImporting.find(p => p.getName().toUpperCase() === item.name);
24905
+ const calculated = item.source.findFirstExpression(Expressions.MethodCallChain) !== undefined
24906
+ || item.source.findFirstExpression(Expressions.ArithOperator) !== undefined;
24892
24907
  if (parameter === undefined) {
24893
24908
  throw new Error("Method importing parameter \"" + item.name + "\" does not exist");
24894
24909
  }
24895
- else if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(item.sourceType, parameter.getType()) === false) {
24910
+ else if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(item.sourceType, parameter.getType(), calculated) === false) {
24896
24911
  throw new Error("Method parameter type not compatible, " + item.name);
24897
24912
  }
24898
24913
  this.requiredParameters.delete(item.name);
@@ -48472,7 +48487,7 @@ class Registry {
48472
48487
  }
48473
48488
  static abaplintVersion() {
48474
48489
  // magic, see build script "version.sh"
48475
- return "2.102.2";
48490
+ return "2.102.3";
48476
48491
  }
48477
48492
  getDDICReferences() {
48478
48493
  return this.ddicReferences;
@@ -63844,6 +63859,8 @@ class PreferPragmas extends _abap_rule_1.ABAPRule {
63844
63859
  shortDescription: `prefer pragmas over pseudo comments `,
63845
63860
  extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#prefer-pragmas-to-pseudo-comments`,
63846
63861
  tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Styleguide],
63862
+ badExample: `DATA foo1 TYPE i. "#EC NEEDED`,
63863
+ goodExample: `DATA foo2 TYPE i ##NEEDED.`,
63847
63864
  };
63848
63865
  }
63849
63866
  getConfig() {
@@ -71782,6 +71799,7 @@ const parseXml = function(xmlData) {
71782
71799
  if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){
71783
71800
  if(tagName[tagName.length - 1] === "/"){ //remove trailing '/'
71784
71801
  tagName = tagName.substr(0, tagName.length - 1);
71802
+ jPath = jPath.substr(0, jPath.length - 1);
71785
71803
  tagExp = tagName;
71786
71804
  }else{
71787
71805
  tagExp = tagExp.substr(0, tagExp.length - 1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.102.2",
3
+ "version": "2.102.3",
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.102.2",
41
+ "@abaplint/core": "^2.102.3",
42
42
  "@types/chai": "^4.3.5",
43
43
  "@types/glob": "^7.2.0",
44
44
  "@types/minimist": "^1.2.2",
@@ -55,7 +55,7 @@
55
55
  "mocha": "^10.2.0",
56
56
  "progress": "^2.0.3",
57
57
  "typescript": "^5.1.6",
58
- "webpack": "^5.88.1",
58
+ "webpack": "^5.88.2",
59
59
  "webpack-cli": "^5.1.4",
60
60
  "xml-js": "^1.6.11"
61
61
  },