@abaplint/transpiler-cli 2.11.8 → 2.11.10

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/bundle.js +276 -63
  2. package/package.json +3 -3
package/build/bundle.js CHANGED
@@ -4817,10 +4817,12 @@ __exportStar(__webpack_require__(/*! ./lob_handle */ "./node_modules/@abaplint/c
4817
4817
  __exportStar(__webpack_require__(/*! ./loop_group_by_component */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_component.js"), exports);
4818
4818
  __exportStar(__webpack_require__(/*! ./loop_group_by_target */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by_target.js"), exports);
4819
4819
  __exportStar(__webpack_require__(/*! ./loop_group_by */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js"), exports);
4820
+ __exportStar(__webpack_require__(/*! ./loop_source */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_source.js"), exports);
4820
4821
  __exportStar(__webpack_require__(/*! ./loop_target */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js"), exports);
4821
4822
  __exportStar(__webpack_require__(/*! ./macro_name */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/macro_name.js"), exports);
4822
4823
  __exportStar(__webpack_require__(/*! ./message_class */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_class.js"), exports);
4823
4824
  __exportStar(__webpack_require__(/*! ./message_number */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_number.js"), exports);
4825
+ __exportStar(__webpack_require__(/*! ./message_source_source */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source_source.js"), exports);
4824
4826
  __exportStar(__webpack_require__(/*! ./message_source */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source.js"), exports);
4825
4827
  __exportStar(__webpack_require__(/*! ./message_type_and_number */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js"), exports);
4826
4828
  __exportStar(__webpack_require__(/*! ./method_call_body */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/method_call_body.js"), exports);
@@ -4855,6 +4857,7 @@ __exportStar(__webpack_require__(/*! ./pass_by_value */ "./node_modules/@abaplin
4855
4857
  __exportStar(__webpack_require__(/*! ./perform_changing */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_changing.js"), exports);
4856
4858
  __exportStar(__webpack_require__(/*! ./perform_tables */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_tables.js"), exports);
4857
4859
  __exportStar(__webpack_require__(/*! ./perform_using */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/perform_using.js"), exports);
4860
+ __exportStar(__webpack_require__(/*! ./provide_field_name */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/provide_field_name.js"), exports);
4858
4861
  __exportStar(__webpack_require__(/*! ./radio_group_name */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/radio_group_name.js"), exports);
4859
4862
  __exportStar(__webpack_require__(/*! ./raise_with */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/raise_with.js"), exports);
4860
4863
  __exportStar(__webpack_require__(/*! ./read_table_target */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/read_table_target.js"), exports);
@@ -4898,7 +4901,6 @@ __exportStar(__webpack_require__(/*! ./sql_fields */ "./node_modules/@abaplint/c
4898
4901
  __exportStar(__webpack_require__(/*! ./sql_for_all_entries */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_for_all_entries.js"), exports);
4899
4902
  __exportStar(__webpack_require__(/*! ./sql_from_source */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from_source.js"), exports);
4900
4903
  __exportStar(__webpack_require__(/*! ./sql_from */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_from.js"), exports);
4901
- __exportStar(__webpack_require__(/*! ./provide_field_name */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/provide_field_name.js"), exports);
4902
4904
  __exportStar(__webpack_require__(/*! ./sql_function_input */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function_input.js"), exports);
4903
4905
  __exportStar(__webpack_require__(/*! ./sql_function */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_function.js"), exports);
4904
4906
  __exportStar(__webpack_require__(/*! ./sql_group_by */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/sql_group_by.js"), exports);
@@ -5305,6 +5307,29 @@ exports.LoopGroupByTarget = LoopGroupByTarget;
5305
5307
 
5306
5308
  /***/ }),
5307
5309
 
5310
+ /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_source.js":
5311
+ /*!********************************************************************************************!*\
5312
+ !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_source.js ***!
5313
+ \********************************************************************************************/
5314
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5315
+
5316
+ "use strict";
5317
+
5318
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
5319
+ exports.LoopSource = void 0;
5320
+ const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
5321
+ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
5322
+ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
5323
+ class LoopSource extends combi_1.Expression {
5324
+ getRunnable() {
5325
+ return (0, combi_1.alt)(_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP));
5326
+ }
5327
+ }
5328
+ exports.LoopSource = LoopSource;
5329
+ //# sourceMappingURL=loop_source.js.map
5330
+
5331
+ /***/ }),
5332
+
5308
5333
  /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js":
5309
5334
  /*!********************************************************************************************!*\
5310
5335
  !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_target.js ***!
@@ -5423,6 +5448,29 @@ exports.MessageSource = MessageSource;
5423
5448
 
5424
5449
  /***/ }),
5425
5450
 
5451
+ /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source_source.js":
5452
+ /*!******************************************************************************************************!*\
5453
+ !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_source_source.js ***!
5454
+ \******************************************************************************************************/
5455
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
5456
+
5457
+ "use strict";
5458
+
5459
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
5460
+ exports.MessageSourceSource = void 0;
5461
+ const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
5462
+ const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
5463
+ const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
5464
+ class MessageSourceSource extends combi_1.Expression {
5465
+ getRunnable() {
5466
+ return (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp02, _1.Source, version_1.Version.OpenABAP), _1.SimpleSource3);
5467
+ }
5468
+ }
5469
+ exports.MessageSourceSource = MessageSourceSource;
5470
+ //# sourceMappingURL=message_source_source.js.map
5471
+
5472
+ /***/ }),
5473
+
5426
5474
  /***/ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js":
5427
5475
  /*!********************************************************************************************************!*\
5428
5476
  !*** ./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/message_type_and_number.js ***!
@@ -6741,11 +6789,11 @@ class Source extends combi_1.Expression {
6741
6789
  const prefix = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlus), "BIT-NOT");
6742
6790
  const old = (0, combi_1.seq)((0, combi_1.optPrio)(prefix), (0, combi_1.altPrio)(_1.Constant, _1.StringTemplate, text_element_1.TextElement, bool, method, (0, combi_1.seq)(_1.FieldChain, deref), paren), (0, combi_1.optPrio)(after));
6743
6791
  const corr = (0, combi_1.ver)(version_1.Version.v740sp05, (0, combi_1.seq)("CORRESPONDING", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CorrespondingBody, rparen, (0, combi_1.optPrio)(after)));
6744
- const conv = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("CONV", _1.TypeNameOrInfer, lparenNoSpace, _1.ConvBody, rparenNoSpace, (0, combi_1.optPrio)(after)));
6792
+ const conv = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("CONV", _1.TypeNameOrInfer, lparenNoSpace, _1.ConvBody, rparenNoSpace, (0, combi_1.optPrio)(after)), version_1.Version.OpenABAP);
6745
6793
  const swit = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("SWITCH", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.SwitchBody, rparenNoSpace, (0, combi_1.optPrio)(after)));
6746
6794
  const value = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("VALUE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ValueBody, rparenNoSpace, (0, combi_1.optPrio)(after)));
6747
6795
  const cond = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("COND", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CondBody, rparenNoSpace, (0, combi_1.optPrio)(after)));
6748
- const reff = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("REF", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, (0, combi_1.optPrio)("OPTIONAL"), rparen));
6796
+ const reff = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("REF", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, (0, combi_1.optPrio)("OPTIONAL"), rparen), version_1.Version.OpenABAP);
6749
6797
  const exact = (0, combi_1.ver)(version_1.Version.v740sp02, (0, combi_1.seq)("EXACT", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), Source, rparen, (0, combi_1.optPrio)(after)));
6750
6798
  const filter = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("FILTER", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.FilterBody, rparen));
6751
6799
  const reduce = (0, combi_1.ver)(version_1.Version.v740sp08, (0, combi_1.seq)("REDUCE", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.ReduceBody, rparen, (0, combi_1.optPrio)(after)));
@@ -8445,7 +8493,7 @@ class TypeTableKey extends combi_1.Expression {
8445
8493
  getRunnable() {
8446
8494
  const uniqueness = (0, combi_1.alt)("NON-UNIQUE", "UNIQUE");
8447
8495
  const defaultKey = "DEFAULT KEY";
8448
- const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, "EMPTY KEY");
8496
+ const emptyKey = (0, combi_1.ver)(version_1.Version.v740sp02, "EMPTY KEY", version_1.Version.OpenABAP);
8449
8497
  const components = (0, combi_1.plus)((0, combi_1.alt)((0, combi_1.seq)("WITH", (0, combi_1.failStar)()), _1.FieldSub));
8450
8498
  const further = (0, combi_1.seq)((0, combi_1.alt)("WITHOUT", "WITH"), "FURTHER SECONDARY KEYS");
8451
8499
  const alias = (0, combi_1.seq)("ALIAS", _1.Field);
@@ -13791,7 +13839,6 @@ exports.Loop = void 0;
13791
13839
  const combi_1 = __webpack_require__(/*! ../combi */ "./node_modules/@abaplint/core/build/src/abap/2_statements/combi.js");
13792
13840
  const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
13793
13841
  const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
13794
- const simple_source2_1 = __webpack_require__(/*! ../expressions/simple_source2 */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/simple_source2.js");
13795
13842
  const loop_group_by_1 = __webpack_require__(/*! ../expressions/loop_group_by */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/loop_group_by.js");
13796
13843
  class Loop {
13797
13844
  getMatcher() {
@@ -13802,7 +13849,7 @@ class Loop {
13802
13849
  const to = (0, combi_1.seq)("TO", expressions_1.Source);
13803
13850
  const usingKey = (0, combi_1.seq)("USING KEY", (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic));
13804
13851
  const options = (0, combi_1.per)(expressions_1.LoopTarget, from, to, where, usingKey, group, step);
13805
- const at = (0, combi_1.seq)("AT", (0, combi_1.opt)((0, combi_1.seq)("SCREEN", (0, combi_1.failCombinator)())), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp08, "GROUP")), (0, combi_1.alt)(simple_source2_1.SimpleSource2, (0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source)), (0, combi_1.opt)(options));
13852
+ const at = (0, combi_1.seq)("AT", (0, combi_1.opt)((0, combi_1.seq)("SCREEN", (0, combi_1.failCombinator)())), (0, combi_1.opt)((0, combi_1.ver)(version_1.Version.v740sp08, "GROUP")), expressions_1.LoopSource, (0, combi_1.opt)(options));
13806
13853
  return (0, combi_1.seq)("LOOP", (0, combi_1.opt)(at));
13807
13854
  }
13808
13855
  }
@@ -13850,17 +13897,16 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
13850
13897
  const version_1 = __webpack_require__(/*! ../../../version */ "./node_modules/@abaplint/core/build/src/version.js");
13851
13898
  class Message {
13852
13899
  getMatcher() {
13853
- const s = (0, combi_1.alt)((0, combi_1.ver)(version_1.Version.v740sp02, expressions_1.Source), expressions_1.SimpleSource3);
13854
13900
  const like = (0, combi_1.seq)("DISPLAY LIKE", expressions_1.Source);
13855
13901
  const into = (0, combi_1.seq)("INTO", expressions_1.Target);
13856
13902
  const raising = (0, combi_1.seq)("RAISING", expressions_1.ExceptionName);
13857
13903
  const options = (0, combi_1.per)(like, into, raising);
13858
13904
  const type = (0, combi_1.seq)("TYPE", expressions_1.Source);
13859
- const sou = (0, combi_1.altPrio)(options, s);
13860
- const sourc = (0, combi_1.alt)(sou, (0, combi_1.seq)(s, sou), (0, combi_1.seq)(s, s, sou), (0, combi_1.seq)(s, s, s, options));
13861
- const mwith = (0, combi_1.seq)("WITH", s, (0, combi_1.opt)(sourc));
13905
+ const sou = (0, combi_1.altPrio)(options, expressions_1.MessageSourceSource);
13906
+ const sourc = (0, combi_1.alt)(sou, (0, combi_1.seq)(expressions_1.MessageSourceSource, sou), (0, combi_1.seq)(expressions_1.MessageSourceSource, expressions_1.MessageSourceSource, sou), (0, combi_1.seq)(expressions_1.MessageSourceSource, expressions_1.MessageSourceSource, expressions_1.MessageSourceSource, options));
13907
+ const mwith = (0, combi_1.seq)("WITH", expressions_1.MessageSourceSource, (0, combi_1.opt)(sourc));
13862
13908
  const foo = (0, combi_1.seq)(expressions_1.MessageSource, (0, combi_1.opt)(options), (0, combi_1.opt)(mwith));
13863
- const text = (0, combi_1.seq)(s, type, (0, combi_1.optPrio)(like), (0, combi_1.optPrio)(raising));
13909
+ const text = (0, combi_1.seq)(expressions_1.MessageSourceSource, type, (0, combi_1.optPrio)(like), (0, combi_1.optPrio)(raising));
13864
13910
  const cloud1 = (0, combi_1.seq)((0, combi_1.opt)((0, combi_1.seq)("WITH", expressions_1.Source, (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source))), (0, combi_1.altPrio)(into, raising));
13865
13911
  const cloud2 = (0, combi_1.seq)((0, combi_1.altPrio)(into, raising), (0, combi_1.opt)((0, combi_1.seq)("WITH", expressions_1.Source, (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source), (0, combi_1.opt)(expressions_1.Source))));
13866
13912
  const cloud = (0, combi_1.seq)(expressions_1.MessageSource, (0, combi_1.alt)(cloud1, cloud2));
@@ -14136,7 +14182,7 @@ class Move {
14136
14182
  getMatcher() {
14137
14183
  const mov = (0, combi_1.verNot)(version_1.Version.Cloud, "MOVE");
14138
14184
  const move = (0, combi_1.seq)(mov, (0, combi_1.altPrio)((0, combi_1.seq)("EXACT", expressions_1.Source, "TO", expressions_1.Target), (0, combi_1.seq)(expressions_1.Source, (0, combi_1.altPrio)("?TO", "TO"), expressions_1.Target)), (0, combi_1.opt)((0, combi_1.seq)("PERCENTAGE", expressions_1.Source, (0, combi_1.opt)((0, combi_1.alt)("LEFT", "RIGHT")))));
14139
- const calcAssign = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), "="), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WDash), "="), "/=", "*=", "&&="));
14185
+ const calcAssign = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.alt)((0, combi_1.seq)((0, combi_1.tok)(tokens_1.WPlus), "="), (0, combi_1.seq)((0, combi_1.tok)(tokens_1.WDash), "="), "/=", "*=", "&&="), version_1.Version.OpenABAP);
14140
14186
  const chained = (0, combi_1.seq)("=", (0, combi_1.star)((0, combi_1.seq)(expressions_1.Target, "=")));
14141
14187
  const equals = (0, combi_1.altPrio)((0, combi_1.altPrio)(chained, "?="), calcAssign);
14142
14188
  // todo, move "?=" to CAST?
@@ -31326,6 +31372,7 @@ const loop_group_by_1 = __webpack_require__(/*! ../expressions/loop_group_by */
31326
31372
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
31327
31373
  class Loop {
31328
31374
  runSyntax(node, input) {
31375
+ var _a;
31329
31376
  const loopTarget = node.findDirectExpression(Expressions.LoopTarget);
31330
31377
  let target = loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.findDirectExpression(Expressions.Target);
31331
31378
  const targetType = target ? target_1.Target.runSyntax(target, input) : undefined;
@@ -31334,7 +31381,7 @@ class Loop {
31334
31381
  }
31335
31382
  const write = (loopTarget === null || loopTarget === void 0 ? void 0 : loopTarget.findDirectTokenByText("ASSIGNING")) !== undefined;
31336
31383
  const sources = node.findDirectExpressions(Expressions.Source);
31337
- let firstSource = node.findDirectExpression(Expressions.SimpleSource2);
31384
+ let firstSource = (_a = node.findDirectExpression(Expressions.LoopSource)) === null || _a === void 0 ? void 0 : _a.getFirstChild();
31338
31385
  if (firstSource === undefined) {
31339
31386
  firstSource = sources[0];
31340
31387
  }
@@ -31483,6 +31530,14 @@ class Message {
31483
31530
  else if (found) {
31484
31531
  target_1.Target.runSyntax(found, input);
31485
31532
  }
31533
+ for (const mss of node.findDirectExpressions(Expressions.MessageSourceSource)) {
31534
+ for (const s of mss.findDirectExpressions(Expressions.Source)) {
31535
+ source_1.Source.runSyntax(s, input);
31536
+ }
31537
+ for (const s of mss.findDirectExpressions(Expressions.SimpleSource3)) {
31538
+ source_1.Source.runSyntax(s, input);
31539
+ }
31540
+ }
31486
31541
  for (const s of node.findDirectExpressions(Expressions.Source)) {
31487
31542
  source_1.Source.runSyntax(s, input);
31488
31543
  }
@@ -53606,7 +53661,7 @@ class Registry {
53606
53661
  }
53607
53662
  static abaplintVersion() {
53608
53663
  // magic, see build script "version.sh"
53609
- return "2.113.153";
53664
+ return "2.113.155";
53610
53665
  }
53611
53666
  getDDICReferences() {
53612
53667
  return this.ddicReferences;
@@ -59625,11 +59680,14 @@ ${indentation}${uniqueName} = ${source.concatTokens()}.\n${indentation}`);
59625
59680
  return undefined;
59626
59681
  }
59627
59682
  downportMessageSource(high, lowFile, highSyntax) {
59683
+ var _a;
59628
59684
  if (!(high.get() instanceof Statements.Message)) {
59629
59685
  return undefined;
59630
59686
  }
59631
59687
  const source = high.findExpressionAfterToken("MESSAGE");
59632
- if ((source === null || source === void 0 ? void 0 : source.get()) instanceof Expressions.Source) {
59688
+ if ((source === null || source === void 0 ? void 0 : source.get()) instanceof Expressions.MessageSourceSource
59689
+ && ((_a = source.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Source) {
59690
+ ;
59633
59691
  const uniqueName = this.uniqueName(high.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);
59634
59692
  const indentation = " ".repeat(high.getFirstToken().getStart().getCol() - 1);
59635
59693
  const firstToken = high.getFirstToken();
@@ -59944,7 +60002,7 @@ ${indentation}${uniqueName2}->if_t100_message~t100key = ${uniqueName1}.\n`;
59944
60002
  }
59945
60003
  abap += `${indentation}RAISE EXCEPTION ${uniqueName2}.`;
59946
60004
  const fix = edit_helper_1.EditHelper.replaceRange(lowFile, node.getStart(), node.getEnd(), abap);
59947
- return issue_1.Issue.atToken(lowFile, startToken, "Downport RAISE MESSAGE", this.getMetadata().key, this.conf.severity, fix);
60005
+ return issue_1.Issue.atToken(lowFile, startToken, "Downport RAISE EXCEPTION MESSAGE", this.getMetadata().key, this.conf.severity, fix);
59948
60006
  }
59949
60007
  emptyKey(low, node, lowFile) {
59950
60008
  if (!(low.get() instanceof _statement_1.Unknown)) {
@@ -60488,17 +60546,18 @@ ${indentation} output = ${uniqueName}.\n`;
60488
60546
  return undefined;
60489
60547
  }
60490
60548
  outlineLoopInput(low, high, lowFile, highSyntax) {
60549
+ var _a, _b;
60491
60550
  if (!(low.get() instanceof _statement_1.Unknown)) {
60492
60551
  return undefined;
60493
60552
  }
60494
60553
  else if (!(high.get() instanceof Statements.Loop)) {
60495
60554
  return undefined;
60496
60555
  }
60497
- else if (high.findDirectExpression(Expressions.SimpleSource2)) {
60556
+ else if ((_a = high.findDirectExpression(Expressions.LoopSource)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.SimpleSource2)) {
60498
60557
  return undefined;
60499
60558
  }
60500
60559
  // the first Source must be outlined
60501
- const s = high.findDirectExpression(Expressions.Source);
60560
+ const s = (_b = high.findDirectExpression(Expressions.LoopSource)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.Source);
60502
60561
  if (s === undefined) {
60503
60562
  return undefined;
60504
60563
  }
@@ -60511,12 +60570,12 @@ ${indentation} output = ${uniqueName}.\n`;
60511
60570
  return issue_1.Issue.atToken(lowFile, high.getFirstToken(), "Outline LOOP input", this.getMetadata().key, this.conf.severity, fix);
60512
60571
  }
60513
60572
  outlineLoopTarget(node, lowFile, highSyntax) {
60514
- var _a, _b, _c, _d, _e, _f;
60573
+ var _a, _b, _c, _d, _e, _f, _g;
60515
60574
  // also allows outlining of voided types
60516
60575
  if (!(node.get() instanceof Statements.Loop)) {
60517
60576
  return undefined;
60518
60577
  }
60519
- const source = node.findDirectExpression(Expressions.SimpleSource2);
60578
+ const source = (_a = node.findDirectExpression(Expressions.LoopSource)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.SimpleSource2);
60520
60579
  if (source === undefined) {
60521
60580
  return undefined;
60522
60581
  }
@@ -60535,9 +60594,9 @@ ${indentation} output = ${uniqueName}.\n`;
60535
60594
  }
60536
60595
  const isReference = concat.includes(" REFERENCE INTO ");
60537
60596
  const indentation = " ".repeat(node.getFirstToken().getStart().getCol() - 1);
60538
- const dataTarget = (_b = (_a = node.findDirectExpression(Expressions.LoopTarget)) === null || _a === void 0 ? void 0 : _a.findDirectExpression(Expressions.Target)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.InlineData);
60597
+ const dataTarget = (_c = (_b = node.findDirectExpression(Expressions.LoopTarget)) === null || _b === void 0 ? void 0 : _b.findDirectExpression(Expressions.Target)) === null || _c === void 0 ? void 0 : _c.findDirectExpression(Expressions.InlineData);
60539
60598
  if (dataTarget) {
60540
- const targetName = ((_c = dataTarget.findDirectExpression(Expressions.TargetField)) === null || _c === void 0 ? void 0 : _c.concatTokens()) || "DOWNPORT_ERROR";
60599
+ const targetName = ((_d = dataTarget.findDirectExpression(Expressions.TargetField)) === null || _d === void 0 ? void 0 : _d.concatTokens()) || "DOWNPORT_ERROR";
60541
60600
  let code = `DATA ${targetName} LIKE LINE OF ${sourceName}.\n${indentation}`;
60542
60601
  if (isReference) {
60543
60602
  const likeName = this.uniqueName(node.getFirstToken().getStart(), lowFile.getFilename(), highSyntax);
@@ -60548,9 +60607,9 @@ ${indentation} output = ${uniqueName}.\n`;
60548
60607
  const fix = edit_helper_1.EditHelper.merge(fix2, fix1);
60549
60608
  return issue_1.Issue.atToken(lowFile, node.getFirstToken(), "Outline LOOP data target", this.getMetadata().key, this.conf.severity, fix);
60550
60609
  }
60551
- const fsTarget = (_e = (_d = node.findDirectExpression(Expressions.LoopTarget)) === null || _d === void 0 ? void 0 : _d.findDirectExpression(Expressions.FSTarget)) === null || _e === void 0 ? void 0 : _e.findDirectExpression(Expressions.InlineFS);
60610
+ const fsTarget = (_f = (_e = node.findDirectExpression(Expressions.LoopTarget)) === null || _e === void 0 ? void 0 : _e.findDirectExpression(Expressions.FSTarget)) === null || _f === void 0 ? void 0 : _f.findDirectExpression(Expressions.InlineFS);
60552
60611
  if (fsTarget) {
60553
- const targetName = ((_f = fsTarget.findDirectExpression(Expressions.TargetFieldSymbol)) === null || _f === void 0 ? void 0 : _f.concatTokens()) || "DOWNPORT_ERROR";
60612
+ const targetName = ((_g = fsTarget.findDirectExpression(Expressions.TargetFieldSymbol)) === null || _g === void 0 ? void 0 : _g.concatTokens()) || "DOWNPORT_ERROR";
60554
60613
  let type = `LIKE LINE OF ${sourceName}`;
60555
60614
  const f = foundType === null || foundType === void 0 ? void 0 : foundType.getType();
60556
60615
  if (f instanceof basic_1.TableType && f.getRowType() instanceof basic_1.AnyType) {
@@ -79142,6 +79201,7 @@ __exportStar(__webpack_require__(/*! ./field_offset */ "./node_modules/@abaplint
79142
79201
  __exportStar(__webpack_require__(/*! ./field_symbol */ "./node_modules/@abaplint/transpiler/build/src/expressions/field_symbol.js"), exports);
79143
79202
  __exportStar(__webpack_require__(/*! ./function_exporting */ "./node_modules/@abaplint/transpiler/build/src/expressions/function_exporting.js"), exports);
79144
79203
  __exportStar(__webpack_require__(/*! ./source_field_symbol_chain */ "./node_modules/@abaplint/transpiler/build/src/expressions/source_field_symbol_chain.js"), exports);
79204
+ __exportStar(__webpack_require__(/*! ./type_name_or_infer */ "./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js"), exports);
79145
79205
  __exportStar(__webpack_require__(/*! ./function_parameters */ "./node_modules/@abaplint/transpiler/build/src/expressions/function_parameters.js"), exports);
79146
79206
  __exportStar(__webpack_require__(/*! ./message_number */ "./node_modules/@abaplint/transpiler/build/src/expressions/message_number.js"), exports);
79147
79207
  __exportStar(__webpack_require__(/*! ./method_call_body */ "./node_modules/@abaplint/transpiler/build/src/expressions/method_call_body.js"), exports);
@@ -79894,7 +79954,7 @@ class SourceTranspiler {
79894
79954
  const children = node.getChildren();
79895
79955
  for (let i = 0; i < children.length; i++) {
79896
79956
  const c = children[i];
79897
- const last = i === children.length - 1;
79957
+ const isLast = i === children.length - 1;
79898
79958
  if (c instanceof core_1.Nodes.ExpressionNode) {
79899
79959
  if (c.get() instanceof core_1.Expressions.FieldChain) {
79900
79960
  ret.appendChunk(new _1.FieldChainTranspiler(this.addGet).transpile(c, traversal));
@@ -79921,7 +79981,7 @@ class SourceTranspiler {
79921
79981
  if (code.includes("await")) {
79922
79982
  ret = new chunk_1.Chunk().appendString("(").appendChunk(ret).appendString(")");
79923
79983
  }
79924
- if (this.addGet && last === true) {
79984
+ if (this.addGet && isLast === true) {
79925
79985
  ret.append(".get()", c, traversal);
79926
79986
  }
79927
79987
  }
@@ -79937,7 +79997,7 @@ class SourceTranspiler {
79937
79997
  else if (c.get() instanceof core_1.Expressions.ComponentChain) {
79938
79998
  ret = new chunk_1.Chunk().appendString("(").appendChunk(ret).appendString(").get().");
79939
79999
  ret.appendChunk(new _1.ComponentChainTranspiler().transpile(c, traversal));
79940
- if (this.addGet && last === true) {
80000
+ if (this.addGet && isLast === true) {
79941
80001
  ret.append(".get()", c, traversal);
79942
80002
  }
79943
80003
  }
@@ -79947,6 +80007,17 @@ class SourceTranspiler {
79947
80007
  else if (c.get() instanceof core_1.Expressions.TextElement) {
79948
80008
  ret = new chunk_1.Chunk().appendString(`new abap.types.String().set("${c.concatTokens()}")`);
79949
80009
  }
80010
+ else if (c.get() instanceof core_1.Expressions.ConvBody) {
80011
+ const typ = node.findFirstExpression(core_1.Expressions.TypeNameOrInfer);
80012
+ if (typ === undefined) {
80013
+ throw new Error("TypeNameOrInfer not found in ConvBody");
80014
+ }
80015
+ ret = new chunk_1.Chunk().appendString(new _1.TypeNameOrInfer().transpile(typ, traversal).getCode());
80016
+ ret.appendString(".set(");
80017
+ // todo: handle LET
80018
+ ret.appendString(traversal.traverse(c.getFirstChild()).getCode());
80019
+ ret.appendString(")");
80020
+ }
79950
80021
  else {
79951
80022
  ret.appendString("SourceUnknown-" + c.get().constructor.name);
79952
80023
  }
@@ -80911,6 +80982,41 @@ exports.TargetTranspiler = TargetTranspiler;
80911
80982
 
80912
80983
  /***/ }),
80913
80984
 
80985
+ /***/ "./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js":
80986
+ /*!***************************************************************************************!*\
80987
+ !*** ./node_modules/@abaplint/transpiler/build/src/expressions/type_name_or_infer.js ***!
80988
+ \***************************************************************************************/
80989
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
80990
+
80991
+ "use strict";
80992
+
80993
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
80994
+ exports.TypeNameOrInfer = void 0;
80995
+ const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80996
+ const transpile_types_1 = __webpack_require__(/*! ../transpile_types */ "./node_modules/@abaplint/transpiler/build/src/transpile_types.js");
80997
+ class TypeNameOrInfer {
80998
+ transpile(node, traversal) {
80999
+ let type;
81000
+ const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
81001
+ if (node.concatTokens() === "#") {
81002
+ type = traversal.lookupInferred(node, scope);
81003
+ }
81004
+ else {
81005
+ type = traversal.lookupType(node.getFirstChild(), scope);
81006
+ }
81007
+ if (type === undefined) {
81008
+ throw new Error("TypeNameOrInfer, type not found: " + node.concatTokens());
81009
+ }
81010
+ const ret = new chunk_1.Chunk();
81011
+ ret.appendString(new transpile_types_1.TranspileTypes().toType(type));
81012
+ return ret;
81013
+ }
81014
+ }
81015
+ exports.TypeNameOrInfer = TypeNameOrInfer;
81016
+ //# sourceMappingURL=type_name_or_infer.js.map
81017
+
81018
+ /***/ }),
81019
+
80914
81020
  /***/ "./node_modules/@abaplint/transpiler/build/src/feature_flags.js":
80915
81021
  /*!**********************************************************************!*\
80916
81022
  !*** ./node_modules/@abaplint/transpiler/build/src/feature_flags.js ***!
@@ -85339,7 +85445,8 @@ class LoopTranspiler {
85339
85445
  if (!(node.get() instanceof abaplint.Statements.Loop)) {
85340
85446
  throw new Error("LoopTranspiler, unexpected node");
85341
85447
  }
85342
- const source = traversal.traverse(node.findDirectExpression(abaplint.Expressions.SimpleSource2)).getCode();
85448
+ const loopSource = node.findDirectExpression(abaplint.Expressions.LoopSource)?.getFirstChild();
85449
+ const source = traversal.traverse(loopSource).getCode();
85343
85450
  this.unique = unique_identifier_1.UniqueIdentifier.get();
85344
85451
  let target = "";
85345
85452
  const into = node.findDirectExpression(abaplint.Expressions.LoopTarget)?.findDirectExpression(abaplint.Expressions.Target);
@@ -85543,7 +85650,7 @@ class MessageTranspiler {
85543
85650
  }
85544
85651
  else {
85545
85652
  // exception or constant based
85546
- const exception = node.findDirectExpression(abaplint.Expressions.SimpleSource3);
85653
+ const exception = node.findDirectExpression(abaplint.Expressions.MessageSourceSource)?.findDirectExpression(abaplint.Expressions.Source);
85547
85654
  const str = exception?.findFirstExpression(abaplint.Expressions.Constant);
85548
85655
  if (str) {
85549
85656
  options.push("text: " + traversal.traverse(str).getCode());
@@ -85566,11 +85673,10 @@ class MessageTranspiler {
85566
85673
  if (c.getFirstToken().getStr().toUpperCase() === "WITH") {
85567
85674
  withs = true;
85568
85675
  }
85569
- else if (withs === true && c.get() instanceof abaplint.Expressions.Source) {
85570
- w.push(traversal.traverse(c).getCode());
85571
- }
85572
- else if (withs === true && c.get() instanceof abaplint.Expressions.SimpleSource3) {
85573
- w.push(traversal.traverse(c).getCode());
85676
+ else if (withs === true
85677
+ && c.get() instanceof abaplint.Expressions.MessageSourceSource
85678
+ && c instanceof abaplint.Nodes.ExpressionNode) {
85679
+ w.push(traversal.traverse(c.getFirstChild()).getCode());
85574
85680
  }
85575
85681
  else if (withs === true) {
85576
85682
  break;
@@ -85971,21 +86077,63 @@ class MoveTranspiler {
85971
86077
  }
85972
86078
  const ret = new chunk_1.Chunk();
85973
86079
  const second = node.getChildren()[1]?.concatTokens();
85974
- if (second === "?=") {
85975
- ret.appendString("await abap.statements.cast(")
85976
- .appendChunk(targets[0])
85977
- .appendString(", ")
85978
- .appendChunk(source)
85979
- .append(");", node.getLastToken(), traversal);
85980
- }
85981
- else {
85982
- for (const target of targets.reverse()) {
85983
- ret.appendChunk(target)
85984
- .appendString(".set(")
86080
+ switch (second) {
86081
+ case "?=":
86082
+ ret.appendString("await abap.statements.cast(")
86083
+ .appendChunk(targets[0])
86084
+ .appendString(", ")
85985
86085
  .appendChunk(source)
85986
86086
  .append(");", node.getLastToken(), traversal);
85987
- source = target;
85988
- }
86087
+ break;
86088
+ case "+":
86089
+ ret.appendChunk(targets[0])
86090
+ .appendString(".set(abap.operators.add(")
86091
+ .appendChunk(targets[0])
86092
+ .appendString(", ")
86093
+ .appendChunk(source)
86094
+ .append("));", node.getLastToken(), traversal);
86095
+ break;
86096
+ case "-":
86097
+ ret.appendChunk(targets[0])
86098
+ .appendString(".set(abap.operators.minus(")
86099
+ .appendChunk(targets[0])
86100
+ .appendString(", ")
86101
+ .appendChunk(source)
86102
+ .append("));", node.getLastToken(), traversal);
86103
+ break;
86104
+ case "/=":
86105
+ ret.appendChunk(targets[0])
86106
+ .appendString(".set(abap.operators.divide(")
86107
+ .appendChunk(targets[0])
86108
+ .appendString(", ")
86109
+ .appendChunk(source)
86110
+ .append("));", node.getLastToken(), traversal);
86111
+ break;
86112
+ case "*=":
86113
+ ret.appendChunk(targets[0])
86114
+ .appendString(".set(abap.operators.multiply(")
86115
+ .appendChunk(targets[0])
86116
+ .appendString(", ")
86117
+ .appendChunk(source)
86118
+ .append("));", node.getLastToken(), traversal);
86119
+ break;
86120
+ case "&&=":
86121
+ ret.appendChunk(targets[0])
86122
+ .appendString(".set(abap.operators.concat(")
86123
+ .appendChunk(targets[0])
86124
+ .appendString(", ")
86125
+ .appendChunk(source)
86126
+ .append("));", node.getLastToken(), traversal);
86127
+ break;
86128
+ default:
86129
+ for (const target of targets.reverse()) {
86130
+ ret.appendChunk(target)
86131
+ .appendString(".set(")
86132
+ .appendChunk(source)
86133
+ .append(");", node.getLastToken(), traversal);
86134
+ source = target;
86135
+ }
86136
+ break;
85989
86137
  }
85990
86138
  return ret;
85991
86139
  }
@@ -89372,24 +89520,8 @@ class TranspileTypes {
89372
89520
  const list = [];
89373
89521
  const suffix = {};
89374
89522
  const asInclude = {};
89375
- /*
89376
- const skipFields: Set<string> = new Set();
89377
-
89378
- for (const c of type.getComponents()) {
89379
- if (c.type instanceof abaplint.BasicTypes.StructureType) {
89380
- for (const f of c.type.getComponents()) {
89381
- skipFields.add(f.name.toLowerCase());
89382
- }
89383
- }
89384
- }
89385
- */
89386
89523
  for (const c of type.getComponents()) {
89387
89524
  const lower = c.name.toLowerCase();
89388
- /*
89389
- if (skipFields.has(lower)) {
89390
- continue; // skip fields from nested structures
89391
- }
89392
- */
89393
89525
  list.push(`"` + lower + `": ` + this.toType(c.type));
89394
89526
  if (c.suffix) {
89395
89527
  suffix[lower] = c.suffix;
@@ -89919,6 +90051,36 @@ class Traversal {
89919
90051
  }
89920
90052
  return undefined;
89921
90053
  }
90054
+ findInferredTypeReference(token) {
90055
+ const scope = this.findCurrentScopeByToken(token);
90056
+ if (scope === undefined) {
90057
+ return undefined;
90058
+ }
90059
+ for (const r of scope.getData().references) {
90060
+ if (r.referenceType === abaplint.ReferenceType.InferredType
90061
+ && r.position.getStart().equals(token.getStart())) {
90062
+ if (r.resolved instanceof abaplint.TypedIdentifier) {
90063
+ return r.resolved.getType();
90064
+ }
90065
+ }
90066
+ }
90067
+ return undefined;
90068
+ }
90069
+ findTypeReference(token) {
90070
+ const scope = this.findCurrentScopeByToken(token);
90071
+ if (scope === undefined) {
90072
+ return undefined;
90073
+ }
90074
+ for (const r of scope.getData().references) {
90075
+ if (r.referenceType === abaplint.ReferenceType.TypeReference
90076
+ && r.position.getStart().equals(token.getStart())) {
90077
+ if (r.resolved instanceof abaplint.TypedIdentifier) {
90078
+ return r.resolved.getType();
90079
+ }
90080
+ }
90081
+ }
90082
+ return undefined;
90083
+ }
89922
90084
  buildThisAttributes(def, cName) {
89923
90085
  let ret = "";
89924
90086
  for (const a of def.getAttributes()?.getAll() || []) {
@@ -90091,6 +90253,50 @@ this.INTERNAL_ID = abap.internalIdCounter++;\n`;
90091
90253
  }
90092
90254
  return ret;
90093
90255
  }
90256
+ lookupType(node, scope) {
90257
+ if (scope === undefined) {
90258
+ return undefined;
90259
+ }
90260
+ else if (!(node.get() instanceof abaplint.Expressions.TypeName)) {
90261
+ throw new Error("lookupType, node is not a TypeName, " + node.get());
90262
+ }
90263
+ const name = node.concatTokens().toLowerCase();
90264
+ switch (name) {
90265
+ case "i":
90266
+ return abaplint.BasicTypes.IntegerType.get();
90267
+ case "f":
90268
+ return new abaplint.BasicTypes.FloatType();
90269
+ case "string":
90270
+ return abaplint.BasicTypes.StringType.get();
90271
+ case "xstring":
90272
+ return abaplint.BasicTypes.XStringType.get();
90273
+ case "d":
90274
+ return new abaplint.BasicTypes.DateType();
90275
+ case "t":
90276
+ return new abaplint.BasicTypes.TimeType();
90277
+ default:
90278
+ break;
90279
+ }
90280
+ const found = this.findTypeReference(node.getFirstToken());
90281
+ if (found !== undefined) {
90282
+ return found;
90283
+ }
90284
+ const dtel = this.reg.getObject("DTEL", name);
90285
+ if (dtel) {
90286
+ return dtel.parseType(this.reg);
90287
+ }
90288
+ // todo: yea, well, yea
90289
+ throw new Error("lookupType, type not found, " + node.concatTokens());
90290
+ }
90291
+ lookupInferred(node, scope) {
90292
+ if (scope === undefined) {
90293
+ return undefined;
90294
+ }
90295
+ else if (node.concatTokens() !== "#") {
90296
+ throw new Error("lookupInferred, unexpected, " + node.get());
90297
+ }
90298
+ return this.findInferredTypeReference(node.getFirstToken());
90299
+ }
90094
90300
  determineType(node, scope) {
90095
90301
  if (scope === undefined) {
90096
90302
  return undefined;
@@ -90701,6 +90907,13 @@ class Validation {
90701
90907
  // this is not a constant, just a regex that happens to not match anything
90702
90908
  exports.config.syntax.errorNamespace = "VOID_EVERYTHING";
90703
90909
  }
90910
+ if (this.options?.skipVersionCheck === true) {
90911
+ // todo, set it to abaplint default version
90912
+ exports.config.syntax.version = core_1.Version.v758;
90913
+ }
90914
+ else {
90915
+ exports.config.syntax.version = core_1.Version.OpenABAP;
90916
+ }
90704
90917
  const conf = new core_1.Config(JSON.stringify(exports.config));
90705
90918
  reg.setConfig(conf);
90706
90919
  const issues = reg.findIssues();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.11.8",
3
+ "version": "2.11.10",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -27,8 +27,8 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
- "@abaplint/core": "^2.113.153",
31
- "@abaplint/transpiler": "^2.11.8",
30
+ "@abaplint/core": "^2.113.155",
31
+ "@abaplint/transpiler": "^2.11.10",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^24.2.0",
34
34
  "@types/progress": "^2.0.7",