@abaplint/cli 2.120.64 → 2.120.66

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 +374 -653
  2. package/package.json +2 -2
package/build/cli.js CHANGED
@@ -7567,7 +7567,9 @@ class Source extends combi_1.Expression {
7567
7567
  const comp = (0, combi_1.seq)((0, combi_1.tok)(tokens_1.Dash), _1.ComponentChain);
7568
7568
  const attr = (0, combi_1.seq)(_1.Arrow, attribute_chain_1.AttributeChain);
7569
7569
  const deref = (0, combi_1.optPrio)((0, combi_1.ver)(version_1.Release.v756, dereference_1.Dereference));
7570
- const dynChain = (0, combi_1.star)((0, combi_1.altPrio)((0, _dynamic_access_1.dynAttr)(), (0, _dynamic_access_1.dynComp)(), dereference_1.Dereference));
7570
+ // below v756 "->*" directly after a functional method call is a syntax error, CAST can be dereferenced
7571
+ const dynChain = (0, combi_1.star)((0, combi_1.seq)((0, combi_1.altPrio)((0, _dynamic_access_1.dynAttr)(), (0, _dynamic_access_1.dynComp)()), (0, combi_1.optPrio)(dereference_1.Dereference)));
7572
+ const castDeref = (0, combi_1.seq)(_1.Cast, dereference_1.Dereference);
7571
7573
  const method = (0, combi_1.seq)(_1.MethodCallChain, (0, combi_1.optPrio)((0, combi_1.altPrio)(attr, comp)), deref, dynChain);
7572
7574
  const rparen = (0, combi_1.tok)(tokens_1.WParenRightW);
7573
7575
  const rparenNoSpace = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.ParenRightW), (0, combi_1.tok)(tokens_1.WParenRightW));
@@ -7577,7 +7579,7 @@ class Source extends combi_1.Expression {
7577
7579
  const after = (0, combi_1.seq)((0, combi_1.altPrio)("&", "&&", _1.ArithOperator), Source);
7578
7580
  const bool = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.ver)(version_1.Release.v702, (0, combi_1.regex)(/^BOOLC$/i), { also: combi_1.AlsoIn.OpenABAP }), (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.regex)(/^XSDBOOL$/i), { also: combi_1.AlsoIn.OpenABAP })), (0, combi_1.tok)(tokens_1.ParenLeftW), _1.Cond, ")");
7579
7581
  const prefix = (0, combi_1.altPrio)((0, combi_1.tok)(tokens_1.WPlus), "BIT-NOT");
7580
- 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));
7582
+ const old = (0, combi_1.seq)((0, combi_1.optPrio)(prefix), (0, combi_1.altPrio)(_1.Constant, _1.StringTemplate, text_element_1.TextElement, bool, castDeref, method, (0, combi_1.seq)(_1.FieldChain, deref), paren), (0, combi_1.optPrio)(after));
7581
7583
  const corr = (0, combi_1.ver)(version_1.Release.v740sp05, (0, combi_1.seq)("CORRESPONDING", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.CorrespondingBody, rparen, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7582
7584
  const conv = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("CONV", _1.TypeNameOrInfer, lparenNoSpace, _1.ConvBody, rparenNoSpace, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
7583
7585
  const swit = (0, combi_1.ver)(version_1.Release.v740sp02, (0, combi_1.seq)("SWITCH", _1.TypeNameOrInfer, (0, combi_1.tok)(tokens_1.ParenLeftW), _1.SwitchBody, rparenNoSpace, (0, combi_1.optPrio)(after)), { also: combi_1.AlsoIn.OpenABAP });
@@ -13314,7 +13316,7 @@ const version_1 = __webpack_require__(/*! ../../../version */ "../core/build/src
13314
13316
  class CreateData {
13315
13317
  getMatcher() {
13316
13318
  const areaHandle = (0, combi_1.seq)("AREA HANDLE", expressions_1.Source);
13317
- const typeHandle = (0, combi_1.seq)("TYPE HANDLE", expressions_1.Source);
13319
+ const typeHandle = (0, combi_1.seq)("TYPE HANDLE", expressions_1.SimpleSource3);
13318
13320
  const type = (0, combi_1.seq)((0, combi_1.alt)("TYPE", "TYPE REF TO", "TYPE TABLE OF", "TYPE TABLE OF REF TO", "TYPE SORTED TABLE OF", "TYPE HASHED TABLE OF", "TYPE STANDARD TABLE OF", "TYPE LINE OF"), (0, combi_1.alt)(expressions_1.TypeName, expressions_1.Dynamic));
13319
13321
  const like = (0, combi_1.seq)((0, combi_1.alt)("LIKE", "LIKE HASHED TABLE OF", "LIKE LINE OF", "LIKE STANDARD TABLE OF", "LIKE SORTED TABLE OF", "LIKE TABLE OF"), (0, combi_1.alt)(expressions_1.Source, expressions_1.Dynamic));
13320
13322
  const length = (0, combi_1.seq)("LENGTH", expressions_1.Source);
@@ -16556,7 +16558,7 @@ class Loop {
16556
16558
  getMatcher() {
16557
16559
  const where = (0, combi_1.seq)("WHERE", (0, combi_1.alt)(expressions_1.ComponentCond, (0, combi_1.verNotLang)(version_1.LanguageVersion.KeyUser, expressions_1.Dynamic)));
16558
16560
  const group = (0, combi_1.ver)(version_1.Release.v740sp08, (0, combi_1.seq)("GROUP BY", loop_group_by_1.LoopGroupBy), { also: combi_1.AlsoIn.OpenABAP });
16559
- const step = (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)("STEP", expressions_1.Source));
16561
+ const step = (0, combi_1.ver)(version_1.Release.v757, (0, combi_1.seq)("STEP", expressions_1.Source), { also: combi_1.AlsoIn.OpenABAP });
16560
16562
  const from = (0, combi_1.seq)("FROM", expressions_1.Source);
16561
16563
  const to = (0, combi_1.seq)("TO", expressions_1.Source);
16562
16564
  const usingKey = (0, combi_1.seq)("USING KEY", (0, combi_1.altPrio)(expressions_1.SimpleName, expressions_1.Dynamic));
@@ -29531,6 +29533,72 @@ function checkOffsetLength(source, sourceType, method, input) {
29531
29533
 
29532
29534
  /***/ },
29533
29535
 
29536
+ /***/ "../core/build/src/abap/5_syntax/expressions/_check_text_symbol.js"
29537
+ /*!*************************************************************************!*\
29538
+ !*** ../core/build/src/abap/5_syntax/expressions/_check_text_symbol.js ***!
29539
+ \*************************************************************************/
29540
+ (__unused_webpack_module, exports, __webpack_require__) {
29541
+
29542
+ "use strict";
29543
+
29544
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29545
+ if (k2 === undefined) k2 = k;
29546
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29547
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
29548
+ desc = { enumerable: true, get: function() { return m[k]; } };
29549
+ }
29550
+ Object.defineProperty(o, k2, desc);
29551
+ }) : (function(o, m, k, k2) {
29552
+ if (k2 === undefined) k2 = k;
29553
+ o[k2] = m[k];
29554
+ }));
29555
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29556
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29557
+ }) : function(o, v) {
29558
+ o["default"] = v;
29559
+ });
29560
+ var __importStar = (this && this.__importStar) || (function () {
29561
+ var ownKeys = function(o) {
29562
+ ownKeys = Object.getOwnPropertyNames || function (o) {
29563
+ var ar = [];
29564
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29565
+ return ar;
29566
+ };
29567
+ return ownKeys(o);
29568
+ };
29569
+ return function (mod) {
29570
+ if (mod && mod.__esModule) return mod;
29571
+ var result = {};
29572
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
29573
+ __setModuleDefault(result, mod);
29574
+ return result;
29575
+ };
29576
+ })();
29577
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
29578
+ exports.checkTextSymbol = checkTextSymbol;
29579
+ const Expressions = __importStar(__webpack_require__(/*! ../../2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
29580
+ const basic_1 = __webpack_require__(/*! ../../types/basic */ "../core/build/src/abap/types/basic/index.js");
29581
+ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
29582
+ // A text symbol, 'text'(001), is a character literal of type C. Unlike a plain
29583
+ // literal it does not convert when passed to a method parameter typed STRING,
29584
+ // the system reports it as not type-compatible. Returns true if an issue was reported.
29585
+ function checkTextSymbol(source, parameterType, input) {
29586
+ if (source === undefined || !(parameterType instanceof basic_1.StringType)) {
29587
+ return false;
29588
+ }
29589
+ const children = source.getChildren();
29590
+ const constant = children.length === 1 ? source.findDirectExpression(Expressions.Constant) : undefined;
29591
+ if ((constant === null || constant === void 0 ? void 0 : constant.findDirectExpression(Expressions.TextElementString)) === undefined) {
29592
+ return false;
29593
+ }
29594
+ const message = `Text symbol "${source.concatTokens()}" is a character literal, not type-compatible with a STRING parameter`;
29595
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, source.getFirstToken(), message));
29596
+ return true;
29597
+ }
29598
+ //# sourceMappingURL=_check_text_symbol.js.map
29599
+
29600
+ /***/ },
29601
+
29534
29602
  /***/ "../core/build/src/abap/5_syntax/expressions/attribute_chain.js"
29535
29603
  /*!**********************************************************************!*\
29536
29604
  !*** ../core/build/src/abap/5_syntax/expressions/attribute_chain.js ***!
@@ -32908,6 +32976,7 @@ const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "../core/build/s
32908
32976
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
32909
32977
  const constant_1 = __webpack_require__(/*! ./constant */ "../core/build/src/abap/5_syntax/expressions/constant.js");
32910
32978
  const _check_offset_length_1 = __webpack_require__(/*! ./_check_offset_length */ "../core/build/src/abap/5_syntax/expressions/_check_offset_length.js");
