@abaplint/cli 2.105.23 → 2.105.24

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 +27 -8
  2. package/package.json +3 -3
package/build/cli.js CHANGED
@@ -22577,7 +22577,8 @@ class TypeUtils {
22577
22577
  }
22578
22578
  return false;
22579
22579
  }
22580
- else if (target instanceof cgeneric_type_1.CGenericType) {
22580
+ else if (target instanceof cgeneric_type_1.CGenericType
22581
+ || target instanceof basic_1.GenericObjectReferenceType) {
22581
22582
  return false;
22582
22583
  }
22583
22584
  else if (target instanceof basic_1.XSequenceType || target instanceof basic_1.XStringType) {
@@ -24347,19 +24348,22 @@ const let_1 = __webpack_require__(/*! ./let */ "./node_modules/@abaplint/core/bu
24347
24348
  class ConvBody {
24348
24349
  runSyntax(node, scope, filename) {
24349
24350
  if (node === undefined) {
24350
- return;
24351
+ throw new Error("ConvBody, node undefined");
24351
24352
  }
24352
24353
  let scoped = false;
24353
24354
  const l = node.findDirectExpression(Expressions.Let);
24354
24355
  if (l) {
24355
24356
  scoped = new let_1.Let().runSyntax(l, scope, filename);
24356
24357
  }
24357
- for (const s of node.findDirectExpressions(Expressions.Source)) {
24358
- new source_1.Source().runSyntax(s, scope, filename);
24358
+ const s = node.findDirectExpression(Expressions.Source);
24359
+ if (s === undefined) {
24360
+ throw new Error("ConvBody, no source found");
24359
24361
  }
24362
+ const sourceType = new source_1.Source().runSyntax(s, scope, filename);
24360
24363
  if (scoped === true) {
24361
24364
  scope.pop(node.getLastToken().getEnd());
24362
24365
  }
24366
+ return sourceType;
24363
24367
  }
24364
24368
  }
24365
24369
  exports.ConvBody = ConvBody;
@@ -26705,6 +26709,7 @@ const _builtin_1 = __webpack_require__(/*! ../_builtin */ "./node_modules/@abapl
26705
26709
  const attribute_chain_1 = __webpack_require__(/*! ./attribute_chain */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/attribute_chain.js");
26706
26710
  const dereference_1 = __webpack_require__(/*! ./dereference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/dereference.js");
26707
26711
  const _typed_identifier_1 = __webpack_require__(/*! ../../types/_typed_identifier */ "./node_modules/@abaplint/core/build/src/abap/types/_typed_identifier.js");
26712
+ const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js");
26708
26713
  /*
26709
26714
  * Type interference, valid scenarios:
26710
26715
  * typed = VALUE #( ... ). right hand side must follow left hand type
@@ -26788,7 +26793,10 @@ class Source {
26788
26793
  case "CONV":
26789
26794
  {
26790
26795
  const foundType = this.determineType(node, scope, filename, targetType);
26791
- new conv_body_1.ConvBody().runSyntax(node.findDirectExpression(Expressions.ConvBody), scope, filename);
26796
+ const bodyType = new conv_body_1.ConvBody().runSyntax(node.findDirectExpression(Expressions.ConvBody), scope, filename);
26797
+ if (new _type_utils_1.TypeUtils(scope).isAssignable(foundType, bodyType) === false) {
26798
+ throw new Error("CONV: Types not compatible");
26799
+ }
26792
26800
  this.addIfInferred(node, scope, filename, foundType);
26793
26801
  return foundType;
26794
26802
  }
@@ -28234,6 +28242,7 @@ const target_1 = __webpack_require__(/*! ../expressions/target */ "./node_module
28234
28242
  const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
28235
28243
  const fstarget_1 = __webpack_require__(/*! ../expressions/fstarget */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/fstarget.js");
28236
28244
  const inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js");
28245
+ const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_type_utils.js");
28237
28246
  // todo: issue error for short APPEND if the source is without header line
28238
28247
  class Append {
28239
28248
  runSyntax(node, scope, filename) {
@@ -28276,7 +28285,17 @@ class Append {
28276
28285
  else if (targetType instanceof basic_1.VoidType) {
28277
28286
  rowType = targetType;
28278
28287
  }
28279
- new source_1.Source().runSyntax(source, scope, filename, rowType);
28288
+ const sourceType = new source_1.Source().runSyntax(source, scope, filename, rowType);
28289
+ if (node.findDirectTokenByText("LINES")) {
28290
+ if (new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, targetType) === false) {
28291
+ throw new Error("Incompatible types");
28292
+ }
28293
+ }
28294
+ else {
28295
+ if (new _type_utils_1.TypeUtils(scope).isAssignable(sourceType, rowType) === false) {
28296
+ throw new Error("Incompatible types");
28297
+ }
28298
+ }
28280
28299
  }
28281
28300
  const from = node.findExpressionAfterToken("FROM");
28282
28301
  if (from && from.get() instanceof Expressions.Source) {
@@ -31674,7 +31693,7 @@ class ReadTable {
31674
31693
  }
31675
31694
  else if (t) {
31676
31695
  const targetType = new target_1.Target().runSyntax(t, scope, filename);
31677
- if (new _type_utils_1.TypeUtils(scope).isAssignable(rowType, targetType) === false) {
31696
+ if (new _type_utils_1.TypeUtils(scope).isAssignableStrict(rowType, targetType) === false) {
31678
31697
  throw new Error("Incompatible types");
31679
31698
  }
31680
31699
  }
@@ -51311,7 +51330,7 @@ class Registry {
51311
51330
  }
51312
51331
  static abaplintVersion() {
51313
51332
  // magic, see build script "version.sh"
51314
- return "2.105.23";
51333
+ return "2.105.24";
51315
51334
  }
51316
51335
  getDDICReferences() {
51317
51336
  return this.ddicReferences;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/cli",
3
- "version": "2.105.23",
3
+ "version": "2.105.24",
4
4
  "description": "abaplint - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -38,12 +38,12 @@
38
38
  },
39
39
  "homepage": "https://abaplint.org",
40
40
  "devDependencies": {
41
- "@abaplint/core": "^2.105.23",
41
+ "@abaplint/core": "^2.105.24",
42
42
  "@types/chai": "^4.3.12",
43
43
  "@types/glob": "^8.1.0",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mocha": "^10.0.6",
46
- "@types/node": "^20.11.20",
46
+ "@types/node": "^20.11.22",
47
47
  "@types/progress": "^2.0.7",
48
48
  "chai": "^4.4.1",
49
49
  "chalk": "^5.3.0",