@abaplint/cli 2.113.232 → 2.113.234

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 +53 -6
  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;
@@ -26498,11 +26519,19 @@ class InlineData {
26498
26519
  if (type instanceof basic_1.CSequenceType || type instanceof basic_1.CLikeType) {
26499
26520
  type = basic_1.StringType.get();
26500
26521
  }
26522
+ else if (type instanceof basic_1.XSequenceType) {
26523
+ type = basic_1.StringType.get();
26524
+ }
26501
26525
  else if (type instanceof basic_1.CGenericType) {
26502
26526
  const message = "InlineData, generic type C cannot be used for inferred type";
26503
26527
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
26504
26528
  return;
26505
26529
  }
26530
+ if (type.isGeneric()) {
26531
+ const message = "DATA definition cannot be generic, " + type.constructor.name;
26532
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
26533
+ type = basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
26534
+ }
26506
26535
  const identifier = new _typed_identifier_1.TypedIdentifier(token, input.filename, type, ["inline" /* IdentifierMeta.InlineDefinition */]);
26507
26536
  input.scope.addIdentifier(identifier);
26508
26537
  input.scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, input.filename);
@@ -28438,15 +28467,20 @@ class Source {
28438
28467
  const s = Source.runSyntax(node.findDirectExpression(Expressions.Source), input);
28439
28468
  /*
28440
28469
  console.dir(node.concatTokens());
28441
- console.dir(targetType);
28442
- console.dir(foundType);
28443
28470
  console.dir(s);
28471
+ console.dir(foundType);
28472
+ console.dir(targetType);
28444
28473
  */
28445
28474
  if (foundType && foundType.isGeneric() && s) {
28446
28475
  foundType = new basic_1.DataReference(s);
28447
28476
  }
28448
28477
  else if (foundType === undefined && s) {
28449
- foundType = new basic_1.DataReference(s);
28478
+ if (s instanceof basic_1.AnyType) {
28479
+ foundType = new basic_1.DataReference(basic_1.VoidType.get("REF-ANY"));
28480
+ }
28481
+ else {
28482
+ foundType = new basic_1.DataReference(s);
28483
+ }
28450
28484
  }
28451
28485
  else if (foundType && targetType === undefined) {
28452
28486
  foundType = new basic_1.DataReference(foundType);
@@ -33131,6 +33165,7 @@ const _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ "./nod
33131
33165
  const _scope_type_1 = __webpack_require__(/*! ../_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
33132
33166
  const _reference_1 = __webpack_require__(/*! ../_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
33133
33167
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
33168
+ const visibility_1 = __webpack_require__(/*! ../../4_file_information/visibility */ "./node_modules/@abaplint/core/build/src/abap/4_file_information/visibility.js");
33134
33169
  class MethodImplementation {
33135
33170
  runSyntax(node, input) {
33136
33171
  const helper = new _object_oriented_1.ObjectOriented(input.scope);
@@ -33144,6 +33179,13 @@ class MethodImplementation {
33144
33179
  return;
33145
33180
  }
33146
33181
  const { method: methodDefinition } = helper.searchMethodName(classDefinition, methodName);
33182
+ if (classDefinition.isForTesting()
33183
+ && (methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.getVisibility()) !== visibility_1.Visibility.Private
33184
+ && ["SETUP", "TEARDOWN", "CLASS_SETUP", "CLASS_TEARDOWN"].includes(methodName.toUpperCase())) {
33185
+ const message = "Special test method \"" + methodName + "\" must be private";
33186
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33187
+ return;
33188
+ }
33147
33189
  const start = node.getFirstToken().getStart();
33148
33190
  if ((methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.isStatic()) === false) {
33149
33191
  input.scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, input.filename);
@@ -33984,6 +34026,11 @@ class ReadTable {
33984
34026
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33985
34027
  return;
33986
34028
  }
34029
+ else if (sourceType instanceof basic_1.TableType && sourceType.getAccessType() === basic_1.TableAccessType.hashed) {
34030
+ const message = "INDEX on hashed table not possible";
34031
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
34032
+ return;
34033
+ }
33987
34034
  }
33988
34035
  const fromSource = node.findExpressionAfterToken("FROM");
33989
34036
  if (fromSource) {
@@ -54737,7 +54784,7 @@ class Registry {
54737
54784
  }
54738
54785
  static abaplintVersion() {
54739
54786
  // magic, see build script "version.sh"
54740
- return "2.113.232";
54787
+ return "2.113.234";
54741
54788
  }
54742
54789
  getDDICReferences() {
54743
54790
  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.234",
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.234",
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",