32979
+ const _check_text_symbol_1 = __webpack_require__(/*! ./_check_text_symbol */ "../core/build/src/abap/5_syntax/expressions/_check_text_symbol.js");
32911
32980
  class MethodCallParam {
32912
32981
  static runSyntax(node, input, method) {
32913
32982
  if (!(node.get() instanceof Expressions.MethodCallParam)) {
@@ -32980,6 +33049,9 @@ class MethodCallParam {
32980
33049
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
32981
33050
  return;
32982
33051
  }
33052
+ else if ((0, _check_text_symbol_1.checkTextSymbol)(child, targetType, input)) {
33053
+ return;
33054
+ }
32983
33055
  else if (new _type_utils_1.TypeUtils(input.scope).isAssignableStrict(sourceType, targetType, child) === false) {
32984
33056
  const message = "Method parameter type not compatible";
32985
33057
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
@@ -33231,6 +33303,10 @@ const assert_error_1 = __webpack_require__(/*! ../assert_error */ "../core/build
33231
33303
  const field_chain_1 = __webpack_require__(/*! ./field_chain */ "../core/build/src/abap/5_syntax/expressions/field_chain.js");
33232
33304
  const _reference_1 = __webpack_require__(/*! ../_reference */ "../core/build/src/abap/5_syntax/_reference.js");
33233
33305
  const _check_offset_length_1 = __webpack_require__(/*! ./_check_offset_length */ "../core/build/src/abap/5_syntax/expressions/_check_offset_length.js");
33306
+ const _check_text_symbol_1 = __webpack_require__(/*! ./_check_text_symbol */ "../core/build/src/abap/5_syntax/expressions/_check_text_symbol.js");
33307
+ function normalizeParameterName(name) {
33308
+ return name.replace(/^!/, "").toUpperCase();
33309
+ }
33234
33310
  class MethodParameters {
33235
33311
  constructor() {
33236
33312
  this.requiredParameters = undefined;
@@ -33382,6 +33458,9 @@ class MethodParameters {
33382
33458
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33383
33459
  continue;
33384
33460
  }
33461
+ else if ((0, _check_text_symbol_1.checkTextSymbol)(item.source, parameter.getType(), input)) {
33462
+ return;
33463
+ }
33385
33464
  else if (new _type_utils_1.TypeUtils(input.scope).isAssignableStrict(item.sourceType, parameter.getType(), item.source) === false) {
33386
33465
  const message = "Method parameter type not compatible, " + item.name;
33387
33466
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
@@ -33414,7 +33493,7 @@ class MethodParameters {
33414
33493
  throw new assert_error_1.AssertError("parameterListS, unexpected node, child");
33415
33494
  }
33416
33495
  const nameNode = c.findDirectExpression(Expressions.ParameterName);
33417
- const name = nameNode === null || nameNode === void 0 ? void 0 : nameNode.getFirstToken().getStr().toUpperCase();
33496
+ const name = nameNode === undefined ? undefined : normalizeParameterName(nameNode.getFirstToken().getStr());
33418
33497
  if (name === undefined || nameNode === undefined) {
33419
33498
  throw new assert_error_1.AssertError("parameterListS, no name determined");
33420
33499
  }
@@ -33469,7 +33548,7 @@ class MethodParameters {
33469
33548
  throw new assert_error_1.AssertError("parameterListT, unexpected node, child");
33470
33549
  }
33471
33550
  const nameNode = c.findDirectExpression(Expressions.ParameterName);
33472
- const name = nameNode === null || nameNode === void 0 ? void 0 : nameNode.getFirstToken().getStr().toUpperCase();
33551
+ const name = nameNode === undefined ? undefined : normalizeParameterName(nameNode.getFirstToken().getStr());
33473
33552
  if (name === undefined || nameNode === undefined) {
33474
33553
  throw new assert_error_1.AssertError("parameterListT, no name determined");
33475
33554
  }
@@ -34400,6 +34479,13 @@ class Select {
34400
34479
  const intoTable = node.findDirectExpression(Expressions.SQLIntoTable);
34401
34480
  if (intoTable) {
34402
34481
  const inline = intoTable.findFirstExpression(Expressions.InlineData);
34482
+ if (inline
34483
+ && intoTable.findDirectTokenByText("INTO") !== undefined
34484
+ && intoTable.findDirectTokenByText("CORRESPONDING") !== undefined
34485
+ && !(0, version_1.releaseAtLeast)(input.scope.getRelease(), version_1.Release.v755)) {
34486
+ const message = "INTO CORRESPONDING FIELDS OF TABLE with an inline declaration requires 7.55";
34487
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
34488
+ }
34403
34489
  if (inline) {
34404
34490
  inline_data_1.InlineData.runSyntax(inline, input, this.buildTableType(fields, dbSources, input.scope, from));
34405
34491
  }
@@ -39481,7 +39567,7 @@ class Convert {
39481
39567
  if ((stampTarget === null || stampTarget === void 0 ? void 0 : stampTarget.get()) instanceof Expressions.Target) {
39482
39568
  const inline = stampTarget === null || stampTarget === void 0 ? void 0 : stampTarget.findDirectExpression(Expressions.InlineData);
39483
39569
  if (inline) {
39484
- inline_data_1.InlineData.runSyntax(inline, input, new basic_1.PackedType(8, 4));
39570
+ inline_data_1.InlineData.runSyntax(inline, input, new basic_1.PackedType(8, 0));
39485
39571
  }
39486
39572
  else {
39487
39573
  target_1.Target.runSyntax(stampTarget, input);
@@ -39562,6 +39648,9 @@ class CreateData {
39562
39648
  return;
39563
39649
  }
39564
39650
  }
39651
+ for (const s of node.findDirectExpressions(Expressions.SimpleSource3)) {
39652
+ source_1.Source.runSyntax(s, input);
39653
+ }
39565
39654
  for (const t of node.findDirectExpressions(Expressions.Target)) {
39566
39655
  target_1.Target.runSyntax(t, input);
39567
39656
  }
@@ -42863,14 +42952,21 @@ class Loop {
42863
42952
  // https://github.com/abap2xlsx/abap2xlsx/issues/1341
42864
42953
  const keyName = node.findExpressionAfterToken("KEY");
42865
42954
  let key = undefined;
42866
- if ((keyName === null || keyName === void 0 ? void 0 : keyName.get()) instanceof Expressions.SimpleName) {
42867
- // it might be dynamic, in that case we cannot check anything
42868
- key = (_b = topType.getOptions().secondary) === null || _b === void 0 ? void 0 : _b.find(k => k.name.toUpperCase() === keyName.getFirstToken().getStr().toUpperCase());
42955
+ const name = (keyName === null || keyName === void 0 ? void 0 : keyName.get()) instanceof Expressions.SimpleName ? keyName.getFirstToken().getStr().toUpperCase() : undefined;
42956
+ // it might be dynamic, in that case we cannot check anything; and
42957
+ // primary_key is the predefined name of the primary key every table has
42958
+ if (name !== undefined && name !== "PRIMARY_KEY") {
42959
+ key = (_b = topType.getOptions().secondary) === null || _b === void 0 ? void 0 : _b.find(k => k.name.toUpperCase() === name);
42869
42960
  if (key === undefined) {
42870
42961
  const message = "Key " + (keyName === null || keyName === void 0 ? void 0 : keyName.concatTokens()) + " not found in table type";
42871
42962
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
42872
42963
  return;
42873
42964
  }
42965
+ if (cond.findDirectTokenByText("OR") !== undefined) {
42966
+ const message = "Loop, secondary key requires an optimizable WHERE, top-level OR not allowed";
42967
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
42968
+ return;
42969
+ }
42874
42970
  if (!(0, version_1.releaseAtLeast)(input.scope.getRelease(), version_1.Release.v740sp02)) {
42875
42971
  const compares = cond.findAllExpressionsRecursive(Expressions.ComponentCompare).map(c => c.concatTokens().toUpperCase());
42876
42972
  for (const keyField of key.keyFields) {
@@ -43533,6 +43629,7 @@ const _type_utils_1 = __webpack_require__(/*! ../_type_utils */ "../core/build/s
43533
43629
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "../core/build/src/abap/5_syntax/_syntax_input.js");
43534
43630
  const dereference_1 = __webpack_require__(/*! ../expressions/dereference */ "../core/build/src/abap/5_syntax/expressions/dereference.js");
43535
43631
  const basic_1 = __webpack_require__(/*! ../../types/basic */ "../core/build/src/abap/types/basic/index.js");
43632
+ const nodes_1 = __webpack_require__(/*! ../../nodes */ "../core/build/src/abap/nodes/index.js");
43536
43633
  class Move {
43537
43634
  runSyntax(node, input) {
43538
43635
  const targets = node.findDirectExpressions(Expressions.Target);
@@ -43564,6 +43661,13 @@ class Move {
43564
43661
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
43565
43662
  return;
43566
43663
  }
43664
+ if (inline === undefined
43665
+ && node.findDirectTokenByText("=") !== undefined
43666
+ && Move.isRefInferIntoGenericFieldSymbol(targets, source, targetType)) {
43667
+ const message = "REF #( ) cannot infer a type from a generic target, use REF data( ) or a named type";
43668
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, source.getFirstToken(), message));
43669
+ return;
43670
+ }
43567
43671
  if (node.findDirectExpression(Expressions.Dereference)) {
43568
43672
  sourceType = dereference_1.Dereference.runSyntax(node, sourceType, input);
43569
43673
  }
@@ -43587,6 +43691,26 @@ class Move {
43587
43691
  return;
43588
43692
  }
43589
43693
  }
43694
+ /** target = REF #( ... ), with the single target being a field symbol typed "any" or "data",
43695
+ * the type of REF # is inferred from the target, which is generic */
43696
+ static isRefInferIntoGenericFieldSymbol(targets, source, targetType) {
43697
+ var _a;
43698
+ if (targets.length !== 1 || source === undefined) {
43699
+ return false;
43700
+ }
43701
+ else if (!(targetType instanceof basic_1.AnyType) && !(targetType instanceof basic_1.DataType)) {
43702
+ return false;
43703
+ }
43704
+ const targetChildren = targets[0].getChildren();
43705
+ if (targetChildren.length !== 1 || !(targetChildren[0].get() instanceof Expressions.TargetFieldSymbol)) {
43706
+ return false;
43707
+ }
43708
+ const first = source.getFirstChild();
43709
+ if (!(first instanceof nodes_1.TokenNode) || first.getFirstToken().getStr().toUpperCase() !== "REF") {
43710
+ return false;
43711
+ }
43712
+ return ((_a = source.findDirectExpression(Expressions.TypeNameOrInfer)) === null || _a === void 0 ? void 0 : _a.concatTokens()) === "#";
43713
+ }
43590
43714
  }
43591
43715
  exports.Move = Move;
43592
43716
  //# sourceMappingURL=move.js.map
@@ -49228,38 +49352,45 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
49228
49352
  exports.ArtifactsABAP = void 0;
49229
49353
  const Statements = __importStar(__webpack_require__(/*! ./2_statements/statements */ "../core/build/src/abap/2_statements/statements/index.js"));
49230
49354
  const Expressions = __importStar(__webpack_require__(/*! ./2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
49231
- const combi_1 = __webpack_require__(/*! ./2_statements/combi */ "../core/build/src/abap/2_statements/combi.js");
49232
49355
  const Structures = __importStar(__webpack_require__(/*! ./3_structures/structures */ "../core/build/src/abap/3_structures/structures/index.js"));
49356
+ /*
49233
49357
  class List {
49234
- constructor() {
49235
- this.words = [];
49236
- }
49237
- add(keywords, source) {
49238
- for (const w of keywords) {
49239
- const index = this.find(w);
49240
- if (index >= 0) {
49241
- this.words[index].source.push(source);
49242
- }
49243
- else {
49244
- this.words.push({ word: w, source: [source] });
49245
- }
49246
- }
49247
- }
49248
- get() {
49249
- return this.words;
49358
+ private readonly words: IKeyword[];
49359
+
49360
+ public constructor() {
49361
+ this.words = [];
49362
+ }
49363
+
49364
+ public add(keywords: string[], source: string): void {
49365
+ for (const w of keywords) {
49366
+ const index = this.find(w);
49367
+ if (index >= 0) {
49368
+ this.words[index].source.push(source);
49369
+ } else {
49370
+ this.words.push({word: w, source: [source]});
49371
+ }
49250
49372
  }
49251
- find(keyword) {
49252
- for (let i = 0; i < this.words.length; i++) {
49253
- if (this.words[i].word === keyword) {
49254
- return i;
49255
- }
49256
- }
49257
- return -1;
49373
+ }
49374
+
49375
+ public get(): IKeyword[] {
49376
+ return this.words;
49377
+ }
49378
+
49379
+ private find(keyword: string): number {
49380
+ for (let i = 0; i < this.words.length; i++) {
49381
+ if (this.words[i].word === keyword) {
49382
+ return i;
49383
+ }
49258
49384
  }
49385
+ return -1;
49386
+ }
49259
49387
  }
49260
- function className(cla) {
49261
- return cla.constructor.name;
49388
+
49389
+
49390
+ function className(cla: any) {
49391
+ return cla.constructor.name;
49262
49392
  }
49393
+ */
49263
49394
  class ArtifactsABAP {
49264
49395
  static getStructures() {
49265
49396
  const ret = [];
@@ -49291,16 +49422,6 @@ class ArtifactsABAP {
49291
49422
  }
49292
49423
  return ret;
49293
49424
  }
49294
- static getKeywords() {
49295
- const list = new List();
49296
- for (const stat of this.getStatements()) {
49297
- list.add(combi_1.Combi.listKeywords(stat.getMatcher()), "statement_" + className(stat));
49298
- }
49299
- for (const expr of this.getExpressions()) {
49300
- list.add(combi_1.Combi.listKeywords(new expr().getRunnable()), "expression_" + className(expr));
49301
- }
49302
- return list.get();
49303
- }
49304
49425
  }
49305
49426
  exports.ArtifactsABAP = ArtifactsABAP;
49306
49427
  //# sourceMappingURL=artifacts.js.map
@@ -50798,6 +50919,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
50798
50919
  exports.DataReference = void 0;
50799
50920
  const _abstract_type_1 = __webpack_require__(/*! ./_abstract_type */ "../core/build/src/abap/types/basic/_abstract_type.js");
50800
50921
  const any_type_1 = __webpack_require__(/*! ./any_type */ "../core/build/src/abap/types/basic/any_type.js");
50922
+ const table_type_1 = __webpack_require__(/*! ./table_type */ "../core/build/src/abap/types/basic/table_type.js");
50801
50923
  class DataReference extends _abstract_type_1.AbstractType {
50802
50924
  constructor(type, qualifiedName) {
50803
50925
  super({ qualifiedName: qualifiedName });
@@ -50820,6 +50942,10 @@ class DataReference extends _abstract_type_1.AbstractType {
50820
50942
  if (this.type instanceof any_type_1.AnyType) {
50821
50943
  return true;
50822
50944
  }
50945
+ // LIKE REF TO a generic table, eg. a field symbol TYPE STANDARD TABLE
50946
+ if (this.type instanceof table_type_1.TableType && this.type.isGeneric()) {
50947
+ return true;
50948
+ }
50823
50949
  return false;
50824
50950
  }
50825
50951
  containsVoid() {
@@ -61173,6 +61299,9 @@ class AbstractObject {
61173
61299
  this.old = [];
61174
61300
  this.dirty = false;
61175
61301
  }
61302
+ getDescription() {
61303
+ return undefined;
61304
+ }
61176
61305
  getParsingIssues() {
61177
61306
  return this.old;
61178
61307
  }
@@ -61363,9 +61492,6 @@ class UnknownObject extends _abstract_object_1.AbstractObject {
61363
61492
  allowNamespace: true,
61364
61493
  };
61365
61494
  }
61366
- getDescription() {
61367
- return undefined;
61368
- }
61369
61495
  getParsingIssues() {
61370
61496
  const pos = new position_1.Position(1, 1);
61371
61497
  const file = this.getFiles()[0];
@@ -61400,10 +61526,6 @@ class ABAPQueryFunctionalArea extends _abstract_object_1.AbstractObject {
61400
61526
  allowNamespace: true,
61401
61527
  };
61402
61528
  }
61403
- getDescription() {
61404
- // todo
61405
- return undefined;
61406
- }
61407
61529
  }
61408
61530
  exports.ABAPQueryFunctionalArea = ABAPQueryFunctionalArea;
61409
61531
  //# sourceMappingURL=abap_query_functional_area.js.map
@@ -61431,10 +61553,6 @@ class ABAPQueryQuery extends _abstract_object_1.AbstractObject {
61431
61553
  allowNamespace: true,
61432
61554
  };
61433
61555
  }
61434
- getDescription() {
61435
- // todo
61436
- return undefined;
61437
- }
61438
61556
  }
61439
61557
  exports.ABAPQueryQuery = ABAPQueryQuery;
61440
61558
  //# sourceMappingURL=abap_query_query.js.map
@@ -61462,10 +61580,6 @@ class ActivationVariant extends _abstract_object_1.AbstractObject {
61462
61580
  allowNamespace: true,
61463
61581
  };
61464
61582
  }
61465
- getDescription() {
61466
- // todo
61467
- return undefined;
61468
- }
61469
61583
  }
61470
61584
  exports.ActivationVariant = ActivationVariant;
61471
61585
  //# sourceMappingURL=activation_variant.js.map
@@ -61493,10 +61607,6 @@ class APIReleaseState extends _abstract_object_1.AbstractObject {
61493
61607
  allowNamespace: true,
61494
61608
  };
61495
61609
  }
61496
- getDescription() {
61497
- // todo
61498
- return undefined;
61499
- }
61500
61610
  }
61501
61611
  exports.APIReleaseState = APIReleaseState;
61502
61612
  //# sourceMappingURL=api_release_state.js.map
@@ -61524,10 +61634,6 @@ class ApplicationDescriptorsFiori extends _abstract_object_1.AbstractObject {
61524
61634
  allowNamespace: true,
61525
61635
  };
61526
61636
  }
61527
- getDescription() {
61528
- // todo
61529
- return undefined;
61530
- }
61531
61637
  }
61532
61638
  exports.ApplicationDescriptorsFiori = ApplicationDescriptorsFiori;
61533
61639
  //# sourceMappingURL=application_descriptors_fiori.js.map
@@ -61555,10 +61661,6 @@ class ApplicationJobCatalogEntry extends _abstract_object_1.AbstractObject {
61555
61661
  allowNamespace: true,
61556
61662
  };
61557
61663
  }
61558
- getDescription() {
61559
- // todo
61560
- return undefined;
61561
- }
61562
61664
  }
61563
61665
  exports.ApplicationJobCatalogEntry = ApplicationJobCatalogEntry;
61564
61666
  //# sourceMappingURL=application_job_catalog_entry.js.map
@@ -61586,10 +61688,6 @@ class ApplicationJobTemplate extends _abstract_object_1.AbstractObject {
61586
61688
  allowNamespace: true,
61587
61689
  };
61588
61690
  }
61589
- getDescription() {
61590
- // todo
61591
- return undefined;
61592
- }
61593
61691
  }
61594
61692
  exports.ApplicationJobTemplate = ApplicationJobTemplate;
61595
61693
  //# sourceMappingURL=application_job_template.js.map
@@ -61617,10 +61715,6 @@ class ApplicationLogObject extends _abstract_object_1.AbstractObject {
61617
61715
  allowNamespace: true,
61618
61716
  };
61619
61717
  }
61620
- getDescription() {
61621
- // todo
61622
- return undefined;
61623
- }
61624
61718
  }
61625
61719
  exports.ApplicationLogObject = ApplicationLogObject;
61626
61720
  //# sourceMappingURL=application_log_object.js.map
@@ -61648,10 +61742,6 @@ class AssignmentServiceToAuthorizationGroup extends _abstract_object_1.AbstractO
61648
61742
  allowNamespace: true,
61649
61743
  };
61650
61744
  }
61651
- getDescription() {
61652
- // todo
61653
- return undefined;
61654
- }
61655
61745
  }
