@abaplint/core 2.102.67 → 2.102.69

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 (73) hide show
  1. package/build/abaplint.d.ts +12 -11
  2. package/build/src/abap/1_lexer/lexer.js +2 -1
  3. package/build/src/abap/1_lexer/tokens/{_token.js → abstract_token.js} +8 -7
  4. package/build/src/abap/1_lexer/tokens/at.js +3 -21
  5. package/build/src/abap/1_lexer/tokens/atw.js +11 -0
  6. package/build/src/abap/1_lexer/tokens/bracket_left.js +3 -21
  7. package/build/src/abap/1_lexer/tokens/bracket_leftw.js +11 -0
  8. package/build/src/abap/1_lexer/tokens/bracket_right.js +3 -21
  9. package/build/src/abap/1_lexer/tokens/bracket_rightw.js +11 -0
  10. package/build/src/abap/1_lexer/tokens/colon.js +2 -2
  11. package/build/src/abap/1_lexer/tokens/comment.js +2 -2
  12. package/build/src/abap/1_lexer/tokens/dash.js +3 -21
  13. package/build/src/abap/1_lexer/tokens/dashw.js +11 -0
  14. package/build/src/abap/1_lexer/tokens/identifier.js +2 -2
  15. package/build/src/abap/1_lexer/tokens/index.js +37 -6
  16. package/build/src/abap/1_lexer/tokens/instance_arrow.js +3 -21
  17. package/build/src/abap/1_lexer/tokens/instance_arroww.js +11 -0
  18. package/build/src/abap/1_lexer/tokens/paren_left.js +3 -21
  19. package/build/src/abap/1_lexer/tokens/paren_leftw.js +11 -0
  20. package/build/src/abap/1_lexer/tokens/paren_right.js +3 -21
  21. package/build/src/abap/1_lexer/tokens/paren_rightw.js +11 -0
  22. package/build/src/abap/1_lexer/tokens/plus.js +3 -21
  23. package/build/src/abap/1_lexer/tokens/plusw.js +11 -0
  24. package/build/src/abap/1_lexer/tokens/pragma.js +2 -2
  25. package/build/src/abap/1_lexer/tokens/punctuation.js +2 -2
  26. package/build/src/abap/1_lexer/tokens/static_arrow.js +3 -21
  27. package/build/src/abap/1_lexer/tokens/static_arroww.js +11 -0
  28. package/build/src/abap/1_lexer/tokens/string.js +3 -15
  29. package/build/src/abap/1_lexer/tokens/string_template.js +8 -0
  30. package/build/src/abap/1_lexer/tokens/string_template_begin.js +8 -0
  31. package/build/src/abap/1_lexer/tokens/string_template_end.js +8 -0
  32. package/build/src/abap/1_lexer/tokens/string_template_middle.js +8 -0
  33. package/build/src/abap/1_lexer/tokens/wat.js +11 -0
  34. package/build/src/abap/1_lexer/tokens/watw.js +11 -0
  35. package/build/src/abap/1_lexer/tokens/wbracket_left.js +11 -0
  36. package/build/src/abap/1_lexer/tokens/wbracket_leftw.js +11 -0
  37. package/build/src/abap/1_lexer/tokens/wbracket_right.js +11 -0
  38. package/build/src/abap/1_lexer/tokens/wbracket_rightw.js +11 -0
  39. package/build/src/abap/1_lexer/tokens/wdash.js +11 -0
  40. package/build/src/abap/1_lexer/tokens/wdashw.js +11 -0
  41. package/build/src/abap/1_lexer/tokens/winstance_arrow.js +11 -0
  42. package/build/src/abap/1_lexer/tokens/winstance_arroww.js +11 -0
  43. package/build/src/abap/1_lexer/tokens/wparen_left.js +11 -0
  44. package/build/src/abap/1_lexer/tokens/wparen_leftw.js +11 -0
  45. package/build/src/abap/1_lexer/tokens/wparen_right.js +11 -0
  46. package/build/src/abap/1_lexer/tokens/wparen_rightw.js +11 -0
  47. package/build/src/abap/1_lexer/tokens/wplus.js +11 -0
  48. package/build/src/abap/1_lexer/tokens/wplusw.js +11 -0
  49. package/build/src/abap/1_lexer/tokens/wstatic_arrow.js +11 -0
  50. package/build/src/abap/1_lexer/tokens/wstatic_arroww.js +11 -0
  51. package/build/src/abap/2_statements/expand_macros.js +3 -3
  52. package/build/src/abap/2_statements/expressions/sql_into_list.js +3 -2
  53. package/build/src/abap/nodes/statement_node.js +12 -8
  54. package/build/src/abap/types/class_definition.js +25 -0
  55. package/build/src/abap/types/interface_definition.js +17 -5
  56. package/build/src/index.js +4 -3
  57. package/build/src/issue.js +2 -1
  58. package/build/src/lsp/semantic.js +2 -1
  59. package/build/src/objects/rename/renamer_helper.js +2 -2
  60. package/build/src/position.js +1 -17
  61. package/build/src/pretty_printer/indent.js +3 -3
  62. package/build/src/pretty_printer/pretty_printer.js +2 -2
  63. package/build/src/registry.js +1 -1
  64. package/build/src/rules/downport.js +2 -1
  65. package/build/src/rules/expand_macros.js +2 -2
  66. package/build/src/rules/indentation.js +2 -1
  67. package/build/src/rules/keyword_case.js +2 -2
  68. package/build/src/rules/line_break_multiple_parameters.js +2 -2
  69. package/build/src/rules/many_parentheses.js +9 -3
  70. package/build/src/rules/max_one_statement.js +2 -2
  71. package/build/src/rules/unused_variables.js +8 -0
  72. package/build/src/virtual_position.js +21 -0
  73. package/package.json +3 -3
