@abaplint/transpiler-cli 2.13.15 → 2.13.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/build/bundle.js +141 -28
  2. package/package.json +3 -3
package/build/bundle.js CHANGED
@@ -7548,7 +7548,9 @@ class SQLFunction extends combi_1.Expression {
7548
7548
  const dats_add_months = (0, combi_1.ver)(version_1.Version.v754, (0, combi_1.seq)((0, combi_1.regex)(/^dats_add_months$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
7549
7549
  const ltrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^ltrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
7550
7550
  const rtrim = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^rtrim$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
7551
- return (0, combi_1.altPrio)(uuid, abs, ceil, floor, cast, div, mod, coalesce, concat, replace, length, lower, upper, round, concat_with_space, ltrim, rtrim, substring, dats_is_valid, dats_days_between, dats_add_days, dats_add_months);
7551
+ const right = (0, combi_1.ver)(version_1.Version.v750, (0, combi_1.seq)((0, combi_1.regex)(/^right$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
7552
+ const left = (0, combi_1.ver)(version_1.Version.v751, (0, combi_1.seq)((0, combi_1.regex)(/^left$/i), (0, combi_1.tok)(tokens_1.ParenLeftW), sql_function_input_1.SQLFunctionInput, commaParam, (0, combi_1.tok)(tokens_1.WParenRightW)));
7553
+ return (0, combi_1.altPrio)(uuid, abs, ceil, floor, cast, div, mod, coalesce, concat, replace, length, lower, upper, round, concat_with_space, ltrim, rtrim, right, left, substring, dats_is_valid, dats_days_between, dats_add_days, dats_add_months);
7552
7554
  }
7553
7555
  }
7554
7556
  exports.SQLFunction = SQLFunction;
@@ -22439,6 +22441,8 @@ var ScopeType;
22439
22441
  (function (ScopeType) {
22440
22442
  ScopeType["BuiltIn"] = "_builtin";
22441
22443
  ScopeType["Dummy"] = "_dummy";
22444
+ // definitions inside this one are local
22445
+ ScopeType["SelectionEvent"] = "selection_event";
22442
22446
  ScopeType["Global"] = "_global";
22443
22447
  ScopeType["Program"] = "_program";
22444
22448
  ScopeType["TypePool"] = "_type_pool";
@@ -22920,7 +22924,15 @@ class TypeUtils {
22920
22924
  }
22921
22925
  }
22922
22926
  else if (source instanceof basic_1.TableType) {
22923
- if (target instanceof basic_1.TableType) {
22927
+ if (source.getRowType() instanceof basic_1.AnyType) {
22928
+ // then its a generic table, todo: add top level generic table type?
22929
+ return true;
22930
+ }
22931
+ else if (target instanceof basic_1.TableType && target.getRowType() instanceof basic_1.AnyType) {
22932
+ // then its a generic table, todo: add top level generic table type?
22933
+ return true;
22934
+ }
22935
+ else if (target instanceof basic_1.TableType) {
22924
22936
  const sourceKeyType = source.getOptions().keyType;
22925
22937
  const targetKeyType = target.getOptions().keyType;
22926
22938
  if (sourceKeyType !== targetKeyType
@@ -27500,7 +27512,7 @@ class Select {
27500
27512
  if (type === undefined) {
27501
27513
  return basic_1.VoidType.get("SELECT_todo6");
27502
27514
  }
27503
- components.push({ name: field.code, type });
27515
+ components.push({ name: field.as || field.code, type });
27504
27516
  }
27505
27517
  return new basic_1.TableType(new basic_1.StructureType(components), tableOptions, undefined);
27506
27518
  }
@@ -27512,6 +27524,9 @@ class Select {
27512
27524
  const ret = [];
27513
27525
  if (node.get() instanceof Expressions.SelectLoop) {
27514
27526
  expr = node.findFirstExpression(Expressions.SQLFieldListLoop);
27527
+ if (expr === undefined) {
27528
+ expr = node;
27529
+ }
27515
27530
  }
27516
27531
  else {
27517
27532
  expr = node.findFirstExpression(Expressions.SQLFieldList);
@@ -27519,7 +27534,8 @@ class Select {
27519
27534
  if (((_a = expr === null || expr === void 0 ? void 0 : expr.getFirstChild()) === null || _a === void 0 ? void 0 : _a.get()) instanceof Expressions.Dynamic) {
27520
27535
  dynamic_1.Dynamic.runSyntax(expr.getFirstChild(), input);
27521
27536
  }
27522
- for (const field of (expr === null || expr === void 0 ? void 0 : expr.findDirectExpressionsMulti([Expressions.SQLField, Expressions.SQLFieldName])) || []) {
27537
+ // eslint-disable-next-line max-len
27538
+ for (const field of (expr === null || expr === void 0 ? void 0 : expr.findDirectExpressionsMulti([Expressions.SQLField, Expressions.SQLFieldName, Expressions.SQLAggregation])) || []) {
27523
27539
  let code = field.concatTokens().toUpperCase();
27524
27540
  const as = ((_b = field.findDirectExpression(Expressions.SQLAsName)) === null || _b === void 0 ? void 0 : _b.concatTokens()) || "";
27525
27541
  if (as !== "") {
@@ -27608,6 +27624,7 @@ const assert_error_1 = __webpack_require__(/*! ../assert_error */ "./node_module
27608
27624
  // TODO: refactor all these method parameters to objects, this is getting messy
27609
27625
  class Source {
27610
27626
  static runSyntax(node, input, targetType, writeReference = false, allowGenericDeference = false) {
27627
+ var _a;
27611
27628
  if (node === undefined) {
27612
27629
  return undefined;
27613
27630
  }
@@ -27685,12 +27702,13 @@ class Source {
27685
27702
  {
27686
27703
  const foundType = this.determineType(node, input, targetType);
27687
27704
  const bodyType = conv_body_1.ConvBody.runSyntax(node.findDirectExpression(Expressions.ConvBody), input);
27705
+ const inferred = (_a = node.findDirectExpression(Expressions.TypeNameOrInfer)) === null || _a === void 0 ? void 0 : _a.concatTokens();
27688
27706
  if (new _type_utils_1.TypeUtils(input.scope).isConvable(foundType, bodyType) === false) {
27689
27707
  const message = `CONV: Types not compatible, ${foundType === null || foundType === void 0 ? void 0 : foundType.constructor.name}, ${bodyType === null || bodyType === void 0 ? void 0 : bodyType.constructor.name}`;
27690
27708
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
27691
27709
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
27692
27710
  }
27693
- else if (foundType === null || foundType === void 0 ? void 0 : foundType.isGeneric()) {
27711
+ else if ((foundType === null || foundType === void 0 ? void 0 : foundType.isGeneric()) && inferred !== "#") {
27694
27712
  const message = "Cannot CONV to generic type";
27695
27713
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
27696
27714
  return basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey);
@@ -31706,6 +31724,42 @@ exports.GetParameter = GetParameter;
31706
31724
 
31707
31725
  /***/ },
31708
31726
 
31727
+ /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_pf_status.js"
31728
+ /*!*****************************************************************************************!*\
31729
+ !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_pf_status.js ***!
31730
+ \*****************************************************************************************/
31731
+ (__unused_webpack_module, exports, __webpack_require__) {
31732
+
31733
+ "use strict";
31734
+
31735
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
31736
+ exports.GetPFStatus = void 0;
31737
+ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
31738
+ const source_1 = __webpack_require__(/*! ../expressions/source */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/source.js");
31739
+ const target_1 = __webpack_require__(/*! ../expressions/target */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js");
31740
+ const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
31741
+ const inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js");
31742
+ class GetPFStatus {
31743
+ runSyntax(node, input) {
31744
+ for (const s of node.findDirectExpressions(Expressions.Source)) {
31745
+ source_1.Source.runSyntax(s, input);
31746
+ }
31747
+ for (const t of node.findDirectExpressions(Expressions.Target)) {
31748
+ const inline = t === null || t === void 0 ? void 0 : t.findDirectExpression(Expressions.InlineData);
31749
+ if (inline) {
31750
+ inline_data_1.InlineData.runSyntax(inline, input, basic_1.VoidType.get("GET_PF_STATUS"));
31751
+ }
31752
+ else {
31753
+ target_1.Target.runSyntax(t, input);
31754
+ }
31755
+ }
31756
+ }
31757
+ }
31758
+ exports.GetPFStatus = GetPFStatus;
31759
+ //# sourceMappingURL=get_pf_status.js.map
31760
+
31761
+ /***/ },
31762
+
31709
31763
  /***/ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js"
31710
31764
  /*!*****************************************************************************************!*\
31711
31765
  !*** ./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js ***!
@@ -32996,16 +33050,21 @@ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modu
32996
33050
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
32997
33051
  class Parameter {
32998
33052
  runSyntax(node, input) {
32999
- var _a;
33000
- const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
33053
+ const nameExpression = node.findFirstExpression(Expressions.FieldSub);
33054
+ if (nameExpression === undefined) {
33055
+ return;
33056
+ }
33057
+ let nameToken = nameExpression.getFirstToken();
33058
+ // FieldSub can include dashes and optional length, eg p-tcode or p_table(4).
33059
+ if (nameExpression.getChildren().length > 1) {
33060
+ const fullName = nameExpression.concatTokens().replace(/\(.+$/, "").replace(/\[\]$/, "");
33061
+ nameToken = new tokens_1.Identifier(nameToken.getStart(), fullName);
33062
+ }
33001
33063
  if (nameToken && nameToken.getStr().length > 8) {
33002
33064
  const message = "Parameter name too long, " + nameToken.getStr();
33003
33065
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
33004
33066
  return;
33005
33067
  }
33006
- else if (nameToken === undefined) {
33007
- return;
33008
- }
33009
33068
  if (node.findDirectTokenByText("RADIOBUTTON") && node.findDirectTokenByText("LENGTH")) {
33010
33069
  const message = "RADIOBUTTON and LENGTH not possible together";
33011
33070
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message));
@@ -33812,23 +33871,28 @@ const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modu
33812
33871
  const tokens_1 = __webpack_require__(/*! ../../1_lexer/tokens */ "./node_modules/@abaplint/core/build/src/abap/1_lexer/tokens/index.js");
33813
33872
  class SelectOption {
33814
33873
  runSyntax(node, input) {
33815
- var _a;
33816
- const nameToken = (_a = node.findFirstExpression(Expressions.FieldSub)) === null || _a === void 0 ? void 0 : _a.getFirstToken();
33874
+ const nameExpression = node.findFirstExpression(Expressions.FieldSub);
33875
+ if (nameExpression === undefined) {
33876
+ return;
33877
+ }
33878
+ let nameToken = nameExpression.getFirstToken();
33879
+ // FieldSub can include dashes and optional length, eg s-matnr or s_name(10).
33880
+ if (nameExpression.getChildren().length > 1) {
33881
+ const fullName = nameExpression.concatTokens().replace(/\(.+$/, "").replace(/\[\]$/, "");
33882
+ nameToken = new tokens_1.Identifier(nameToken.getStart(), fullName);
33883
+ }
33817
33884
  if (nameToken && nameToken.getStr().length > 8) {
33818
33885
  const message = "Select-option name too long, " + nameToken.getStr();
33819
33886
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, message));
33820
33887
  return;
33821
33888
  }
33822
- else if (nameToken === undefined) {
33823
- return;
33824
- }
33825
33889
  for (const d of node.findDirectExpressions(Expressions.Dynamic)) {
33826
33890
  dynamic_1.Dynamic.runSyntax(d, input);
33827
33891
  input.scope.addIdentifier(new _typed_identifier_1.TypedIdentifier(nameToken, input.filename, basic_1.VoidType.get("DYNAMIC_SELECT_OPTION")));
33828
33892
  return;
33829
33893
  }
33830
- const nameExpression = node.findFirstExpression(Expressions.FieldChain);
33831
- let found = new basic_types_1.BasicTypes(input).resolveLikeName(nameExpression);
33894
+ const nameChain = node.findFirstExpression(Expressions.FieldChain);
33895
+ let found = new basic_types_1.BasicTypes(input).resolveLikeName(nameChain);
33832
33896
  if (found) {
33833
33897
  if (found instanceof basic_1.StructureType) {
33834
33898
  let length = 0;
@@ -34751,6 +34815,7 @@ const Expressions = __webpack_require__(/*! ../../2_statements/expressions */ ".
34751
34815
  const basic_1 = __webpack_require__(/*! ../../types/basic */ "./node_modules/@abaplint/core/build/src/abap/types/basic/index.js");
34752
34816
  const inline_data_1 = __webpack_require__(/*! ../expressions/inline_data */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/inline_data.js");
34753
34817
  const target_1 = __webpack_require__(/*! ../expressions/target */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/expressions/target.js");
34818
+ const _reference_1 = __webpack_require__(/*! ../_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_reference.js");
34754
34819
  const _syntax_input_1 = __webpack_require__(/*! ../_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
34755
34820
  class WhenType {
34756
34821
  runSyntax(node, input) {
@@ -34760,19 +34825,21 @@ class WhenType {
34760
34825
  return undefined;
34761
34826
  }
34762
34827
  let type = undefined;
34763
- const className = nameToken.getStr();
34764
- const found = input.scope.findObjectDefinition(className);
34765
- if (found === undefined && input.scope.getDDIC().inErrorNamespace(className) === false) {
34828
+ const className = nameToken.getStr().toUpperCase();
34829
+ const found = input.scope.existsObject(className);
34830
+ if (found === null || found === void 0 ? void 0 : found.id) {
34831
+ type = new basic_1.ObjectReferenceType(found.id);
34832
+ input.scope.addReference(nameToken, found.id, _reference_1.ReferenceType.ObjectOrientedReference, input.filename);
34833
+ }
34834
+ else if (input.scope.getDDIC().inErrorNamespace(className) === false) {
34766
34835
  type = basic_1.VoidType.get(className);
34836
+ input.scope.addReference(nameToken, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename, { ooName: className, ooType: "Void" });
34767
34837
  }
34768
- else if (found === undefined) {
34838
+ else {
34769
34839
  const message = "Class " + className + " not found";
34770
34840
  input.issues.push((0, _syntax_input_1.syntaxIssue)(input, nameToken, message));
34771
34841
  return;
34772
34842
  }
34773
- else {
34774
- type = new basic_1.ObjectReferenceType(found);
34775
- }
34776
34843
  const target = node === null || node === void 0 ? void 0 : node.findDirectExpression(Expressions.Target);
34777
34844
  const inline = target === null || target === void 0 ? void 0 : target.findDirectExpression(Expressions.InlineData);
34778
34845
  if (inline) {
@@ -35523,6 +35590,7 @@ const read_report_1 = __webpack_require__(/*! ./statements/read_report */ "./nod
35523
35590
  const authority_check_1 = __webpack_require__(/*! ./statements/authority_check */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/authority_check.js");
35524
35591
  const insert_report_1 = __webpack_require__(/*! ./statements/insert_report */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_report.js");
35525
35592
  const get_reference_1 = __webpack_require__(/*! ./statements/get_reference */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_reference.js");
35593
+ const get_pf_status_1 = __webpack_require__(/*! ./statements/get_pf_status */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/get_pf_status.js");
35526
35594
  const insert_database_1 = __webpack_require__(/*! ./statements/insert_database */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/insert_database.js");
35527
35595
  const delete_database_1 = __webpack_require__(/*! ./statements/delete_database */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/delete_database.js");
35528
35596
  const import_dynpro_1 = __webpack_require__(/*! ./statements/import_dynpro */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/import_dynpro.js");
@@ -35591,6 +35659,7 @@ const commit_entities_1 = __webpack_require__(/*! ./statements/commit_entities *
35591
35659
  const _syntax_input_1 = __webpack_require__(/*! ./_syntax_input */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/_syntax_input.js");
35592
35660
  const assert_error_1 = __webpack_require__(/*! ./assert_error */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/assert_error.js");
35593
35661
  const field_group_1 = __webpack_require__(/*! ./statements/field_group */ "./node_modules/@abaplint/core/build/src/abap/5_syntax/statements/field_group.js");
35662
+ const stuff_1 = __webpack_require__(/*! ../../stuff */ "./node_modules/@abaplint/core/build/src/stuff.js");
35594
35663
  // -----------------------------------
35595
35664
  const map = {};
35596
35665
  function addToMap(handler) {
@@ -35676,6 +35745,7 @@ if (Object.keys(map).length === 0) {
35676
35745
  addToMap(new if_1.If());
35677
35746
  addToMap(new log_point_1.LogPoint());
35678
35747
  addToMap(new while_1.While());
35748
+ addToMap(new get_pf_status_1.GetPFStatus());
35679
35749
  addToMap(new with_1.With());
35680
35750
  addToMap(new with_loop_1.WithLoop());
35681
35751
  addToMap(new call_transformation_1.CallTransformation());
@@ -35844,6 +35914,9 @@ class SyntaxLogic {
35844
35914
  updateScopeStructure(node) {
35845
35915
  const filename = this.currentFile.getFilename();
35846
35916
  const stru = node.get();
35917
+ if (this.scope.getType() === _scope_type_1.ScopeType.SelectionEvent && this.isSelectionEventBoundaryStructure(stru)) {
35918
+ this.scope.pop(node.getFirstToken().getStart());
35919
+ }
35847
35920
  const input = {
35848
35921
  scope: this.scope,
35849
35922
  filename,
@@ -35883,6 +35956,7 @@ class SyntaxLogic {
35883
35956
  updateScopeStatement(node) {
35884
35957
  const filename = this.currentFile.getFilename();
35885
35958
  const s = node.get();
35959
+ this.updateSelectionEventScope(node);
35886
35960
  const input = {
35887
35961
  scope: this.scope,
35888
35962
  filename,
@@ -35928,6 +36002,28 @@ class SyntaxLogic {
35928
36002
  }
35929
36003
  }
35930
36004
  }
36005
+ updateSelectionEventScope(node) {
36006
+ const statement = node.get();
36007
+ if (this.scope.getType() === _scope_type_1.ScopeType.SelectionEvent && this.isSelectionEventBoundary(statement)) {
36008
+ this.scope.pop(node.getFirstToken().getStart());
36009
+ }
36010
+ if (this.opensSelectionEventScope(statement)) {
36011
+ this.scope.push(_scope_type_1.ScopeType.SelectionEvent, statement.constructor.name, node.getFirstToken().getStart(), this.currentFile.getFilename());
36012
+ }
36013
+ }
36014
+ opensSelectionEventScope(statement) {
36015
+ return statement instanceof Statements.AtSelectionScreen;
36016
+ }
36017
+ isSelectionEventBoundary(statement) {
36018
+ return stuff_1.SELECTION_EVENTS.some(event => statement instanceof event)
36019
+ || statement instanceof Statements.Form
36020
+ || statement instanceof Statements.Module
36021
+ || statement instanceof Statements.FunctionModule;
36022
+ }
36023
+ isSelectionEventBoundaryStructure(structure) {
36024
+ return structure instanceof Structures.ClassDefinition
36025
+ || structure instanceof Structures.Interface;
36026
+ }
35931
36027
  }
35932
36028
  exports.SyntaxLogic = SyntaxLogic;
35933
36029
  //# sourceMappingURL=syntax.js.map
@@ -39252,7 +39348,7 @@ class ClassDefinition extends _identifier_1.Identifier {
39252
39348
  input.scope.addReference(token, undefined, _reference_1.ReferenceType.ObjectOrientedVoidReference, input.filename);
39253
39349
  }
39254
39350
  else {
39255
- input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, name.toUpperCase() + " does not exist"));
39351
+ input.issues.push((0, _syntax_input_1.syntaxIssue)(input, token, "Friend class " + name.toUpperCase() + " does not exist"));
39256
39352
  }
39257
39353
  result.push(name);
39258
39354
  }
@@ -55053,7 +55149,7 @@ class Registry {
55053
55149
  }
55054
55150
  static abaplintVersion() {
55055
55151
  // magic, see build script "version.sh"
55056
- return "2.119.1";
55152
+ return "2.119.10";
55057
55153
  }
55058
55154
  getDDICReferences() {
55059
55155
  return this.ddicReferences;
@@ -67589,6 +67685,7 @@ const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./
67589
67685
  const _abap_rule_1 = __webpack_require__(/*! ./_abap_rule */ "./node_modules/@abaplint/core/build/src/rules/_abap_rule.js");
67590
67686
  const Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
67591
67687
  const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
67688
+ const edit_helper_1 = __webpack_require__(/*! ../edit_helper */ "./node_modules/@abaplint/core/build/src/edit_helper.js");
67592
67689
  class KeepSingleParameterCallsOnOneLineConf extends _basic_rule_config_1.BasicRuleConfig {
67593
67690
  constructor() {
67594
67691
  super(...arguments);
@@ -67608,7 +67705,7 @@ class KeepSingleParameterCallsOnOneLine extends _abap_rule_1.ABAPRule {
67608
67705
  title: "Keep single parameters on one line",
67609
67706
  shortDescription: `Keep single parameter calls on one line`,
67610
67707
  extendedInformation: `https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#keep-single-parameter-calls-on-one-line`,
67611
- tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile],
67708
+ tags: [_irule_1.RuleTag.Whitespace, _irule_1.RuleTag.Styleguide, _irule_1.RuleTag.SingleFile, _irule_1.RuleTag.Quickfix],
67612
67709
  badExample: `call_method(\n 2 ).`,
67613
67710
  goodExample: `call_method( 2 ).`,
67614
67711
  };
@@ -67684,7 +67781,8 @@ class KeepSingleParameterCallsOnOneLine extends _abap_rule_1.ABAPRule {
67684
67781
  }
67685
67782
  }
67686
67783
  const message = "Keep single parameter on one line";
67687
- return [issue_1.Issue.atToken(file, c.getFirstToken(), message, this.getMetadata().key, this.conf.severity)];
67784
+ const fix = edit_helper_1.EditHelper.replaceRange(file, c.getFirstToken().getStart(), c.getLastToken().getEnd(), c.concatTokens());
67785
+ return [issue_1.Issue.atToken(file, c.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix)];
67688
67786
  }
67689
67787
  return [];
67690
67788
  }
@@ -68775,6 +68873,7 @@ const issue_1 = __webpack_require__(/*! ../issue */ "./node_modules/@abaplint/co
68775
68873
  const _basic_rule_config_1 = __webpack_require__(/*! ./_basic_rule_config */ "./node_modules/@abaplint/core/build/src/rules/_basic_rule_config.js");
68776
68874
  const Objects = __webpack_require__(/*! ../objects */ "./node_modules/@abaplint/core/build/src/objects/index.js");
68777
68875
  const _abap_object_1 = __webpack_require__(/*! ../objects/_abap_object */ "./node_modules/@abaplint/core/build/src/objects/_abap_object.js");
68876
+ const _irule_1 = __webpack_require__(/*! ./_irule */ "./node_modules/@abaplint/core/build/src/rules/_irule.js");
68778
68877
  const Statements = __webpack_require__(/*! ../abap/2_statements/statements */ "./node_modules/@abaplint/core/build/src/abap/2_statements/statements/index.js");
68779
68878
  const Expressions = __webpack_require__(/*! ../abap/2_statements/expressions */ "./node_modules/@abaplint/core/build/src/abap/2_statements/expressions/index.js");
68780
68879
  const position_1 = __webpack_require__(/*! ../position */ "./node_modules/@abaplint/core/build/src/position.js");
@@ -68792,6 +68891,7 @@ class MainFileContents {
68792
68891
  key: "main_file_contents",
68793
68892
  title: "Main file contents",
68794
68893
  shortDescription: `Checks related to report declarations.`,
68894
+ tags: [_irule_1.RuleTag.Syntax],
68795
68895
  extendedInformation: `Does not run if the target version is Cloud
68796
68896
 
68797
68897
  * PROGs must begin with "REPORT <name>." or "PROGRAM <name>.
@@ -72552,6 +72652,19 @@ This rule makes sure the spaces are consistently required across the language.`,
72552
72652
  return issues;
72553
72653
  }
72554
72654
  missingSpace(statement) {
72655
+ {
72656
+ const tokens = statement.getTokens();
72657
+ for (let i = 1; i < tokens.length; i++) {
72658
+ const prev = tokens[i - 1];
72659
+ const current = tokens[i];
72660
+ if (prev.getStr() === ")"
72661
+ && current.getStr() === "="
72662
+ && prev.getRow() === current.getRow()
72663
+ && prev.getEnd().getCol() === current.getStart().getCol()) {
72664
+ return current.getStart();
72665
+ }
72666
+ }
72667
+ }
72555
72668
  const found = statement.findAllExpressionsMulti([
72556
72669
  Expressions.CondSub, Expressions.SQLCond, Expressions.ValueBodyLine,
72557
72670
  Expressions.NewObject, Expressions.Cond, Expressions.ComponentCond,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.13.15",
3
+ "version": "2.13.16",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -27,8 +27,8 @@
27
27
  "author": "abaplint",
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
- "@abaplint/core": "^2.119.1",
31
- "@abaplint/transpiler": "^2.13.15",
30
+ "@abaplint/core": "^2.119.10",
31
+ "@abaplint/transpiler": "^2.13.16",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^24.12.2",
34
34
  "@types/progress": "^2.0.7",