61656
61746
  exports.AssignmentServiceToAuthorizationGroup = AssignmentServiceToAuthorizationGroup;
61657
61747
  //# sourceMappingURL=assignment_service_to_authorization_group.js.map
@@ -61679,10 +61769,6 @@ class ATCCheckCategory extends _abstract_object_1.AbstractObject {
61679
61769
  allowNamespace: true,
61680
61770
  };
61681
61771
  }
61682
- getDescription() {
61683
- // todo
61684
- return undefined;
61685
- }
61686
61772
  }
61687
61773
  exports.ATCCheckCategory = ATCCheckCategory;
61688
61774
  //# sourceMappingURL=atc_check_category.js.map
@@ -61710,10 +61796,6 @@ class ATCCheckObject extends _abstract_object_1.AbstractObject {
61710
61796
  allowNamespace: true,
61711
61797
  };
61712
61798
  }
61713
- getDescription() {
61714
- // todo
61715
- return undefined;
61716
- }
61717
61799
  }
61718
61800
  exports.ATCCheckObject = ATCCheckObject;
61719
61801
  //# sourceMappingURL=atc_check_object.js.map
@@ -61741,10 +61823,6 @@ class ATCCheckVariant extends _abstract_object_1.AbstractObject {
61741
61823
  allowNamespace: true,
61742
61824
  };
61743
61825
  }
61744
- getDescription() {
61745
- // todo
61746
- return undefined;
61747
- }
61748
61826
  }
61749
61827
  exports.ATCCheckVariant = ATCCheckVariant;
61750
61828
  //# sourceMappingURL=atc_check_variant.js.map
@@ -61778,10 +61856,6 @@ class AuthorizationCheckField extends _abstract_object_1.AbstractObject {
61778
61856
  this.parsedXML = undefined;
61779
61857
  super.setDirty();
61780
61858
  }
61781
- getDescription() {
61782
- // todo
61783
- return undefined;
61784
- }
61785
61859
  getDataElementName() {
61786
61860
  var _a;
61787
61861
  this.parse();
@@ -61854,10 +61928,6 @@ class AuthorizationGroup extends _abstract_object_1.AbstractObject {
61854
61928
  allowNamespace: true,
61855
61929
  };
61856
61930
  }
61857
- getDescription() {
61858
- // todo
61859
- return undefined;
61860
- }
61861
61931
  }
61862
61932
  exports.AuthorizationGroup = AuthorizationGroup;
61863
61933
  //# sourceMappingURL=authorization_group.js.map
@@ -61885,10 +61955,6 @@ class AuthorizationObject extends _abstract_object_1.AbstractObject {
61885
61955
  allowNamespace: true,
61886
61956
  };
61887
61957
  }
61888
- getDescription() {
61889
- // todo
61890
- return undefined;
61891
- }
61892
61958
  }
61893
61959
  exports.AuthorizationObject = AuthorizationObject;
61894
61960
  //# sourceMappingURL=authorization_object.js.map
@@ -61916,10 +61982,6 @@ class AuthorizationObjectClass extends _abstract_object_1.AbstractObject {
61916
61982
  allowNamespace: false,
61917
61983
  };
61918
61984
  }
61919
- getDescription() {
61920
- // todo
61921
- return undefined;
61922
- }
61923
61985
  }
61924
61986
  exports.AuthorizationObjectClass = AuthorizationObjectClass;
61925
61987
  //# sourceMappingURL=authorization_object_class.js.map
@@ -61947,10 +62009,6 @@ class AuthorizationObjectExtension extends _abstract_object_1.AbstractObject {
61947
62009
  allowNamespace: true,
61948
62010
  };
61949
62011
  }
61950
- getDescription() {
61951
- // todo
61952
- return undefined;
61953
- }
61954
62012
  }
61955
62013
  exports.AuthorizationObjectExtension = AuthorizationObjectExtension;
61956
62014
  //# sourceMappingURL=authorization_object_extension.js.map
@@ -61978,10 +62036,6 @@ class BADIDefinition extends _abstract_object_1.AbstractObject {
61978
62036
  allowNamespace: true,
61979
62037
  };
61980
62038
  }
61981
- getDescription() {
61982
- // todo
61983
- return undefined;
61984
- }
61985
62039
  }
61986
62040
  exports.BADIDefinition = BADIDefinition;
61987
62041
  //# sourceMappingURL=badi_definition.js.map
@@ -62013,10 +62067,6 @@ class BehaviorDefinition extends _abstract_object_1.AbstractObject {
62013
62067
  allowNamespace: true,
62014
62068
  };
62015
62069
  }
62016
- getDescription() {
62017
- // todo
62018
- return undefined;
62019
- }
62020
62070
  setDirty() {
62021
62071
  this.parsedData = undefined;
62022
62072
  super.setDirty();
@@ -62087,10 +62137,6 @@ class BRFPlusSystemApplication extends _abstract_object_1.AbstractObject {
62087
62137
  allowNamespace: true,
62088
62138
  };
62089
62139
  }
62090
- getDescription() {
62091
- // todo
62092
- return undefined;
62093
- }
62094
62140
  }
62095
62141
  exports.BRFPlusSystemApplication = BRFPlusSystemApplication;
62096
62142
  //# sourceMappingURL=brf_plus_system_application.js.map
@@ -62118,10 +62164,6 @@ class BSPApplication extends _abstract_object_1.AbstractObject {
62118
62164
  allowNamespace: true,
62119
62165
  };
62120
62166
  }
62121
- getDescription() {
62122
- // todo
62123
- return undefined;
62124
- }
62125
62167
  }
62126
62168
  exports.BSPApplication = BSPApplication;
62127
62169
  //# sourceMappingURL=bsp_application.js.map
@@ -62149,10 +62191,6 @@ class BusinessAddInImplementation extends _abstract_object_1.AbstractObject {
62149
62191
  allowNamespace: true,
62150
62192
  };
62151
62193
  }
62152
- getDescription() {
62153
- // todo
62154
- return undefined;
62155
- }
62156
62194
  }
62157
62195
  exports.BusinessAddInImplementation = BusinessAddInImplementation;
62158
62196
  //# sourceMappingURL=business_add_in_implementation.js.map
@@ -62180,10 +62218,6 @@ class BusinessCatalog extends _abstract_object_1.AbstractObject {
62180
62218
  allowNamespace: true,
62181
62219
  };
62182
62220
  }
62183
- getDescription() {
62184
- // todo
62185
- return undefined;
62186
- }
62187
62221
  }
62188
62222
  exports.BusinessCatalog = BusinessCatalog;
62189
62223
  //# sourceMappingURL=business_catalog.js.map
@@ -62211,10 +62245,6 @@ class BusinessCatalogAppAssignment extends _abstract_object_1.AbstractObject {
62211
62245
  allowNamespace: true,
62212
62246
  };
62213
62247
  }
62214
- getDescription() {
62215
- // todo
62216
- return undefined;
62217
- }
62218
62248
  }
62219
62249
  exports.BusinessCatalogAppAssignment = BusinessCatalogAppAssignment;
62220
62250
  //# sourceMappingURL=business_catalog_app_assignment.js.map
@@ -62242,10 +62272,6 @@ class BusinessConfigurationMaintenanceObject extends _abstract_object_1.Abstract
62242
62272
  allowNamespace: true,
62243
62273
  };
62244
62274
  }
62245
- getDescription() {
62246
- // todo
62247
- return undefined;
62248
- }
62249
62275
  }
62250
62276
  exports.BusinessConfigurationMaintenanceObject = BusinessConfigurationMaintenanceObject;
62251
62277
  //# sourceMappingURL=business_configuration_maintenance_object.js.map
@@ -62273,10 +62299,6 @@ class BusinessConfigurationSet extends _abstract_object_1.AbstractObject {
62273
62299
  allowNamespace: true,
62274
62300
  };
62275
62301
  }
62276
- getDescription() {
62277
- // todo
62278
- return undefined;
62279
- }
62280
62302
  }
62281
62303
  exports.BusinessConfigurationSet = BusinessConfigurationSet;
62282
62304
  //# sourceMappingURL=business_configuration_set.js.map
@@ -62304,10 +62326,6 @@ class BusinessFunctionAssignment extends _abstract_object_1.AbstractObject {
62304
62326
  allowNamespace: true,
62305
62327
  };
62306
62328
  }
62307
- getDescription() {
62308
- // todo
62309
- return undefined;
62310
- }
62311
62329
  }
62312
62330
  exports.BusinessFunctionAssignment = BusinessFunctionAssignment;
62313
62331
  //# sourceMappingURL=business_function_assignment.js.map
@@ -62335,10 +62353,6 @@ class BusinessFunctionSetAssignment extends _abstract_object_1.AbstractObject {
62335
62353
  allowNamespace: true,
62336
62354
  };
62337
62355
  }
62338
- getDescription() {
62339
- // todo
62340
- return undefined;
62341
- }
62342
62356
  }
62343
62357
  exports.BusinessFunctionSetAssignment = BusinessFunctionSetAssignment;
62344
62358
  //# sourceMappingURL=business_function_set_assignment.js.map
@@ -62366,10 +62380,6 @@ class BusinessObjectModel extends _abstract_object_1.AbstractObject {
62366
62380
  allowNamespace: true,
62367
62381
  };
62368
62382
  }
62369
- getDescription() {
62370
- // todo
62371
- return undefined;
62372
- }
62373
62383
  }
62374
62384
  exports.BusinessObjectModel = BusinessObjectModel;
62375
62385
  //# sourceMappingURL=business_object_model.js.map
@@ -62397,10 +62407,6 @@ class BusinessObjectType extends _abstract_object_1.AbstractObject {
62397
62407
  allowNamespace: true,
62398
62408
  };
62399
62409
  }
62400
- getDescription() {
62401
- // todo
62402
- return undefined;
62403
- }
62404
62410
  }
62405
62411
  exports.BusinessObjectType = BusinessObjectType;
62406
62412
  //# sourceMappingURL=business_object_type.js.map
@@ -62428,10 +62434,6 @@ class CDSEntityBuffer extends _abstract_object_1.AbstractObject {
62428
62434
  allowNamespace: true,
62429
62435
  };
62430
62436
  }
62431
- getDescription() {
62432
- // todo
62433
- return undefined;
62434
- }
62435
62437
  }
62436
62438
  exports.CDSEntityBuffer = CDSEntityBuffer;
62437
62439
  //# sourceMappingURL=cds_entity_buffer.js.map
@@ -62465,6 +62467,11 @@ class CDSMetadataExtension extends _abstract_object_1.AbstractObject {
62465
62467
  allowNamespace: true,
62466
62468
  };
62467
62469
  }
62470
+ setDirty() {
62471
+ this.parsedData = undefined;
62472
+ this.parserError = undefined;
62473
+ super.setDirty();
62474
+ }
62468
62475
  hasParserError() {
62469
62476
  return this.parserError;
62470
62477
  }
