@abaplint/cli 2.113.231 → 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 +44 -9
  2. package/package.json +4 -4
package/build/cli.js CHANGED
@@ -4550,7 +4550,7 @@ const component_chain_simple_1 = __webpack_require__(/*! ./component_chain_simpl
4550
4550
  const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
4551
4551
  class ComponentCompareSimple extends combi_1.Expression {
4552
4552
  getRunnable() {
4553
- const source = (0, combi_1.alt)(_1.SimpleSource4, (0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP));
4553
+ const source = (0, combi_1.altPrio)((0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP), _1.SimpleSource4);
4554
4554
  const ret = (0, combi_1.seq)((0, combi_1.altPrio)(component_chain_simple_1.ComponentChainSimple, _1.Dynamic), "=", source);
4555
4555
  return (0, combi_1.plus)(ret);
4556
4556
  }
@@ -16309,12 +16309,11 @@ class ReadTable {
16309
16309
  const comparing = (0, combi_1.seq)("COMPARING", (0, combi_1.alt)((0, combi_1.plus)(expressions_1.FieldSub), (0, combi_1.plus)(expressions_1.Dynamic)));
16310
16310
  const index = (0, combi_1.seq)("INDEX", expressions_1.Source);
16311
16311
  const components = (0, combi_1.seq)((0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic), "COMPONENTS", expressions_1.ComponentCompareSimple);
16312
- const source = (0, combi_1.alt)(expressions_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source, version_1.Version.OpenABAP));
16313
- const key = (0, combi_1.seq)((0, combi_1.altPrio)("WITH KEY", "WITH TABLE KEY"), (0, combi_1.alt)(expressions_1.ComponentCompareSimple, components, (0, combi_1.seq)((0, combi_1.optPrio)("="), source)));
16312
+ const key = (0, combi_1.seq)((0, combi_1.altPrio)("WITH KEY", "WITH TABLE KEY"), (0, combi_1.alt)(expressions_1.ComponentCompareSimple, components, (0, combi_1.seq)((0, combi_1.optPrio)("="), expressions_1.Source)));
16314
16313
  const using = (0, combi_1.seq)("USING KEY", (0, combi_1.alt)(expressions_1.Field, expressions_1.Dynamic));
16315
- const from = (0, combi_1.seq)("FROM", source);
16314
+ const from = (0, combi_1.seq)("FROM", expressions_1.Source);
16316
16315
  const perm = (0, combi_1.per)((0, combi_1.alt)(index, key, from), expressions_1.ReadTableTarget, using, comparing, "CASTING", (0, combi_1.seq)("TRANSPORTING", (0, combi_1.altPrio)("ALL FIELDS", "NO FIELDS", transporting_fields_1.TransportingFields)), "BINARY SEARCH");
16317
- return (0, combi_1.seq)("READ TABLE", source, (0, combi_1.opt)(perm));
16316
+ return (0, combi_1.seq)("READ TABLE", (0, combi_1.alt)(expressions_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source, version_1.Version.OpenABAP)), (0, combi_1.opt)(perm));
16318
16317
  }
16319
16318
  }
16320
16319
  exports.ReadTable = ReadTable;
@@ -23980,9 +23979,30 @@ class TypeUtils {
23980
23979
  return true;
23981
23980
  }
23982
23981
  else if (source instanceof basic_1.StructureType) {
23983
- if (this.structureContainsString(target) && !this.structureContainsString(source)) {
23982
+ const targetDeep = this.structureContainsString(target);
23983
+ const sourceDeep = this.structureContainsString(source);
23984
+ if (targetDeep && !sourceDeep) {
23984
23985
  return false;
23985
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
+ }
23986
24006
  return true;
23987
24007
  }
23988
24008
  else if (target.containsVoid() === true) {
@@ -25458,7 +25478,9 @@ class ComponentCompareSimple {
25458
25478
  else if (c.get() instanceof Expressions.Dynamic) {
25459
25479
  targetType = undefined;
25460
25480
  }
25461
- else if (c.get() instanceof Expressions.Source || c.get() instanceof Expressions.SimpleSource4) {
25481
+ else if (c.get() instanceof Expressions.Source
25482
+ || c.get() instanceof Expressions.SimpleSource4
25483
+ || c.get() instanceof Expressions.SimpleSource2) {
25462
25484
  const sourceType = source_1.Source.runSyntax(c, input, targetType);
25463
25485
  if (targetType && new _type_utils_1.TypeUtils(input.scope).isAssignable(sourceType, targetType) === false) {
25464
25486
  const message = "ComponentCompareSimple, incompatible types";
@@ -25976,7 +25998,7 @@ class FieldAssignment {
25976
25998
  const text = c.concatTokens();
25977
25999
  if (text !== "-" && context instanceof basic_1.StructureType) {
25978
26000
  context = context.getComponentByName(text);
25979
- if (context === undefined && targetType.containsVoid() === false) {
26001
+ if (context === undefined) {
25980
26002
  const message = `field ${text} does not exist in structure`;
25981
26003
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
25982
26004
  return;
@@ -33130,6 +33152,7 @@ const _object_oriented_1 = __webpack_require__(/*! ../_object_oriented */ "./nod
33130
33152
  const _scope_type_1 = __webpack_require__(/*! ../_scope_type */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_scope_type.js");
33131
33153
  const _reference_1 = __webpack_require__(/*! ../_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
33132
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");
33133
33156
  class MethodImplementation {
33134
33157
  runSyntax(node, input) {
33135
33158
  const helper = new _object_oriented_1.ObjectOriented(input.scope);
@@ -33143,6 +33166,13 @@ class MethodImplementation {
33143
33166
  return;
33144
33167
  }
33145
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
+ }
33146
33176
  const start = node.getFirstToken().getStart();
33147
33177
  if ((methodDefinition === null || methodDefinition === void 0 ? void 0 : methodDefinition.isStatic()) === false) {
33148
33178
  input.scope.push(_scope_type_1.ScopeType.MethodInstance, methodName, start, input.filename);
@@ -33983,6 +34013,11 @@ class ReadTable {
33983
34013
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33984
34014
  return;
33985
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
+ }
33986
34021
  }
33987
34022
  const fromSource = node.findExpressionAfterToken("FROM");
33988
34023
  if (fromSource) {
@@ -54736,7 +54771,7 @@ class Registry {
54736
54771
  }
54737
54772
  static abaplintVersion() {
54738
54773
  // magic, see build script "version.sh"
54739
- return "2.113.231";
54774
+ return "2.113.233";
54740
54775
  }
54741
54776
  getDDICReferences() {
54742
54777
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.113.231",
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.231",
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",