@@ -7,7 +7,7 @@ const _basic_rule_config_1 = require("./_basic_rule_config");
7
7
  const _irule_1 = require("./_irule");
8
8
  const edit_helper_1 = require("../edit_helper");
9
9
  const _statement_1 = require("../abap/2_statements/statements/_statement");
10
- const position_1 = require("../position");
10
+ const virtual_position_1 = require("../virtual_position");
11
11
  class ExpandMacrosConf extends _basic_rule_config_1.BasicRuleConfig {
12
12
  }
13
13
  exports.ExpandMacrosConf = ExpandMacrosConf;
@@ -51,7 +51,7 @@ _hello.`,
51
51
  let replace = "";
52
52
  for (let j = i + 1; j < statements.length; j++) {
53
53
  const sub = statements[j];
54
- if (sub.getFirstToken().getStart() instanceof position_1.VirtualPosition) {
54
+ if (sub.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
55
55
  if (sub.get() instanceof _statement_1.MacroCall) {
56
56
  continue;
57
57
  }
@@ -11,6 +11,7 @@ const Expressions = require("../abap/2_statements/expressions");
11
11
  const _irule_1 = require("./_irule");
12
12
  const ddic_1 = require("../ddic");
13
13
  const position_1 = require("../position");
14
+ const virtual_position_1 = require("../virtual_position");
14
15
  const edit_helper_1 = require("../edit_helper");
15
16
  class IndentationConf extends _basic_rule_config_1.BasicRuleConfig {
16
17
  constructor() {
@@ -72,7 +73,7 @@ class Indentation extends _abap_rule_1.ABAPRule {
72
73
  const ret = [];
73
74
  for (const statement of file.getStatements()) {
74
75
  const position = statement.getFirstToken().getStart();
75
- if (position instanceof position_1.VirtualPosition) {
76
+ if (position instanceof virtual_position_1.VirtualPosition) {
76
77
  continue;
77
78
  }
78
79
  const indent = expected.shift();
@@ -12,7 +12,7 @@ const Statements = require("../abap/2_statements/statements");
12
12
  const Expressions = require("../abap/2_statements/expressions");
13
13
  const _irule_1 = require("./_irule");
14
14
  const ddic_1 = require("../ddic");
15
- const position_1 = require("../position");
15
+ const virtual_position_1 = require("../virtual_position");
16
16
  const edit_helper_1 = require("../edit_helper");
17
17
  var KeywordCaseStyle;
18
18
  (function (KeywordCaseStyle) {
@@ -48,7 +48,7 @@ class Skip {
48
48
  if (get instanceof _statement_1.Unknown
49
49
  || get instanceof _statement_1.MacroContent
50
50
  || get instanceof _statement_1.MacroCall
51
- || statement.getFirstToken().getStart() instanceof position_1.VirtualPosition
51
+ || statement.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition
52
52
  || get instanceof _statement_1.Comment) {
53
53
  return true;
54
54
  }
@@ -7,7 +7,7 @@ const _basic_rule_config_1 = require("./_basic_rule_config");
7
7
  const Expressions = require("../abap/2_statements/expressions");
8
8
  const _irule_1 = require("./_irule");
9
9
  const edit_helper_1 = require("../edit_helper");
10
- const position_1 = require("../position");
10
+ const virtual_position_1 = require("../virtual_position");
11
11
  class LineBreakMultipleParametersConf extends _basic_rule_config_1.BasicRuleConfig {
12
12
  constructor() {
13
13
  super(...arguments);
@@ -45,7 +45,7 @@ class LineBreakMultipleParameters extends _abap_rule_1.ABAPRule {
45
45
  }
46
46
  for (const s of file.getStatements()) {
47
47
  for (const e of s.findAllExpressions(Expressions.ParameterListS)) {
48
- if (s.getFirstToken().getStart() instanceof position_1.VirtualPosition) {
48
+ if (s.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
49
49
  continue; // skip macro content
50
50
  }
51
51
  const parameters = e.findDirectExpressions(Expressions.ParameterS);
@@ -65,9 +65,15 @@ ENDIF.
65
65
  }
66
66
  if (cond[0].getChildren().length === 1) {
67
67
  const message = "Too many parentheses, simple";
68
- const fixText = sub.getChildren()[1].concatTokens();
69
- const fix = edit_helper_1.EditHelper.replaceRange(file, sub.getFirstToken().getStart(), sub.getLastToken().getEnd(), fixText);
70
- const issue = issue_1.Issue.atToken(file, sub.getFirstToken(), message, this.getMetadata().key, this.conf.severity, fix);
68
+ const children = sub.getChildren();
69
+ let startToken = sub.getFirstToken();
70
+ let fixText = sub.getChildren()[1].concatTokens();
71
+ if (startToken.getStr().toUpperCase() === "NOT") {
72
+ startToken = children[1].getFirstToken();
73
+ fixText = sub.getChildren()[2].concatTokens();
74
+ }
75
+ const fix = edit_helper_1.EditHelper.replaceRange(file, startToken.getStart(), sub.getLastToken().getEnd(), fixText);
76
+ const issue = issue_1.Issue.atToken(file, startToken, message, this.getMetadata().key, this.conf.severity, fix);
71
77
  issues.push(issue);
72
78
  }
73
79
  }
@@ -7,7 +7,7 @@ const _abap_rule_1 = require("./_abap_rule");
7
7
  const _basic_rule_config_1 = require("./_basic_rule_config");
8
8
  const edit_helper_1 = require("../edit_helper");
9
9
  const _irule_1 = require("./_irule");
10
- const position_1 = require("../position");
10
+ const virtual_position_1 = require("../virtual_position");
11
11
  class MaxOneStatementConf extends _basic_rule_config_1.BasicRuleConfig {
12
12
  }
13
13
  exports.MaxOneStatementConf = MaxOneStatementConf;
@@ -53,7 +53,7 @@ https://docs.abapopenchecks.org/checks/11/`,
53
53
  continue;