@@ -62483,10 +62490,6 @@ class CDSMetadataExtension extends _abstract_object_1.AbstractObject {
62483
62490
  this.dirty = false;
62484
62491
  return { updated: true, runtime: Date.now() - start };
62485
62492
  }
62486
- getDescription() {
62487
- // todo
62488
- return undefined;
62489
- }
62490
62493
  findSourceFile() {
62491
62494
  return this.getFiles().find(f => f.getFilename().endsWith(".asddlxs") || f.getFilename().endsWith(".acds"));
62492
62495
  }
@@ -62517,10 +62520,6 @@ class CDSType extends _abstract_object_1.AbstractObject {
62517
62520
  allowNamespace: true,
62518
62521
  };
62519
62522
  }
62520
- getDescription() {
62521
- // todo
62522
- return undefined;
62523
- }
62524
62523
  }
62525
62524
  exports.CDSType = CDSType;
62526
62525
  //# sourceMappingURL=cds_type.js.map
@@ -62548,10 +62547,6 @@ class ChangeDocument extends _abstract_object_1.AbstractObject {
62548
62547
  allowNamespace: true,
62549
62548
  };
62550
62549
  }
62551
- getDescription() {
62552
- // todo
62553
- return undefined;
62554
- }
62555
62550
  }
62556
62551
  exports.ChangeDocument = ChangeDocument;
62557
62552
  //# sourceMappingURL=change_document.js.map
@@ -62579,10 +62574,6 @@ class ChapterOfBookStructure extends _abstract_object_1.AbstractObject {
62579
62574
  allowNamespace: true,
62580
62575
  };
62581
62576
  }
62582
- getDescription() {
62583
- // todo
62584
- return undefined;
62585
- }
62586
62577
  }
62587
62578
  exports.ChapterOfBookStructure = ChapterOfBookStructure;
62588
62579
  //# sourceMappingURL=chapter_of_book_structure.js.map
@@ -62610,10 +62601,6 @@ class CheckpointGroup extends _abstract_object_1.AbstractObject {
62610
62601
  allowNamespace: true,
62611
62602
  };
62612
62603
  }
62613
- getDescription() {
62614
- // todo
62615
- return undefined;
62616
- }
62617
62604
  }
62618
62605
  exports.CheckpointGroup = CheckpointGroup;
62619
62606
  //# sourceMappingURL=checkpoint_group.js.map
@@ -62761,10 +62748,6 @@ class Classification extends _abstract_object_1.AbstractObject {
62761
62748
  allowNamespace: true,
62762
62749
  };
62763
62750
  }
62764
- getDescription() {
62765
- // todo
62766
- return undefined;
62767
- }
62768
62751
  }
62769
62752
  exports.Classification = Classification;
62770
62753
  //# sourceMappingURL=classification.js.map
@@ -62792,10 +62775,6 @@ class CommunicationScenario extends _abstract_object_1.AbstractObject {
62792
62775
  allowNamespace: true,
62793
62776
  };
62794
62777
  }
62795
- getDescription() {
62796
- // todo
62797
- return undefined;
62798
- }
62799
62778
  }
62800
62779
  exports.CommunicationScenario = CommunicationScenario;
62801
62780
  //# sourceMappingURL=communication_scenario.js.map
@@ -62823,10 +62802,6 @@ class CompositeEnhancementImplementation extends _abstract_object_1.AbstractObje
62823
62802
  allowNamespace: true,
62824
62803
  };
62825
62804
  }
62826
- getDescription() {
62827
- // todo
62828
- return undefined;
62829
- }
62830
62805
  }
62831
62806
  exports.CompositeEnhancementImplementation = CompositeEnhancementImplementation;
62832
62807
  //# sourceMappingURL=composite_enhancement_implementation.js.map
@@ -62854,10 +62829,6 @@ class CompositeEnhancementSpot extends _abstract_object_1.AbstractObject {
62854
62829
  allowNamespace: true,
62855
62830
  };
62856
62831
  }
62857
- getDescription() {
62858
- // todo
62859
- return undefined;
62860
- }
62861
62832
  }
62862
62833
  exports.CompositeEnhancementSpot = CompositeEnhancementSpot;
62863
62834
  //# sourceMappingURL=composite_enhancement_spot.js.map
@@ -62886,10 +62857,6 @@ class ConceptsOfPackage extends _abstract_object_1.AbstractObject {
62886
62857
  customRegex: new RegExp(/^(\/[A-Z_\d]{3,8}\/)?[A-Z_-\d<> ]+$/i),
62887
62858
  };
62888
62859
  }
62889
- getDescription() {
62890
- // todo
62891
- return undefined;
62892
- }
62893
62860
  }
62894
62861
  exports.ConceptsOfPackage = ConceptsOfPackage;
62895
62862
  //# sourceMappingURL=concepts_of_package.js.map
@@ -62917,10 +62884,6 @@ class CustomDataBrowserObject extends _abstract_object_1.AbstractObject {
62917
62884
  allowNamespace: true,
62918
62885
  };
62919
62886
  }
62920
- getDescription() {
62921
- // todo
62922
- return undefined;
62923
- }
62924
62887
  }
62925
62888
  exports.CustomDataBrowserObject = CustomDataBrowserObject;
62926
62889
  //# sourceMappingURL=custom_data_browser_object.js.map
@@ -62948,10 +62911,6 @@ class CustomerEnhancementProject extends _abstract_object_1.AbstractObject {
62948
62911
  allowNamespace: true,
62949
62912
  };
62950
62913
  }
62951
- getDescription() {
62952
- // todo
62953
- return undefined;
62954
- }
62955
62914
  }
62956
62915
  exports.CustomerEnhancementProject = CustomerEnhancementProject;
62957
62916
  //# sourceMappingURL=customer_enhancement_project.js.map
@@ -62979,10 +62938,6 @@ class CustomizingAttributes extends _abstract_object_1.AbstractObject {
62979
62938
  allowNamespace: true,
62980
62939
  };
62981
62940
  }
62982
- getDescription() {
62983
- // todo
62984
- return undefined;
62985
- }
62986
62941
  }
62987
62942
  exports.CustomizingAttributes = CustomizingAttributes;
62988
62943
  //# sourceMappingURL=customizing_attributes.js.map
@@ -63010,10 +62965,6 @@ class CustomizingImgActivity extends _abstract_object_1.AbstractObject {
63010
62965
  allowNamespace: true,
63011
62966
  };
63012
62967
  }
63013
- getDescription() {
63014
- // todo
63015
- return undefined;
63016
- }
63017
62968
  }
63018
62969
  exports.CustomizingImgActivity = CustomizingImgActivity;
63019
62970
  //# sourceMappingURL=customizing_img_activity.js.map
@@ -63041,10 +62992,6 @@ class CustomizingTransaction extends _abstract_object_1.AbstractObject {
63041
62992
  allowNamespace: true,
63042
62993
  };
63043
62994
  }
63044
- getDescription() {
63045
- // todo
63046
- return undefined;
63047
- }
63048
62995
  }
63049
62996
  exports.CustomizingTransaction = CustomizingTransaction;
63050
62997
  //# sourceMappingURL=customizing_transaction.js.map
@@ -63072,10 +63019,6 @@ class DataControl extends _abstract_object_1.AbstractObject {
63072
63019
  allowNamespace: true,
63073
63020
  };
63074
63021
  }
63075
- getDescription() {
63076
- // todo
63077
- return undefined;
63078
- }
63079
63022
  }
63080
63023
  exports.DataControl = DataControl;
63081
63024
  //# sourceMappingURL=data_control.js.map
@@ -63644,10 +63587,6 @@ class DatastoreObject extends _abstract_object_1.AbstractObject {
63644
63587
  allowNamespace: true,
63645
63588
  };
63646
63589
  }
63647
- getDescription() {
63648
- // todo
63649
- return undefined;
63650
- }
63651
63590
  }
63652
63591
  exports.DatastoreObject = DatastoreObject;
63653
63592
  //# sourceMappingURL=datastore_object.js.map
@@ -63675,10 +63614,6 @@ class DialogModule extends _abstract_object_1.AbstractObject {
63675
63614
  allowNamespace: true,
63676
63615
  };
63677
63616
  }
63678
- getDescription() {
63679
- // todo
63680
- return undefined;
63681
- }
63682
63617
  }
63683
63618
  exports.DialogModule = DialogModule;
63684
63619
  //# sourceMappingURL=dialog_module.js.map
@@ -63706,10 +63641,6 @@ class Documentation extends _abstract_object_1.AbstractObject {
63706
63641
  allowNamespace: true,
63707
63642
  };
63708
63643
  }
63709
- getDescription() {
63710
- // todo
63711
- return undefined;
63712
- }
63713
63644
  }
63714
63645
  exports.Documentation = Documentation;
63715
63646
  //# sourceMappingURL=documentation.js.map
@@ -63913,11 +63844,13 @@ class Domain extends _abstract_object_1.AbstractObject {
63913
63844
  getFixedValues() {
63914
63845
  var _a;
63915
63846
  var _b;
63847
+ this.parse();
63916
63848
  return (_b = (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : [];
63917
63849
  }
63918
63850
  getFixedValuesTranslations() {
63919
63851
  var _a;
63920
63852
  var _b;
63853
+ this.parse();
63921
63854
  return (_b = (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.valuesTranslations) !== null && _b !== void 0 ? _b : [];
63922
63855
  }
63923
63856
  getAFFFile() {
@@ -63950,10 +63883,6 @@ class EcattTestConfiguration extends _abstract_object_1.AbstractObject {
63950
63883
  allowNamespace: true,
63951
63884
  };
63952
63885
  }
63953
- getDescription() {
63954
- // todo
63955
- return undefined;
63956
- }
63957
63886
  }
63958
63887
  exports.EcattTestConfiguration = EcattTestConfiguration;
63959
63888
  //# sourceMappingURL=ecatt_test_configuration.js.map
@@ -63981,10 +63910,6 @@ class EcattTestDataContainer extends _abstract_object_1.AbstractObject {
63981
63910
  allowNamespace: true,
63982
63911
  };
63983
63912
  }
63984
- getDescription() {
63985
- // todo
63986
- return undefined;
63987
- }
63988
63913
  }
63989
63914
  exports.EcattTestDataContainer = EcattTestDataContainer;
63990
63915
  //# sourceMappingURL=ecatt_test_data_container.js.map
@@ -64012,10 +63937,6 @@ class EcattTestScript extends _abstract_object_1.AbstractObject {
64012
63937
  allowNamespace: true,
64013
63938
  };
64014
63939
  }
64015
- getDescription() {
64016
- // todo
64017
- return undefined;
64018
- }
64019
63940
  }
64020
63941
  exports.EcattTestScript = EcattTestScript;
64021
63942
  //# sourceMappingURL=ecatt_test_script.js.map
@@ -64043,10 +63964,6 @@ class EmailTemplate extends _abstract_object_1.AbstractObject {
64043
63964
  allowNamespace: true,
64044
63965
  };
64045
63966
  }
64046
- getDescription() {
64047
- // todo
64048
- return undefined;
64049
- }
64050
63967
  }
64051
63968
  exports.EmailTemplate = EmailTemplate;
64052
63969
  //# sourceMappingURL=email_template.js.map
@@ -64128,10 +64045,6 @@ class EnhancementSpot extends _abstract_object_1.AbstractObject {
64128
64045
  getType() {
64129
64046
  return "ENHS";
64130
64047
  }
64131
- getDescription() {
64132
- // todo
64133
- return undefined;
64134
- }
64135
64048
  getAllowedNaming() {
64136
64049
  return {
64137
64050
  maxLength: 30,
@@ -64191,10 +64104,6 @@ class EntityType extends _abstract_object_1.AbstractObject {
64191
64104
  allowNamespace: true,
64192
64105
  };
64193
64106
  }
64194
- getDescription() {
64195
- // todo
64196
- return undefined;
64197
- }
64198
64107
  }
64199
64108
  exports.EntityType = EntityType;
64200
64109
  //# sourceMappingURL=entity_type.js.map
@@ -64222,10 +64131,6 @@ class EventBinding extends _abstract_object_1.AbstractObject {
64222
64131
  allowNamespace: true,
64223
64132
  };
64224
64133
  }
64225
- getDescription() {
64226
- // todo
64227
- return undefined;
64228
- }
64229
64134
  }
64230
64135
  exports.EventBinding = EventBinding;
64231
64136
  //# sourceMappingURL=event_binding.js.map
@@ -64253,10 +64158,6 @@ class EventConsumer extends _abstract_object_1.AbstractObject {
64253
64158
  allowNamespace: true,
64254
64159
  };
64255
64160
  }
64256
- getDescription() {
64257
- // todo
64258
- return undefined;
64259
- }
64260
64161
  }
64261
64162
  exports.EventConsumer = EventConsumer;
64262
64163
  //# sourceMappingURL=event_consumer.js.map
@@ -64348,10 +64249,6 @@ class FieldCatalog extends _abstract_object_1.AbstractObject {
64348
64249
  allowNamespace: true,
64349
64250
  };
64350
64251
  }
64351
- getDescription() {
64352
- // todo
64353
- return undefined;
64354
- }
64355
64252
  }
64356
64253
  exports.FieldCatalog = FieldCatalog;
64357
64254
  //# sourceMappingURL=field_catalog.js.map
@@ -64379,10 +64276,6 @@ class FormObjectForm extends _abstract_object_1.AbstractObject {
64379
64276
  allowNamespace: true,
64380
64277
  };
64381
64278
  }
64382
- getDescription() {
64383
- // todo
64384
- return undefined;
64385
- }
64386
64279
  }
64387
64280
  exports.FormObjectForm = FormObjectForm;
64388
64281
  //# sourceMappingURL=form_object_form.js.map
