@abaplint/cli 2.113.232 → 2.113.233

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 +37 -3
  2. package/package.json +4 -4
package/build/cli.js CHANGED
@@ -23979,9 +23979,30 @@ class TypeUtils {
23979
23979
  return true;
23980
23980
  }
23981
23981
  else if (source instanceof basic_1.StructureType) {
23982
- if (this.structureContainsString(target) && !this.structureContainsString(source)) {
23982
+ const targetDeep = this.structureContainsString(target);
23983
+ const sourceDeep = this.structureContainsString(source);
23984
+ if (targetDeep && !sourceDeep) {
23983
23985
  return false;
23984
23986
  }
23987
+ const targetComponents = target.getComponents();
23988
+ const sourceComponents = source.getComponents();
23989
+ if (targetComponents.length !== sourceComponents.length) {
23990
+ if (targetDeep === true || sourceDeep === true) {
23991
+ return false;
23992
+ }
23993
+ }
23994
+ for (let i = 0; i < targetComponents.length; i++) {
23995
+ if (sourceComponents[i] === undefined) {
23996
+ continue;
23997
+ }
23998
+ // hmm
23999
+ if (sourceComponents[i].type instanceof basic_1.StringType && !(targetComponents[i].type instanceof basic_1.StringType)) {
24000
+ return false;
24001
+ }
24002
+ else if (!(sourceComponents[i].type instanceof basic_1.StringType) && targetComponents[i].type instanceof basic_1.StringType) {
24003
+ return false;
24004
+ }
24005
+ }
23985
24006
  return true;
23986
24007
  }
23987
24008
  else if (target.containsVoid() === true) {
@@ -25977,7 +25998,7 @@ class FieldAssignment {
25977
25998
  const text = c.concatTokens();
25978
25999
  if (text !== "-" && context instanceof basic_1.StructureType) {
25979
26000
  context = context.getComponentByName(text);
25980
- if (context === undefined && targetType.containsVoid() === false) {
26001
+ if (context === undefined) {
25981
26002
  const message = `field ${text} does not exist in structure`;
25982
26003
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
25983
26004
  return;
@@ -33131,6 +33152,7 @@ const _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ "./nod
33131
33152
  const _scope_type_1 = __webpack_require__(/*! ../_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
33132
33153
  const _reference_1 = __webpack_require__(/*! ../_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
33133
33154
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
33155
+ const visibility_1 = __webpack_require__(/*! ../../4_file_information/visibility */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js");
33134
33156
  class MethodImplementation {
33135
33157
  runSyntax(node, input) {
33136
33158
  const helper = new _object_oriented_1.ObjectOriented(input.scope);
@@ -33144,6 +33166,13 @@ class MethodImplementation {
33144
33166
  return;
33145
33167
  }
33146
33168
  const { method: methodDefinition } = helper.searchMethodName(classDefinition, methodName);
33169
+ if (classDefinition.isForTesting()
33170
+ && (methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.getVisibility()) !== visibility_1.Visibility.Private
33171
+ && ["SETUP", "TEARDOWN", "CLASS_SETUP", "CLASS_TEARDOWN"].includes(methodName.toUpperCase())) {
33172
+ const message = "Special test method \"" + methodName + "\" must be private";
33173
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33174
+ return;
33175
+ }
33147
33176
  const start = node.getFirstToken().getStart();
33148
33177
  if ((methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.isStatic()) === false) {
33149
33178
  input.scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, input.filename);
@@ -33984,6 +34013,11 @@ class ReadTable {
33984
34013
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33985
34014
  return;
33986
34015
  }
34016
+ else if (sourceType instanceof basic_1.TableType && sourceType.getAccessType() === basic_1.TableAccessType.hashed) {
34017
+ const message = "INDEX on hashed table not possible";
34018
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
34019
+ return;
34020
+ }
33987
34021
  }
33988
34022
  const fromSource = node.findExpressionAfterToken("FROM");
33989
34023
  if (fromSource) {
@@ -54737,7 +54771,7 @@ class Registry {
54737
54771
  }
54738
54772
  static abaplintVersion() {
54739
54773
  // magic, see build script "version.sh"
54740
- return "2.113.232";
54774
+ return "2.113.233";
54741
54775
  }
54742
54776
  getDDICReferences() {
54743
54777
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.113.232",
3
+ "version": "2.113.233",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,16 +38,16 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.113.232",
41
+ "@abaplint/core": "^2.113.233",
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.7.2",
45
+ "@types/node": "^24.9.1",
46
46
  "@types/progress": "^2.0.7",
47
47
  "chai": "^4.5.0",
48
48
  "p-limit": "^3.1.0",
49
49
  "chalk": "^5.6.2",
50
- "eslint": "^9.37.0",
50
+ "eslint": "^9.38.0",
51
51
  "glob": "^11.0.3",
52
52
  "json5": "^2.2.3",
53
53
  "memfs": "^4.49.0",