54
54
  }
55
55
  const pos = statement.getStart();
56
- if (pos instanceof position_1.VirtualPosition) {
56
+ if (pos instanceof virtual_position_1.VirtualPosition) {
57
57
  continue;
58
58
  }
59
59
  const row = pos.getRow();
@@ -76,6 +76,14 @@ Errors found in INCLUDES are reported for the main program.`,
76
76
  tags: [_irule_1.RuleTag.Quickfix],
77
77
  pragma: "##NEEDED",
78
78
  pseudoComment: "EC NEEDED",
79
+ badExample: `DATA: BEGIN OF blah1,
80
+ test TYPE string,
81
+ test2 TYPE string,
82
+ END OF blah1.`,
83
+ goodExample: `DATA: BEGIN OF blah2 ##NEEDED,
84
+ test TYPE string,
85
+ test2 TYPE string,
86
+ END OF blah2.`,
79
87
  };
80
88
  }
81
89
  getConfig() {
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VirtualPosition = void 0;
4
+ const position_1 = require("./position");
5
+ /** used for macro calls */
6
+ class VirtualPosition extends position_1.Position {
7
+ constructor(virtual, row, col) {
8
+ super(virtual.getRow(), virtual.getCol());
9
+ this.vrow = row;
10
+ this.vcol = col;
11
+ }
12
+ equals(p) {
13
+ if (!(p instanceof VirtualPosition)) {
14
+ return false;
15
+ }
16
+ const casted = p;
17
+ return super.equals(this) && this.vrow === casted.vrow && this.vcol === casted.vcol;
18
+ }
19
+ }
20
+ exports.VirtualPosition = VirtualPosition;
21
+ //# sourceMappingURL=virtual_position.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/core",
3
- "version": "2.102.67",
3
+ "version": "2.102.69",
4
4
  "description": "abaplint - Core API",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/abaplint.d.ts",
@@ -50,12 +50,12 @@
50
50
  },
51
51
  "homepage": "https://abaplint.org",
52
52
  "devDependencies": {
53
- "@microsoft/api-extractor": "^7.38.1",
53
+ "@microsoft/api-extractor": "^7.38.2",
54
54
  "@types/chai": "^4.3.9",
55
55
  "@types/mocha": "^10.0.3",
56
56
  "@types/node": "^20.8.10",
57
57
  "chai": "^4.3.10",
58
- "eslint": "^8.52.0",
58
+ "eslint": "^8.53.0",
59
59
  "mocha": "^10.2.0",
60
60
  "c8": "^8.0.1",
61
61
  "source-map-support": "^0.5.21",