@@ -64410,10 +64303,6 @@ class FormObjectInterface extends _abstract_object_1.AbstractObject {
64410
64303
  allowNamespace: true,
64411
64304
  };
64412
64305
  }
64413
- getDescription() {
64414
- // todo
64415
- return undefined;
64416
- }
64417
64306
  }
64418
64307
  exports.FormObjectInterface = FormObjectInterface;
64419
64308
  //# sourceMappingURL=form_object_interface.js.map
@@ -64441,10 +64330,6 @@ class FormatType extends _abstract_object_1.AbstractObject {
64441
64330
  allowNamespace: true,
64442
64331
  };
64443
64332
  }
64444
- getDescription() {
64445
- // todo
64446
- return undefined;
64447
- }
64448
64333
  }
64449
64334
  exports.FormatType = FormatType;
64450
64335
  //# sourceMappingURL=format_type.js.map
@@ -64677,10 +64562,6 @@ class GatewayModel extends _abstract_object_1.AbstractObject {
64677
64562
  allowNamespace: true,
64678
64563
  };
64679
64564
  }
64680
- getDescription() {
64681
- // todo
64682
- return undefined;
64683
- }
64684
64565
  }
64685
64566
  exports.GatewayModel = GatewayModel;
64686
64567
  //# sourceMappingURL=gateway_model.js.map
@@ -64708,10 +64589,6 @@ class GatewayModelMetadata extends _abstract_object_1.AbstractObject {
64708
64589
  allowNamespace: true,
64709
64590
  };
64710
64591
  }
64711
- getDescription() {
64712
- // todo
64713
- return undefined;
64714
- }
64715
64592
  }
64716
64593
  exports.GatewayModelMetadata = GatewayModelMetadata;
64717
64594
  //# sourceMappingURL=gateway_model_metadata.js.map
@@ -64739,10 +64616,6 @@ class GatewayODataGroupAndAssignment extends _abstract_object_1.AbstractObject {
64739
64616
  allowNamespace: true,
64740
64617
  };
64741
64618
  }
64742
- getDescription() {
64743
- // todo
64744
- return undefined;
64745
- }
64746
64619
  }
64747
64620
  exports.GatewayODataGroupAndAssignment = GatewayODataGroupAndAssignment;
64748
64621
  //# sourceMappingURL=gateway_odata_group_and_assignment.js.map
@@ -64770,10 +64643,6 @@ class GatewayProject extends _abstract_object_1.AbstractObject {
64770
64643
  allowNamespace: true,
64771
64644
  };
64772
64645
  }
64773
- getDescription() {
64774
- // todo
64775
- return undefined;
64776
- }
64777
64646
  }
64778
64647
  exports.GatewayProject = GatewayProject;
64779
64648
  //# sourceMappingURL=gateway_project.js.map
@@ -64801,10 +64670,6 @@ class GatewayService extends _abstract_object_1.AbstractObject {
64801
64670
  allowNamespace: true,
64802
64671
  };
64803
64672
  }
64804
- getDescription() {
64805
- // todo
64806
- return undefined;
64807
- }
64808
64673
  }
64809
64674
  exports.GatewayService = GatewayService;
64810
64675
  //# sourceMappingURL=gateway_service.js.map
@@ -64832,10 +64697,6 @@ class GatewayServiceGroupsMetadata extends _abstract_object_1.AbstractObject {
64832
64697
  allowNamespace: true,
64833
64698
  };
64834
64699
  }
64835
- getDescription() {
64836
- // todo
64837
- return undefined;
64838
- }
64839
64700
  }
64840
64701
  exports.GatewayServiceGroupsMetadata = GatewayServiceGroupsMetadata;
64841
64702
  //# sourceMappingURL=gateway_service_groups_metadata.js.map
@@ -64863,10 +64724,6 @@ class GatewayVocabularyAnnotation extends _abstract_object_1.AbstractObject {
64863
64724
  allowNamespace: true,
64864
64725
  };
64865
64726
  }
64866
- getDescription() {
64867
- // todo
64868
- return undefined;
64869
- }
64870
64727
  }
64871
64728
  exports.GatewayVocabularyAnnotation = GatewayVocabularyAnnotation;
64872
64729
  //# sourceMappingURL=gateway_vocabulary_annotation.js.map
@@ -64894,10 +64751,6 @@ class GeneralHierarchyStorageExtrensionName extends _abstract_object_1.AbstractO
64894
64751
  allowNamespace: true,
64895
64752
  };
64896
64753
  }
64897
- getDescription() {
64898
- // todo
64899
- return undefined;
64900
- }
64901
64754
  }
64902
64755
  exports.GeneralHierarchyStorageExtrensionName = GeneralHierarchyStorageExtrensionName;
64903
64756
  //# sourceMappingURL=general_hierarchy_storage_extrension_name.js.map
@@ -64925,10 +64778,6 @@ class GeneralStorageStructure extends _abstract_object_1.AbstractObject {
64925
64778
  allowNamespace: true,
64926
64779
  };
64927
64780
  }
64928
- getDescription() {
64929
- // todo
64930
- return undefined;
64931
- }
64932
64781
  }
64933
64782
  exports.GeneralStorageStructure = GeneralStorageStructure;
64934
64783
  //# sourceMappingURL=general_storage_structure.js.map
@@ -64956,10 +64805,6 @@ class GeneralText extends _abstract_object_1.AbstractObject {
64956
64805
  allowNamespace: true,
64957
64806
  };
64958
64807
  }
64959
- getDescription() {
64960
- // todo
64961
- return undefined;
64962
- }
64963
64808
  }
64964
64809
  exports.GeneralText = GeneralText;
64965
64810
  //# sourceMappingURL=general_text.js.map
@@ -64987,10 +64832,6 @@ class HttpService extends _abstract_object_1.AbstractObject {
64987
64832
  allowNamespace: true,
64988
64833
  };
64989
64834
  }
64990
- getDescription() {
64991
- // todo
64992
- return undefined;
64993
- }
64994
64835
  }
64995
64836
  exports.HttpService = HttpService;
64996
64837
  //# sourceMappingURL=http_service.js.map
@@ -65018,10 +64859,6 @@ class IACBinaryData extends _abstract_object_1.AbstractObject {
65018
64859
  allowNamespace: true,
65019
64860
  };
65020
64861
  }
65021
- getDescription() {
65022
- // todo
65023
- return undefined;
65024
- }
65025
64862
  }
65026
64863
  exports.IACBinaryData = IACBinaryData;
65027
64864
  //# sourceMappingURL=iac_binary_data.js.map
@@ -65049,10 +64886,6 @@ class IACLanguageResource extends _abstract_object_1.AbstractObject {
65049
64886
  allowNamespace: true,
65050
64887
  };
65051
64888
  }
65052
- getDescription() {
65053
- // todo
65054
- return undefined;
65055
- }
65056
64889
  }
65057
64890
  exports.IACLanguageResource = IACLanguageResource;
65058
64891
  //# sourceMappingURL=iac_language_resource.js.map
@@ -65080,10 +64913,6 @@ class IACService extends _abstract_object_1.AbstractObject {
65080
64913
  allowNamespace: true,
65081
64914
  };
65082
64915
  }
65083
- getDescription() {
65084
- // todo
65085
- return undefined;
65086
- }
65087
64916
  }
65088
64917
  exports.IACService = IACService;
65089
64918
  //# sourceMappingURL=iac_service.js.map
@@ -65111,10 +64940,6 @@ class IACTemplate extends _abstract_object_1.AbstractObject {
65111
64940
  allowNamespace: true,
65112
64941
  };
65113
64942
  }
65114
- getDescription() {
65115
- // todo
65116
- return undefined;
65117
- }
65118
64943
  }
65119
64944
  exports.IACTemplate = IACTemplate;
65120
64945
  //# sourceMappingURL=iac_template.js.map
@@ -65142,10 +64967,6 @@ class IAMApp extends _abstract_object_1.AbstractObject {
65142
64967
  allowNamespace: true,
65143
64968
  };
65144
64969
  }
65145
- getDescription() {
65146
- // todo
65147
- return undefined;
65148
- }
65149
64970
  }
65150
64971
  exports.IAMApp = IAMApp;
65151
64972
  //# sourceMappingURL=iam_app.js.map
@@ -65178,10 +64999,6 @@ class ICFService extends _abstract_object_1.AbstractObject {
65178
64999
  this.parsedXML = undefined;
65179
65000
  super.setDirty();
65180
65001
  }
65181
- getDescription() {
65182
- // todo
65183
- return undefined;
65184
- }
65185
65002
  getURL() {
65186
65003
  var _a;
65187
65004
  this.parse();
@@ -65243,10 +65060,6 @@ class Idoc extends _abstract_object_1.AbstractObject {
65243
65060
  allowNamespace: true,
65244
65061
  };
65245
65062
  }
65246
- getDescription() {
65247
- // todo
65248
- return undefined;
65249
- }
65250
65063
  }
65251
65064
  exports.Idoc = Idoc;
65252
65065
  //# sourceMappingURL=idoc.js.map
@@ -65274,10 +65087,6 @@ class IdocExtension extends _abstract_object_1.AbstractObject {
65274
65087
  allowNamespace: false,
65275
65088
  };
65276
65089
  }
65277
- getDescription() {
65278
- // todo
65279
- return undefined;
65280
- }
65281
65090
  }
65282
65091
  exports.IdocExtension = IdocExtension;
65283
65092
  //# sourceMappingURL=idoc_extension.js.map
@@ -65305,10 +65114,6 @@ class InboundService extends _abstract_object_1.AbstractObject {
65305
65114
  allowNamespace: true,
65306
65115
  };
65307
65116
  }
65308
- getDescription() {
65309
- // todo
65310
- return undefined;
65311
- }
65312
65117
  }
65313
65118
  exports.InboundService = InboundService;
65314
65119
  //# sourceMappingURL=inbound_service.js.map
@@ -65530,10 +65335,6 @@ class InfoArea extends _abstract_object_1.AbstractObject {
65530
65335
  allowNamespace: true,
65531
65336
  };
65532
65337
  }
65533
- getDescription() {
65534
- // todo
65535
- return undefined;
65536
- }
65537
65338
  }
65538
65339
  exports.InfoArea = InfoArea;
65539
65340
  //# sourceMappingURL=info_area.js.map
@@ -65561,10 +65362,6 @@ class InfoObject extends _abstract_object_1.AbstractObject {
65561
65362
  allowNamespace: true,
65562
65363
  };
65563
65364
  }
65564
- getDescription() {
65565
- // todo
65566
- return undefined;
65567
- }
65568
65365
  }
65569
65366
  exports.InfoObject = InfoObject;
65570
65367
  //# sourceMappingURL=info_object.js.map
@@ -65682,10 +65479,6 @@ class KnowledgeTransferDocument extends _abstract_object_1.AbstractObject {
65682
65479
  allowNamespace: true,
65683
65480
  };
65684
65481
  }
65685
- getDescription() {
65686
- // todo
65687
- return undefined;
65688
- }
65689
65482
  }
65690
65483
  exports.KnowledgeTransferDocument = KnowledgeTransferDocument;
65691
65484
  //# sourceMappingURL=knowledge_transfer_document.js.map
@@ -65816,10 +65609,6 @@ class MaintenanceAndTransportObject extends _abstract_object_1.AbstractObject {
65816
65609
  getType() {
65817
65610
  return "TOBJ";
65818
65611
  }
65819
- getDescription() {
65820
- // todo
65821
- return undefined;
65822
- }
65823
65612
  getAllowedNaming() {
65824
65613
  return {
65825
65614
  maxLength: 31,
@@ -66013,10 +65802,6 @@ class MessagingChannel extends _abstract_object_1.AbstractObject {
66013
65802
  allowNamespace: true,
66014
65803
  };
66015
65804
  }
66016
- getDescription() {
66017
- // todo
66018
- return undefined;
66019
- }
66020
65805
  }
66021
65806
  exports.MessagingChannel = MessagingChannel;
66022
65807
  //# sourceMappingURL=messaging_channel.js.map
@@ -66050,6 +65835,7 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
66050
65835
  }
66051
65836
  isFolder() {
66052
65837
  var _a;
65838
+ this.parse();
66053
65839
  return ((_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.FOLDER) === "X";
66054
65840
  }
66055
65841
  getAllowedNaming() {
@@ -66071,10 +65857,6 @@ class MIMEObject extends _abstract_object_1.AbstractObject {
66071
65857
  this.parsedXML = undefined;
66072
65858
  super.setDirty();
66073
65859
  }
66074
- getDescription() {
66075
- // this object type does not have a description
66076
- return undefined;
66077
- }
66078
65860
  parse() {
66079
65861
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
66080
65862
  if (this.parsedXML) {
@@ -66122,10 +65904,6 @@ class Namespace extends _abstract_object_1.AbstractObject {
66122
65904
  customRegex: new RegExp(/^\/[A-Z_\d]{3,8}\/$/i),
66123
65905
  };
66124
65906
  }
66125
- getDescription() {
66126
- // todo
66127
- return undefined;
66128
- }
66129
65907
  }
66130
65908
  exports.Namespace = Namespace;
66131
65909
  //# sourceMappingURL=namespace.js.map
@@ -66154,10 +65932,6 @@ class NeptuneAPI extends _abstract_object_1.AbstractObject {
66154
65932
  customRegex: /.*/i,
66155
65933
  };
66156
65934
  }
66157
- getDescription() {
66158
- // todo
66159
- return undefined;
66160
- }
66161
65935
  }
66162
65936
  exports.NeptuneAPI = NeptuneAPI;
66163
65937
  //# sourceMappingURL=neptune_api.js.map
@@ -66185,10 +65959,6 @@ class NeptuneApp extends _abstract_object_1.AbstractObject {
66185
65959
  allowNamespace: true,
66186
65960
  };
66187
65961
  }
66188
- getDescription() {
66189
- // todo
66190
- return undefined;
66191
- }
66192
65962
  }
66193
65963
  exports.NeptuneApp = NeptuneApp;
66194
65964
  //# sourceMappingURL=neptune_app.js.map
@@ -66216,10 +65986,6 @@ class NeptuneCustomColor extends _abstract_object_1.AbstractObject {
66216
65986
  allowNamespace: true,
66217
65987
  };
66218
65988
  }
66219
- getDescription() {
66220
- // todo
66221
- return undefined;
66222
- }
66223
65989
  }
66224
65990
  exports.NeptuneCustomColor = NeptuneCustomColor;
66225
65991
  //# sourceMappingURL=neptune_custom_color.js.map
@@ -66247,10 +66013,6 @@ class NeptuneCustomJSHelper extends _abstract_object_1.AbstractObject {
66247
66013
  allowNamespace: true,
66248
66014
  };
66249
66015
  }
66250
- getDescription() {
66251
- // todo
66252
- return undefined;
66253
- }
66254
66016
  }
66255
66017
  exports.NeptuneCustomJSHelper = NeptuneCustomJSHelper;
66256
66018
  //# sourceMappingURL=neptune_custom_js_helper.js.map
@@ -66278,10 +66040,6 @@ class NeptuneDocumentation extends _abstract_object_1.AbstractObject {
66278
66040
  allowNamespace: true,
66279
66041
  };
66280
66042
  }
66281
- getDescription() {
66282
- // todo
66283
- return undefined;
66284
- }
66285
66043
  }
66286
66044
  exports.NeptuneDocumentation = NeptuneDocumentation;
66287
66045
  //# sourceMappingURL=neptune_documentation.js.map
@@ -66309,10 +66067,6 @@ class NeptuneEnhancement extends _abstract_object_1.AbstractObject {
66309
66067
  allowNamespace: true,
66310
66068
  };
66311
66069
  }
66312
- getDescription() {
66313
- // todo
66314
- return undefined;
66315
- }
66316
66070
  }
66317
66071
  exports.NeptuneEnhancement = NeptuneEnhancement;
66318
66072
  //# sourceMappingURL=neptune_enhancement.js.map
@@ -66340,10 +66094,6 @@ class NeptuneLaunchpad extends _abstract_object_1.AbstractObject {
66340
66094
  allowNamespace: true,
66341
66095
  };
66342
66096
  }
66343
- getDescription() {
66344
- // todo
66345
- return undefined;
66346
- }
66347
66097
  }
66348
66098
  exports.NeptuneLaunchpad = NeptuneLaunchpad;
66349
66099
  //# sourceMappingURL=neptune_launchpad.js.map
@@ -66371,10 +66121,6 @@ class NeptuneLaunchpadLayout extends _abstract_object_1.AbstractObject {
66371
66121
  allowNamespace: true,
66372
66122
  };
66373
66123
  }
66374
- getDescription() {
66375
- // todo
66376
- return undefined;
66377
- }
66378
66124
  }
66379
66125
  exports.NeptuneLaunchpadLayout = NeptuneLaunchpadLayout;
66380
66126
  //# sourceMappingURL=neptune_launchpad_layout.js.map
@@ -66402,10 +66148,6 @@ class NeptuneLoginPage extends _abstract_object_1.AbstractObject {
66402
66148
  allowNamespace: true,
66403
66149
  };
66404
66150
  }
66405
- getDescription() {
66406
- // todo
66407
- return undefined;
66408
- }
66409
66151
  }
66410
66152
  exports.NeptuneLoginPage = NeptuneLoginPage;
66411
66153
  //# sourceMappingURL=neptune_login_page.js.map
@@ -66433,10 +66175,6 @@ class NeptuneMediaLibrary extends _abstract_object_1.AbstractObject {
66433
66175
  allowNamespace: true,
66434
66176
  };
66435
66177
  }
66436
- getDescription() {
66437
- // todo
66438
- return undefined;
66439
- }
66440
66178
  }
66441
66179
  exports.NeptuneMediaLibrary = NeptuneMediaLibrary;
66442
66180
  //# sourceMappingURL=neptune_media_library.js.map
@@ -66464,10 +66202,6 @@ class NeptuneMediaPack extends _abstract_object_1.AbstractObject {
66464
66202
  allowNamespace: true,
66465
66203
  };
66466
66204
  }
66467
- getDescription() {
66468
- // todo
66469
- return undefined;
66470
- }
66471
66205
  }
66472
66206
  exports.NeptuneMediaPack = NeptuneMediaPack;
66473
66207
  //# sourceMappingURL=neptune_media_pack.js.map
@@ -66495,10 +66229,6 @@ class NeptuneMetadata extends _abstract_object_1.AbstractObject {
66495
66229
  allowNamespace: true,
66496
66230
  };
66497
66231
  }
66498
- getDescription() {
66499
- // todo
66500
- return undefined;
66501
- }
66502
66232
  }
66503
66233
  exports.NeptuneMetadata = NeptuneMetadata;
66504
66234
  //# sourceMappingURL=neptune_metadata.js.map
@@ -66526,10 +66256,6 @@ class NeptuneMobileClient extends _abstract_object_1.AbstractObject {
66526
66256
  allowNamespace: true,
66527
66257
  };
66528
66258
  }
66529
- getDescription() {
66530
- // todo
66531
- return undefined;
66532
- }
66533
66259
  }
66534
66260
  exports.NeptuneMobileClient = NeptuneMobileClient;
66535
66261
  //# sourceMappingURL=neptune_mobile_client.js.map
@@ -66557,10 +66283,6 @@ class NeptuneOData extends _abstract_object_1.AbstractObject {
66557
66283
  allowNamespace: true,
66558
66284
  };
66559
66285
  }
66560
- getDescription() {
66561
- // todo
66562
- return undefined;
66563
- }
66564
66286
  }
66565
66287
  exports.NeptuneOData = NeptuneOData;
66566
66288
  //# sourceMappingURL=neptune_odata.js.map
@@ -66588,10 +66310,6 @@ class NeptunePolicy extends _abstract_object_1.AbstractObject {
66588
66310
  allowNamespace: true,
66589
66311
  };
66590
66312
  }
66591
- getDescription() {
66592
- // todo
66593
- return undefined;
66594
- }
66595
66313
  }
66596
66314
  exports.NeptunePolicy = NeptunePolicy;
66597
66315
  //# sourceMappingURL=neptune_policy.js.map
@@ -66619,10 +66337,6 @@ class NeptuneRFCMapping extends _abstract_object_1.AbstractObject {
66619
66337
  allowNamespace: true,
66620
66338
  };
66621
66339
  }
66622
- getDescription() {
66623
- // todo
66624
- return undefined;
66625
- }
66626
66340
  }
66627
66341
  exports.NeptuneRFCMapping = NeptuneRFCMapping;
66628
66342
  //# sourceMappingURL=neptune_rfc_mapping.js.map
@@ -66650,10 +66364,6 @@ class NeptuneRichTextTemplate extends _abstract_object_1.AbstractObject {
66650
66364
  allowNamespace: true,
66651
66365
  };
66652
66366
  }
66653
- getDescription() {
66654
- // todo
66655
- return undefined;
66656
- }
66657
66367
  }
66658
66368
  exports.NeptuneRichTextTemplate = NeptuneRichTextTemplate;
66659
66369
  //# sourceMappingURL=neptune_rich_text_template.js.map
@@ -66681,10 +66391,6 @@ class NeptuneSplashScreen extends _abstract_object_1.AbstractObject {
66681
66391
  allowNamespace: true,
66682
66392
  };
66683
66393
  }
66684
- getDescription() {
66685
- // todo
66686
- return undefined;
66687
- }
66688
66394
  }
66689
66395
  exports.NeptuneSplashScreen = NeptuneSplashScreen;
66690
66396
  //# sourceMappingURL=neptune_splash_screen.js.map
@@ -66712,10 +66418,6 @@ class NeptuneStickyBanner extends _abstract_object_1.AbstractObject {
66712
66418
  allowNamespace: true,
66713
66419
  };
66714
66420
  }
66715
- getDescription() {
66716
- // todo
66717
- return undefined;
66718
- }
66719
66421
  }
66720
66422
  exports.NeptuneStickyBanner = NeptuneStickyBanner;
66721
66423
  //# sourceMappingURL=neptune_sticky_banner.js.map
@@ -66743,10 +66445,6 @@ class NeptuneTile extends _abstract_object_1.AbstractObject {
66743
66445
  allowNamespace: true,
66744
66446
  };
66745
66447
  }
66746
- getDescription() {
66747
- // todo
66748
- return undefined;
66749
- }
66750
66448
  }
66751
66449
  exports.NeptuneTile = NeptuneTile;
66752
66450
  //# sourceMappingURL=neptune_tile.js.map
@@ -66774,10 +66472,6 @@ class NeptuneTileGroup extends _abstract_object_1.AbstractObject {
66774
66472
  allowNamespace: true,
66775
66473
  };
66776
66474
  }
66777
- getDescription() {
66778
- // todo
66779
- return undefined;
66780
- }
66781
66475
  }
66782
66476
  exports.NeptuneTileGroup = NeptuneTileGroup;
66783
66477
  //# sourceMappingURL=neptune_tile_group.js.map
@@ -66805,10 +66499,6 @@ class NeptuneTileLayout extends _abstract_object_1.AbstractObject {
66805
66499
  allowNamespace: true,
66806
66500
  };
66807
66501
  }
66808
- getDescription() {
66809
- // todo
66810
- return undefined;
66811
- }
66812
66502
  }
66813
66503
  exports.NeptuneTileLayout = NeptuneTileLayout;
66814
66504
  //# sourceMappingURL=neptune_tile_layout.js.map
@@ -66836,10 +66526,6 @@ class NeptuneURLAlias extends _abstract_object_1.AbstractObject {
66836
66526
  allowNamespace: true,
66837
66527
  };
66838
66528
  }
66839
- getDescription() {
66840
- // todo
66841
- return undefined;
66842
- }
66843
66529
  }
66844
66530
  exports.NeptuneURLAlias = NeptuneURLAlias;
66845
66531
  //# sourceMappingURL=neptune_url_alias.js.map
@@ -66933,10 +66619,6 @@ class Oauth2Profile extends _abstract_object_1.AbstractObject {
66933
66619
  allowNamespace: true,
66934
66620
  };
66935
66621
  }
66936
- getDescription() {
66937
- // todo
66938
- return undefined;
66939
- }
66940
66622
  listScopes() {
66941
66623
  var _a, _b, _c, _d, _e;
66942
66624
  const ret = [];
@@ -66973,10 +66655,6 @@ class ObjectCharacteristic extends _abstract_object_1.AbstractObject {
66973
66655
  allowNamespace: true,
66974
66656
  };
66975
66657
  }
66976
- getDescription() {
66977
- // todo
66978
- return undefined;
66979
- }
66980
66658
  }
66981
66659
  exports.ObjectCharacteristic = ObjectCharacteristic;
66982
66660
  //# sourceMappingURL=object_characteristic.js.map
@@ -67004,10 +66682,6 @@ class OutboundService extends _abstract_object_1.AbstractObject {
67004
66682
  allowNamespace: true,
67005
66683
  };
67006
66684
  }
67007
- getDescription() {
67008
- // todo
67009
- return undefined;
67010
- }
67011
66685
  }
67012
66686
  exports.OutboundService = OutboundService;
67013
66687
  //# sourceMappingURL=outbound_service.js.map
@@ -67035,10 +66709,6 @@ class Package extends _abstract_object_1.AbstractObject {
67035
66709
  allowNamespace: true,
67036
66710
  };
67037
66711
  }
67038
- getDescription() {
67039
- // todo
67040
- return undefined;
67041
- }
67042
66712
  }
67043
66713
  exports.Package = Package;
67044
66714
  //# sourceMappingURL=package.js.map
@@ -67066,10 +66736,6 @@ class PackageInterface extends _abstract_object_1.AbstractObject {
67066
66736
  allowNamespace: true,
67067
66737
  };
67068
66738
  }
67069
- getDescription() {
67070
- // todo
67071
- return undefined;
67072
- }
67073
66739
  }
67074
66740
  exports.PackageInterface = PackageInterface;
67075
66741
  //# sourceMappingURL=package_interface.js.map
@@ -67097,10 +66763,6 @@ class PageFormat extends _abstract_object_1.AbstractObject {
67097
66763
  allowNamespace: true,
67098
66764
  };
67099
66765
  }
67100
- getDescription() {
67101
- // todo
67102
- return undefined;
67103
- }
67104
66766
  }
67105
66767
  exports.PageFormat = PageFormat;
67106
66768
  //# sourceMappingURL=page_format.js.map
@@ -67128,10 +66790,6 @@ class Parameter extends _abstract_object_1.AbstractObject {
67128
66790
  allowNamespace: true,
67129
66791
  };
67130
66792
  }
67131
- getDescription() {
67132
- // todo
67133
- return undefined;
67134
- }
67135
66793
  }
67136
66794
  exports.Parameter = Parameter;
67137
66795
  //# sourceMappingURL=parameter.js.map
@@ -67159,10 +66817,6 @@ class PersonalizationObject extends _abstract_object_1.AbstractObject {
67159
66817
  allowNamespace: true,
67160
66818
  };
67161
66819
  }
67162
- getDescription() {
67163
- // todo
67164
- return undefined;
67165
- }
67166
66820
  }
67167
66821
  exports.PersonalizationObject = PersonalizationObject;
67168
66822
  //# sourceMappingURL=personalization_object.js.map
@@ -67407,10 +67061,6 @@ class PushChannel extends _abstract_object_1.AbstractObject {
67407
67061
  allowNamespace: true,
67408
67062
  };
67409
67063
  }
67410
- getDescription() {
67411
- // todo
67412
- return undefined;
67413
- }
67414
67064
  }
67415
67065
  exports.PushChannel = PushChannel;
67416
67066
  //# sourceMappingURL=push_channel.js.map
@@ -67438,10 +67088,6 @@ class QueryUserGroup extends _abstract_object_1.AbstractObject {
67438
67088
  allowNamespace: true,
67439
67089
  };
67440
67090
  }
67441
- getDescription() {
67442
- // todo
67443
- return undefined;
67444
- }
67445
67091
  }
67446
67092
  exports.QueryUserGroup = QueryUserGroup;
67447
67093
  //# sourceMappingURL=query_user_group.js.map
@@ -68408,10 +68054,6 @@ class RestrictionField extends _abstract_object_1.AbstractObject {
68408
68054
  allowNamespace: true,
68409
68055
  };
68410
68056
  }
68411
- getDescription() {
68412
- // todo
68413
- return undefined;
68414
- }
68415
68057
  }
68416
68058
  exports.RestrictionField = RestrictionField;
68417
68059
  //# sourceMappingURL=restriction_field.js.map
@@ -68439,10 +68081,6 @@ class RestrictionType extends _abstract_object_1.AbstractObject {
68439
68081
  allowNamespace: true,
68440
68082
  };
68441
68083
  }
68442
- getDescription() {
68443
- // todo
68444
- return undefined;
68445
- }
68446
68084
  }
68447
68085
  exports.RestrictionType = RestrictionType;
68448
68086
  //# sourceMappingURL=restriction_type.js.map
@@ -68470,10 +68108,6 @@ class RFCService extends _abstract_object_1.AbstractObject {
68470
68108
  allowNamespace: true,
68471
68109
  };
68472
68110
  }
68473
- getDescription() {
68474
- // todo
68475
- return undefined;
68476
- }
68477
68111
  }
68478
68112
  exports.RFCService = RFCService;
68479
68113
  //# sourceMappingURL=rfc_service.js.map
@@ -68501,10 +68135,6 @@ class SAPScript extends _abstract_object_1.AbstractObject {
68501
68135
  allowNamespace: true,
68502
68136
  };
68503
68137
  }
68504
- getDescription() {
68505
- // todo
68506
- return undefined;
68507
- }
68508
68138
  }
68509
68139
  exports.SAPScript = SAPScript;
68510
68140
  //# sourceMappingURL=sapscript.js.map
@@ -68532,10 +68162,6 @@ class SAPScriptStyle extends _abstract_object_1.AbstractObject {
68532
68162
  allowNamespace: true,
68533
68163
  };
68534
68164
  }
68535
- getDescription() {
68536
- // todo
68537
- return undefined;
68538
- }
68539
68165
  }
68540
68166
  exports.SAPScriptStyle = SAPScriptStyle;
68541
68167
  //# sourceMappingURL=sapscript_style.js.map
@@ -68563,10 +68189,6 @@ class ScreenVariant extends _abstract_object_1.AbstractObject {
68563
68189
  allowNamespace: true,
68564
68190
  };
68565
68191
  }
68566
- getDescription() {
68567
- // todo
68568
- return undefined;
68569
- }
68570
68192
  }
68571
68193
  exports.ScreenVariant = ScreenVariant;
68572
68194
  //# sourceMappingURL=screen_variant.js.map
@@ -68594,10 +68216,6 @@ class SearchHelp extends _abstract_object_1.AbstractObject {
68594
68216
  allowNamespace: true,
68595
68217
  };
68596
68218
  }
68597
- getDescription() {
68598
- // todo
68599
- return undefined;
68600
- }
68601
68219
  }
68602
68220
  exports.SearchHelp = SearchHelp;
68603
68221
  //# sourceMappingURL=search_help.js.map
@@ -68625,10 +68243,6 @@ class ServiceBinding extends _abstract_object_1.AbstractObject {
68625
68243
  allowNamespace: true,
68626
68244
  };
68627
68245
  }
68628
- getDescription() {
68629
- // todo
68630
- return undefined;
68631
- }
68632
68246
  }
68633
68247
  exports.ServiceBinding = ServiceBinding;
68634
68248
  //# sourceMappingURL=service_binding.js.map
@@ -68656,10 +68270,6 @@ class ServiceDefinition extends _abstract_object_1.AbstractObject {
68656
68270
  allowNamespace: true,
68657
68271
  };
68658
68272
  }
68659
- getDescription() {
68660
- // todo
68661
- return undefined;
68662
- }
68663
68273
  }
68664
68274
  exports.ServiceDefinition = ServiceDefinition;
68665
68275
  //# sourceMappingURL=service_definition.js.map
@@ -68687,10 +68297,6 @@ class SharedMemory extends _abstract_object_1.AbstractObject {
68687
68297
  allowNamespace: true,
68688
68298
  };
68689
68299
  }
68690
- getDescription() {
68691
- // todo
68692
- return undefined;
68693
- }
68694
68300
  }
68695
68301
  exports.SharedMemory = SharedMemory;
68696
68302
  //# sourceMappingURL=shared_memory.js.map
@@ -68718,10 +68324,6 @@ class SmartForm extends _abstract_object_1.AbstractObject {
68718
68324
  allowNamespace: true,
68719
68325
  };
68720
68326
  }
68721
- getDescription() {
68722
- // todo
68723
- return undefined;
68724
- }
68725
68327
  }
68726
68328
  exports.SmartForm = SmartForm;
68727
68329
  //# sourceMappingURL=smart_form.js.map
@@ -68749,10 +68351,6 @@ class SmartStyle extends _abstract_object_1.AbstractObject {
68749
68351
  allowNamespace: true,
68750
68352
  };
68751
68353
  }
68752
- getDescription() {
68753
- // todo
68754
- return undefined;
68755
- }
68756
68354
  }
68757
68355
  exports.SmartStyle = SmartStyle;
68758
68356
  //# sourceMappingURL=smart_style.js.map
@@ -68780,10 +68378,6 @@ class StandardTask extends _abstract_object_1.AbstractObject {
68780
68378
  allowNamespace: true,
68781
68379
  };
68782
68380
  }
68783
- getDescription() {
68784
- // todo
68785
- return undefined;
68786
- }
68787
68381
  }
68788
68382
  exports.StandardTask = StandardTask;
68789
68383
  //# sourceMappingURL=standard_task.js.map
@@ -68811,10 +68405,6 @@ class SwitchAssignmentHierarchy extends _abstract_object_1.AbstractObject {
68811
68405
  allowNamespace: true,
68812
68406
  };
68813
68407
  }
68814
- getDescription() {
68815
- // todo
68816
- return undefined;
68817
- }
68818
68408
  }
68819
68409
  exports.SwitchAssignmentHierarchy = SwitchAssignmentHierarchy;
68820
68410
  //# sourceMappingURL=switch_assignment_hierarchy.js.map
@@ -68842,10 +68432,6 @@ class SwitchAssignments extends _abstract_object_1.AbstractObject {
68842
68432
  allowNamespace: true,
68843
68433
  };
68844
68434
  }
68845
- getDescription() {
68846
- // todo
68847
- return undefined;
68848
- }
68849
68435
  }
68850
68436
  exports.SwitchAssignments = SwitchAssignments;
68851
68437
  //# sourceMappingURL=switch_assignments.js.map
@@ -69565,10 +69151,6 @@ class TechnicalJobDefinition extends _abstract_object_1.AbstractObject {
69565
69151
  allowNamespace: true,
69566
69152
  };
69567
69153
  }
69568
- getDescription() {
69569
- // todo
69570
- return undefined;
69571
- }
69572
69154
  }
69573
69155
  exports.TechnicalJobDefinition = TechnicalJobDefinition;
69574
69156
  //# sourceMappingURL=technical_job_definition.js.map
@@ -69670,10 +69252,6 @@ class TransactionVariant extends _abstract_object_1.AbstractObject {
69670
69252
  allowNamespace: true,
69671
69253
  };
69672
69254
  }
69673
- getDescription() {
69674
- // todo
69675
- return undefined;
69676
- }
69677
69255
  }
69678
69256
  exports.TransactionVariant = TransactionVariant;
69679
69257
  //# sourceMappingURL=transaction_variant.js.map
@@ -69701,10 +69279,6 @@ class Transformation extends _abstract_object_1.AbstractObject {
69701
69279
  allowNamespace: true,
69702
69280
  };
69703
69281
  }
69704
- getDescription() {
69705
- // todo
69706
- return undefined;
69707
- }
69708
69282
  }
69709
69283
  exports.Transformation = Transformation;
69710
69284
  //# sourceMappingURL=transformation.js.map
@@ -69975,10 +69549,6 @@ class ViewCluster extends _abstract_object_1.AbstractObject {
69975
69549
  allowNamespace: true,
69976
69550
  };
69977
69551
  }
69978
- getDescription() {
69979
- // todo
69980
- return undefined;
69981
- }
69982
69552
  }
69983
69553
  exports.ViewCluster = ViewCluster;
69984
69554
  //# sourceMappingURL=view_cluster.js.map
@@ -70006,10 +69576,6 @@ class VirtualEndPoint extends _abstract_object_1.AbstractObject {
70006
69576
  allowNamespace: true,
70007
69577
  };
70008
69578
  }
70009
- getDescription() {
70010
- // todo
70011
- return undefined;
70012
- }
70013
69579
  }
70014
69580
  exports.VirtualEndPoint = VirtualEndPoint;
70015
69581
  //# sourceMappingURL=virtual_end_point.js.map
@@ -70037,10 +69603,6 @@ class WebDynproApplication extends _abstract_object_1.AbstractObject {
70037
69603
  allowNamespace: true,
70038
69604
  };
70039
69605
  }
70040
- getDescription() {
70041
- // todo
70042
- return undefined;
70043
- }
70044
69606
  }
70045
69607
  exports.WebDynproApplication = WebDynproApplication;
70046
69608
  //# sourceMappingURL=web_dynpro_application.js.map
@@ -70068,10 +69630,6 @@ class WebDynproApplicationConfiguration extends _abstract_object_1.AbstractObjec
70068
69630
  allowNamespace: true,
70069
69631
  };
70070
69632
  }
70071
- getDescription() {
70072
- // todo
70073
- return undefined;
70074
- }
70075
69633
  }
70076
69634
  exports.WebDynproApplicationConfiguration = WebDynproApplicationConfiguration;
70077
69635
  //# sourceMappingURL=web_dynpro_application_configuration.js.map
@@ -70099,10 +69657,6 @@ class WebDynproComponent extends _abstract_object_1.AbstractObject {
70099
69657
  allowNamespace: true,
70100
69658
  };
70101
69659
  }
70102
- getDescription() {
70103
- // todo
70104
- return undefined;
70105
- }
70106
69660
  }
70107
69661
  exports.WebDynproComponent = WebDynproComponent;
70108
69662
  //# sourceMappingURL=web_dynpro_component.js.map
@@ -70130,10 +69684,6 @@ class WebDynproComponentConfiguration extends _abstract_object_1.AbstractObject
70130
69684
  allowNamespace: true,
70131
69685
  };
70132
69686
  }
70133
- getDescription() {
70134
- // todo
70135
- return undefined;
70136
- }
70137
69687
  }
70138
69688
  exports.WebDynproComponentConfiguration = WebDynproComponentConfiguration;
70139
69689
  //# sourceMappingURL=web_dynpro_component_configuration.js.map
@@ -70241,10 +69791,6 @@ class WebReportingTemplate extends _abstract_object_1.AbstractObject {
70241
69791
  allowNamespace: true,
70242
69792
  };
70243
69793
  }
70244
- getDescription() {
70245
- // todo
70246
- return undefined;
70247
- }
70248
69794
  }
70249
69795
  exports.WebReportingTemplate = WebReportingTemplate;
70250
69796
  //# sourceMappingURL=web_reporting_template.js.map
@@ -70809,7 +70355,7 @@ class Registry {
70809
70355
  }
70810
70356
  static abaplintVersion() {
70811
70357
  // magic, see build script "version.js"
70812
- return "2.120.64";
70358
+ return "2.120.66";
70813
70359
  }
70814
70360
  getDDICReferences() {
70815
70361
  return this.ddicReferences;
@@ -81402,8 +80948,8 @@ class ElseAfterAllReturns extends _abap_rule_1.ABAPRule {
81402
80948
  continue;
81403
80949
  }
81404
80950
  const fix = edit_helper_1.EditHelper.merge(edit_helper_1.EditHelper.replaceRange(file, elseStatement.getFirstToken().getStart(), elseStatement.getLastToken().getEnd(), "ENDIF."), edit_helper_1.EditHelper.deleteStatement(file, endifStatement));
81405
- // eslint-disable-next-line max-len
81406
- issues.push(issue_1.Issue.atStatement(file, elseStatement, "Redundant ELSE: all prior branches exit unconditionally", this.getMetadata().key, this.conf.severity, fix));
80951
+ const message = "Redundant ELSE: all prior branches exit unconditionally";
80952
+ issues.push(issue_1.Issue.atStatement(file, elseStatement, message, this.getMetadata().key, this.conf.severity, fix));
81407
80953
  }
81408
80954
  }
81409
80955
  return issues;
@@ -84439,6 +83985,8 @@ const Statements = __importStar(__webpack_require__(/*! ../abap/2_statements/sta
84439
83985
  const Expressions = __importStar(__webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
84440
83986
  const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
84441
83987
  const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "../core/build/src/edit_helper.js");
83988
+ const syntax_1 = __webpack_require__(/*! ../abap/5_syntax/syntax */ "../core/build/src/abap/5_syntax/syntax.js");
83989
+ const _reference_1 = __webpack_require__(/*! ../abap/5_syntax/_reference */ "../core/build/src/abap/5_syntax/_reference.js");
84442
83990
  // todo: abstract methods from superclass parents(might be multiple), if class is not abstract
84443
83991
  class ImplementMethodsConf extends _basic_rule_config_1.BasicRuleConfig {
84444
83992
  }
@@ -84549,7 +84097,7 @@ class ImplementMethods extends _abap_rule_1.ABAPRule {
84549
84097
  return undefined;
84550
84098
  }
84551
84099
  findInterface(identifier, name) {
84552
- const idef = this.findInterfaceByName(name);
84100
+ const idef = this.findInterfaceByName(name, identifier);
84553
84101
  if (idef === undefined) {
84554
84102
  const message = "Implemented interface \"" + name + "\" not found";
84555
84103
  const issue = issue_1.Issue.atIdentifier(identifier, message, this.getMetadata().key, this.conf.severity);
@@ -84557,24 +84105,45 @@ class ImplementMethods extends _abap_rule_1.ABAPRule {
84557
84105
  }
84558
84106
  return idef;
84559
84107
  }
84560
- findInterfaceByName(name) {
84108
+ findInterfaceByName(name, usedAt) {
84561
84109
  var _a;
84562
- let idef = undefined;
84563
84110
  const intf = this.reg.getObject("INTF", name);
84564
- if (intf === undefined) {
84565
- // lookup in localfiles
84111
+ const global = (_a = intf === null || intf === void 0 ? void 0 : intf.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().listInterfaceDefinitions()[0];
84112
+ let local = undefined;
84113
+ for (const file of this.obj.getABAPFiles()) {
84114
+ local = file.getInfo().getInterfaceDefinitionByName(name);
84115
+ if (local) {
84116
+ break;
84117
+ }
84118
+ }
84119
+ if (local === undefined || global === undefined) {
84120
+ return global || local;
84121
+ }
84122
+ // both a local and a global interface exist with the same name, use what the syntax check resolved
84123
+ const resolved = this.findResolvedInterface(name, usedAt);
84124
+ if (resolved !== undefined) {
84566
84125
  for (const file of this.obj.getABAPFiles()) {
84567
- const found = file.getInfo().getInterfaceDefinitionByName(name);
84568
- if (found) {
84569
- idef = found;
84570
- break;
84126
+ for (const idef of file.getInfo().listInterfaceDefinitions()) {
84127
+ if (idef.identifier.equals(resolved)) {
84128
+ return idef;
84129
+ }
84571
84130
  }
84572
84131
  }
84573
84132
  }
84574
- else {
84575
- idef = (_a = intf.getMainABAPFile()) === null || _a === void 0 ? void 0 : _a.getInfo().listInterfaceDefinitions()[0];
84133
+ return global;
84134
+ }
84135
+ findResolvedInterface(name, usedAt) {
84136
+ var _a, _b, _c;
84137
+ const scope = new syntax_1.SyntaxLogic(this.reg, this.obj).run().spaghetti.lookupPosition(usedAt.getStart(), usedAt.getFilename());
84138
+ const upper = name.toUpperCase();
84139
+ for (const ref of (scope === null || scope === void 0 ? void 0 : scope.getData().references) || []) {
84140
+ if (ref.referenceType === _reference_1.ReferenceType.ObjectOrientedReference
84141
+ && ((_a = ref.extra) === null || _a === void 0 ? void 0 : _a.ooType) === "INTF"
84142
+ && ((_c = (_b = ref.extra) === null || _b === void 0 ? void 0 : _b.ooName) === null || _c === void 0 ? void 0 : _c.toUpperCase()) === upper) {
84143
+ return ref.resolved;
84144
+ }
84576
84145
  }
84577
- return idef;
84146
+ return undefined;
84578
84147
  }
84579
84148
  /** including implemented super interfaces */
84580
84149
  findInterfaceMethods(idef) {
@@ -84693,7 +84262,7 @@ class ImplementMethods extends _abap_rule_1.ABAPRule {
84693
84262
  }
84694
84263
  if (found === undefined) {
84695
84264
  for (const i of def.interfaces) {
84696
- const idef = this.findInterfaceByName(i.name);
84265
+ const idef = this.findInterfaceByName(i.name, def.identifier);
84697
84266
  if (idef === undefined) {
84698
84267
  continue;
84699
84268
  }
@@ -85385,6 +84954,7 @@ __exportStar(__webpack_require__(/*! ./prefer_string_template */ "../core/build/
85385
84954
  __exportStar(__webpack_require__(/*! ./prefer_returning_to_exporting */ "../core/build/src/rules/prefer_returning_to_exporting.js"), exports);
85386
84955
  __exportStar(__webpack_require__(/*! ./prefer_xsdbool */ "../core/build/src/rules/prefer_xsdbool.js"), exports);
85387
84956
  __exportStar(__webpack_require__(/*! ./preferred_compare_operator */ "../core/build/src/rules/preferred_compare_operator.js"), exports);
84957
+ __exportStar(__webpack_require__(/*! ./preferred_parameter_ignored */ "../core/build/src/rules/preferred_parameter_ignored.js"), exports);
85388
84958
  __exportStar(__webpack_require__(/*! ./prefix_is_current_class */ "../core/build/src/rules/prefix_is_current_class.js"), exports);
85389
84959
  __exportStar(__webpack_require__(/*! ./reduce_procedural_code */ "../core/build/src/rules/reduce_procedural_code.js"), exports);
85390
84960
  __exportStar(__webpack_require__(/*! ./reduce_string_templates */ "../core/build/src/rules/reduce_string_templates.js"), exports);
@@ -94426,6 +93996,157 @@ exports.PreferredCompareOperator = PreferredCompareOperator;
94426
93996
 
94427
93997
  /***/ },
94428
93998
 
93999
+ /***/ "../core/build/src/rules/preferred_parameter_ignored.js"
94000
+ /*!**************************************************************!*\
94001
+ !*** ../core/build/src/rules/preferred_parameter_ignored.js ***!
94002
+ \**************************************************************/
94003
+ (__unused_webpack_module, exports, __webpack_require__) {
94004
+
94005
+ "use strict";
94006
+
94007
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
94008
+ if (k2 === undefined) k2 = k;
94009
+ var desc = Object.getOwnPropertyDescriptor(m, k);
94010
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
94011
+ desc = { enumerable: true, get: function() { return m[k]; } };
94012
+ }
94013
+ Object.defineProperty(o, k2, desc);
94014
+ }) : (function(o, m, k, k2) {
94015
+ if (k2 === undefined) k2 = k;
94016
+ o[k2] = m[k];
94017
+ }));
94018
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
94019
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
94020
+ }) : function(o, v) {
94021
+ o["default"] = v;
94022
+ });
94023
+ var __importStar = (this && this.__importStar) || (function () {
94024
+ var ownKeys = function(o) {
94025
+ ownKeys = Object.getOwnPropertyNames || function (o) {
94026
+ var ar = [];
94027
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
94028
+ return ar;
94029
+ };
94030
+ return ownKeys(o);
94031
+ };
94032
+ return function (mod) {
94033
+ if (mod && mod.__esModule) return mod;
94034
+ var result = {};
94035
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
94036
+ __setModuleDefault(result, mod);
94037
+ return result;
94038
+ };
94039
+ })();
94040
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
94041
+ exports.PreferredParameterIgnored = exports.PreferredParameterIgnoredConf = void 0;
94042
+ const Expressions = __importStar(__webpack_require__(/*! ../abap/2_statements/expressions */ "../core/build/src/abap/2_statements/expressions/index.js"));
94043
+ const issue_1 = __webpack_require__(/*! ../issue */ "../core/build/src/issue.js");
94044
+ const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "../core/build/src/rules/_basic_rule_config.js");
94045
+ const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "../core/build/src/rules/_abap_rule.js");
94046
+ const _irule_1 = __webpack_require__(/*! ./_irule */ "../core/build/src/rules/_irule.js");
94047
+ const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "../core/build/src/edit_helper.js");
94048
+ class PreferredParameterIgnoredConf extends _basic_rule_config_1.BasicRuleConfig {
94049
+ }
94050
+ exports.PreferredParameterIgnoredConf = PreferredParameterIgnoredConf;
94051
+ class PreferredParameterIgnored extends _abap_rule_1.ABAPRule {
94052
+ constructor() {
94053
+ super(...arguments);
94054
+ this.conf = new PreferredParameterIgnoredConf();
94055
+ }
94056
+ getMetadata() {
94057
+ return {
94058
+ key: "preferred_parameter_ignored",
94059
+ title: "PREFERRED PARAMETER is ignored",
94060
+ shortDescription: `PREFERRED PARAMETER on an IMPORTING clause that still has a mandatory
94061
+ parameter. The addition names the parameter a positional call fills, which only
94062
+ means something when every parameter may be left out - so with a mandatory one
94063
+ present it does nothing.`,
94064
+ extendedInformation: `\`PREFERRED PARAMETER\` names the importing parameter that a call filling exactly
94065
+ one parameter positionally fills. That question only arises when a parameter
94066
+ may be LEFT OUT, so the addition is ignored while any importing parameter is
94067
+ neither \`OPTIONAL\` nor carries a \`DEFAULT\`.
94068
+
94069
+ The compiler warns "Declare the parameter as OPTIONAL. The addition PREFERRED
94070
+ PARAMETER is ignored if non-optional parameters are used", yet it still lets a
94071
+ call leave the preferred parameter out. So the quick fix declares the mandatory
94072
+ importing parameters OPTIONAL, as the compiler asks: every call that compiles
94073
+ today keeps compiling. Removing the addition instead would turn the calls that
94074
+ leave the preferred parameter out into syntax errors.`,
94075
+ tags: [_irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
94076
+ badExample: `METHODS meth
94077
+ IMPORTING
94078
+ val TYPE string
94079
+ other TYPE i OPTIONAL
94080
+ PREFERRED PARAMETER val.`,
94081
+ goodExample: `METHODS meth
94082
+ IMPORTING
94083
+ val TYPE string OPTIONAL
94084
+ other TYPE i OPTIONAL
94085
+ PREFERRED PARAMETER val.`,
94086
+ };
94087
+ }
94088
+ getConfig() {
94089
+ return this.conf;
94090
+ }
94091
+ setConfig(conf) {
94092
+ this.conf = conf;
94093
+ }
94094
+ runParsed(file) {
94095
+ var _a;
94096
+ var _b;
94097
+ const issues = [];
94098
+ for (const statement of file.getStatements()) {
94099
+ const importing = statement.findFirstExpression(Expressions.MethodDefImporting);
94100
+ if (importing === undefined) {
94101
+ continue;
94102
+ }
94103
+ const preferred = this.preferredTokens(importing);
94104
+ if (preferred === undefined) {
94105
+ continue;
94106
+ }
94107
+ const mandatory = this.mandatoryParameters(importing);
94108
+ if (mandatory.length === 0) {
94109
+ continue;
94110
+ }
94111
+ const fix = edit_helper_1.EditHelper.mergeList(mandatory.map(p => edit_helper_1.EditHelper.insertAt(file, p.getLastToken().getEnd(), " OPTIONAL")));
94112
+ const name = (_b = (_a = mandatory[0].findFirstExpression(Expressions.MethodParamName)) === null || _a === void 0 ? void 0 : _a.concatTokens()) !== null && _b !== void 0 ? _b : mandatory[0].concatTokens();
94113
+ const message = `PREFERRED PARAMETER is ignored while ${name} is not optional`;
94114
+ issues.push(issue_1.Issue.atStatement(file, statement, message, this.getMetadata().key, this.conf.severity, fix));
94115
+ }
94116
+ return issues;
94117
+ }
94118
+ ////////////////
94119
+ /** The span of `PREFERRED PARAMETER <name>`, or undefined when the clause
94120
+ * does not carry the addition. */
94121
+ preferredTokens(importing) {
94122
+ const tokens = importing.getTokens();
94123
+ for (let i = 0; i + 2 < tokens.length; i++) {
94124
+ if (tokens[i].getStr().toUpperCase() === "PREFERRED"
94125
+ && tokens[i + 1].getStr().toUpperCase() === "PARAMETER") {
94126
+ return { start: tokens[i].getStart(), end: tokens[i + 2].getEnd() };
94127
+ }
94128
+ }
94129
+ return undefined;
94130
+ }
94131
+ /** The importing parameters that are neither OPTIONAL nor have a DEFAULT,
94132
+ * empty when every one of them may be left out. */
94133
+ mandatoryParameters(importing) {
94134
+ const ret = [];
94135
+ for (const param of importing.findDirectExpressions(Expressions.MethodParamOptional)) {
94136
+ const concat = param.concatTokens().toUpperCase();
94137
+ if (concat.endsWith(" OPTIONAL") || concat.includes(" DEFAULT ")) {
94138
+ continue;
94139
+ }
94140
+ ret.push(param);
94141
+ }
94142
+ return ret;
94143
+ }
94144
+ }
94145
+ exports.PreferredParameterIgnored = PreferredParameterIgnored;
94146
+ //# sourceMappingURL=preferred_parameter_ignored.js.map
94147
+
94148
+ /***/ },
94149
+
94429
94150
  /***/ "../core/build/src/rules/prefix_is_current_class.js"
94430
94151
  /*!**********************************************************!*\
94431
94152
  !*** ../core/build/src/rules/prefix_is_current_class.js ***!