@abaplint/core 2.102.66 → 2.102.68
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.
- package/build/abaplint.d.ts +2 -1
- package/build/src/abap/1_lexer/lexer.js +2 -1
- package/build/src/abap/1_lexer/tokens/{_token.js → abstract_token.js} +8 -7
- package/build/src/abap/1_lexer/tokens/at.js +3 -21
- package/build/src/abap/1_lexer/tokens/atw.js +11 -0
- package/build/src/abap/1_lexer/tokens/bracket_left.js +5 -5
- package/build/src/abap/1_lexer/tokens/bracket_right.js +5 -5
- package/build/src/abap/1_lexer/tokens/colon.js +2 -2
- package/build/src/abap/1_lexer/tokens/comment.js +2 -2
- package/build/src/abap/1_lexer/tokens/dash.js +5 -5
- package/build/src/abap/1_lexer/tokens/identifier.js +2 -2
- package/build/src/abap/1_lexer/tokens/index.js +3 -0
- package/build/src/abap/1_lexer/tokens/instance_arrow.js +5 -5
- package/build/src/abap/1_lexer/tokens/paren_left.js +5 -5
- package/build/src/abap/1_lexer/tokens/paren_right.js +5 -5
- package/build/src/abap/1_lexer/tokens/plus.js +5 -5
- package/build/src/abap/1_lexer/tokens/pragma.js +2 -2
- package/build/src/abap/1_lexer/tokens/punctuation.js +2 -2
- package/build/src/abap/1_lexer/tokens/static_arrow.js +5 -5
- package/build/src/abap/1_lexer/tokens/string.js +6 -6
- package/build/src/abap/1_lexer/tokens/wat.js +11 -0
- package/build/src/abap/1_lexer/tokens/watw.js +11 -0
- package/build/src/abap/2_statements/expand_macros.js +3 -3
- package/build/src/abap/5_syntax/expressions/reduce_body.js +6 -1
- package/build/src/abap/5_syntax/expressions/string_template.js +1 -1
- package/build/src/abap/types/class_definition.js +25 -0
- package/build/src/files/_abstract_file.js +11 -4
- package/build/src/index.js +4 -3
- package/build/src/issue.js +2 -1
- package/build/src/lsp/semantic.js +2 -1
- package/build/src/objects/rename/renamer_helper.js +2 -2
- package/build/src/position.js +1 -17
- package/build/src/pretty_printer/indent.js +3 -3
- package/build/src/pretty_printer/pretty_printer.js +2 -2
- package/build/src/registry.js +1 -1
- package/build/src/rules/downport.js +2 -1
- package/build/src/rules/expand_macros.js +2 -2
- package/build/src/rules/indentation.js +2 -1
- package/build/src/rules/keyword_case.js +2 -2
- package/build/src/rules/line_break_multiple_parameters.js +2 -2
- package/build/src/rules/many_parentheses.js +9 -3
- package/build/src/rules/max_one_statement.js +2 -2
- package/build/src/virtual_position.js +21 -0
- package/package.json +1 -1
package/build/abaplint.d.ts
CHANGED
|
@@ -1001,6 +1001,7 @@ declare class ClassDefinition_3 extends Identifier implements IClassDefinition {
|
|
|
1001
1001
|
isAbstract(): boolean;
|
|
1002
1002
|
isSharedMemory(): boolean;
|
|
1003
1003
|
private findSuper;
|
|
1004
|
+
private checkMethodsFromSuperClasses;
|
|
1004
1005
|
private findFriends;
|
|
1005
1006
|
private addReference;
|
|
1006
1007
|
private parse;
|
|
@@ -6314,8 +6315,8 @@ declare class TokenNodeRegex extends TokenNode {
|
|
|
6314
6315
|
declare namespace Tokens {
|
|
6315
6316
|
export {
|
|
6316
6317
|
At_3 as At,
|
|
6317
|
-
WAt,
|
|
6318
6318
|
AtW,
|
|
6319
|
+
WAt,
|
|
6319
6320
|
WAtW,
|
|
6320
6321
|
BracketLeft,
|
|
6321
6322
|
WBracketLeft,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Lexer = void 0;
|
|
4
4
|
const position_1 = require("../../position");
|
|
5
|
+
const virtual_position_1 = require("../../virtual_position");
|
|
5
6
|
const tokens_1 = require("./tokens");
|
|
6
7
|
class Buffer {
|
|
7
8
|
constructor() {
|
|
@@ -127,7 +128,7 @@ class Lexer {
|
|
|
127
128
|
}
|
|
128
129
|
let pos = new position_1.Position(row, col - s.length);
|
|
129
130
|
if (this.virtual) {
|
|
130
|
-
pos = new
|
|
131
|
+
pos = new virtual_position_1.VirtualPosition(this.virtual, pos.getRow(), pos.getCol());
|
|
131
132
|
}
|
|
132
133
|
let tok = undefined;
|
|
133
134
|
if (this.m === this.ModeComment) {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AbstractToken = void 0;
|
|
4
4
|
const position_1 = require("../../../position");
|
|
5
|
-
class
|
|
6
|
-
[Symbol.for("debug.description")]() {
|
|
7
|
-
return `${this.constructor.name} ${this.str}`;
|
|
8
|
-
}
|
|
5
|
+
class AbstractToken {
|
|
9
6
|
constructor(start, str) {
|
|
10
7
|
this.start = start;
|
|
11
8
|
this.str = str;
|
|
12
9
|
}
|
|
10
|
+
// special function, for debugging purposes, see https://github.com/abaplint/abaplint/pull/3137
|
|
11
|
+
[Symbol.for("debug.description")]() {
|
|
12
|
+
return `${this.constructor.name} ${this.str}`;
|
|
13
|
+
}
|
|
13
14
|
getStr() {
|
|
14
15
|
return this.str;
|
|
15
16
|
}
|
|
@@ -26,5 +27,5 @@ class Token {
|
|
|
26
27
|
return new position_1.Position(this.start.getRow(), this.start.getCol() + this.str.length);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
exports.
|
|
30
|
-
//# sourceMappingURL=
|
|
30
|
+
exports.AbstractToken = AbstractToken;
|
|
31
|
+
//# sourceMappingURL=abstract_token.js.map
|
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
class At extends
|
|
3
|
+
exports.At = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class At extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "@";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.At = At;
|
|
11
|
-
class WAt extends _token_1.Token {
|
|
12
|
-
static railroad() {
|
|
13
|
-
return " @";
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.WAt = WAt;
|
|
17
|
-
class AtW extends _token_1.Token {
|
|
18
|
-
static railroad() {
|
|
19
|
-
return "@ ";
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.AtW = AtW;
|
|
23
|
-
class WAtW extends _token_1.Token {
|
|
24
|
-
static railroad() {
|
|
25
|
-
return " @ ";
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.WAtW = WAtW;
|
|
29
11
|
//# sourceMappingURL=at.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AtW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class AtW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return "@ ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.AtW = AtW;
|
|
11
|
+
//# sourceMappingURL=atw.js.map
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WBracketLeftW = exports.BracketLeftW = exports.WBracketLeft = exports.BracketLeft = void 0;
|
|
4
|
-
const
|
|
5
|
-
class BracketLeft extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class BracketLeft extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "[";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.BracketLeft = BracketLeft;
|
|
11
|
-
class WBracketLeft extends
|
|
11
|
+
class WBracketLeft extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " [";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WBracketLeft = WBracketLeft;
|
|
17
|
-
class BracketLeftW extends
|
|
17
|
+
class BracketLeftW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "[ ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.BracketLeftW = BracketLeftW;
|
|
23
|
-
class WBracketLeftW extends
|
|
23
|
+
class WBracketLeftW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " [ ";
|
|
26
26
|
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WBracketRightW = exports.BracketRightW = exports.WBracketRight = exports.BracketRight = void 0;
|
|
4
|
-
const
|
|
5
|
-
class BracketRight extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class BracketRight extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "]";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.BracketRight = BracketRight;
|
|
11
|
-
class WBracketRight extends
|
|
11
|
+
class WBracketRight extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " ]";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WBracketRight = WBracketRight;
|
|
17
|
-
class BracketRightW extends
|
|
17
|
+
class BracketRightW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "] ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.BracketRightW = BracketRightW;
|
|
23
|
-
class WBracketRightW extends
|
|
23
|
+
class WBracketRightW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " ] ";
|
|
26
26
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Colon = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Colon extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Colon extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.Colon = Colon;
|
|
8
8
|
//# sourceMappingURL=colon.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Comment = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Comment extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Comment extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.Comment = Comment;
|
|
8
8
|
//# sourceMappingURL=comment.js.map
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WDashW = exports.DashW = exports.WDash = exports.Dash = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Dash extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Dash extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "-";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.Dash = Dash;
|
|
11
|
-
class WDash extends
|
|
11
|
+
class WDash extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " -";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WDash = WDash;
|
|
17
|
-
class DashW extends
|
|
17
|
+
class DashW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "- ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.DashW = DashW;
|
|
23
|
-
class WDashW extends
|
|
23
|
+
class WDashW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " - ";
|
|
26
26
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Identifier = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Identifier extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Identifier extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.Identifier = Identifier;
|
|
8
8
|
//# sourceMappingURL=identifier.js.map
|
|
@@ -15,6 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./at"), exports);
|
|
18
|
+
__exportStar(require("./atw"), exports);
|
|
19
|
+
__exportStar(require("./wat"), exports);
|
|
20
|
+
__exportStar(require("./watw"), exports);
|
|
18
21
|
__exportStar(require("./bracket_left"), exports);
|
|
19
22
|
__exportStar(require("./bracket_right"), exports);
|
|
20
23
|
__exportStar(require("./colon"), exports);
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WInstanceArrowW = exports.InstanceArrowW = exports.WInstanceArrow = exports.InstanceArrow = void 0;
|
|
4
|
-
const
|
|
5
|
-
class InstanceArrow extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class InstanceArrow extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "->";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.InstanceArrow = InstanceArrow;
|
|
11
|
-
class WInstanceArrow extends
|
|
11
|
+
class WInstanceArrow extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " ->";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WInstanceArrow = WInstanceArrow;
|
|
17
|
-
class InstanceArrowW extends
|
|
17
|
+
class InstanceArrowW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "-> ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.InstanceArrowW = InstanceArrowW;
|
|
23
|
-
class WInstanceArrowW extends
|
|
23
|
+
class WInstanceArrowW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " -> ";
|
|
26
26
|
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WParenLeftW = exports.ParenLeftW = exports.WParenLeft = exports.ParenLeft = void 0;
|
|
4
|
-
const
|
|
5
|
-
class ParenLeft extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class ParenLeft extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "(";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.ParenLeft = ParenLeft;
|
|
11
|
-
class WParenLeft extends
|
|
11
|
+
class WParenLeft extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " (";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WParenLeft = WParenLeft;
|
|
17
|
-
class ParenLeftW extends
|
|
17
|
+
class ParenLeftW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "( ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.ParenLeftW = ParenLeftW;
|
|
23
|
-
class WParenLeftW extends
|
|
23
|
+
class WParenLeftW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " ( ";
|
|
26
26
|
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WParenRightW = exports.ParenRightW = exports.WParenRight = exports.ParenRight = void 0;
|
|
4
|
-
const
|
|
5
|
-
class ParenRight extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class ParenRight extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return ")";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.ParenRight = ParenRight;
|
|
11
|
-
class WParenRight extends
|
|
11
|
+
class WParenRight extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " )";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WParenRight = WParenRight;
|
|
17
|
-
class ParenRightW extends
|
|
17
|
+
class ParenRightW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return ") ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.ParenRightW = ParenRightW;
|
|
23
|
-
class WParenRightW extends
|
|
23
|
+
class WParenRightW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " ) ";
|
|
26
26
|
}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WPlusW = exports.PlusW = exports.WPlus = exports.Plus = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Plus extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Plus extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "+";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.Plus = Plus;
|
|
11
|
-
class WPlus extends
|
|
11
|
+
class WPlus extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " +";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WPlus = WPlus;
|
|
17
|
-
class PlusW extends
|
|
17
|
+
class PlusW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "+ ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.PlusW = PlusW;
|
|
23
|
-
class WPlusW extends
|
|
23
|
+
class WPlusW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " + ";
|
|
26
26
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Pragma = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Pragma extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Pragma extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.Pragma = Pragma;
|
|
8
8
|
//# sourceMappingURL=pragma.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Punctuation = void 0;
|
|
4
|
-
const
|
|
5
|
-
class Punctuation extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class Punctuation extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.Punctuation = Punctuation;
|
|
8
8
|
//# sourceMappingURL=punctuation.js.map
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WStaticArrowW = exports.StaticArrowW = exports.WStaticArrow = exports.StaticArrow = void 0;
|
|
4
|
-
const
|
|
5
|
-
class StaticArrow extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StaticArrow extends abstract_token_1.AbstractToken {
|
|
6
6
|
static railroad() {
|
|
7
7
|
return "=>";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.StaticArrow = StaticArrow;
|
|
11
|
-
class WStaticArrow extends
|
|
11
|
+
class WStaticArrow extends abstract_token_1.AbstractToken {
|
|
12
12
|
static railroad() {
|
|
13
13
|
return " =>";
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.WStaticArrow = WStaticArrow;
|
|
17
|
-
class StaticArrowW extends
|
|
17
|
+
class StaticArrowW extends abstract_token_1.AbstractToken {
|
|
18
18
|
static railroad() {
|
|
19
19
|
return "=> ";
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.StaticArrowW = StaticArrowW;
|
|
23
|
-
class WStaticArrowW extends
|
|
23
|
+
class WStaticArrowW extends abstract_token_1.AbstractToken {
|
|
24
24
|
static railroad() {
|
|
25
25
|
return " => ";
|
|
26
26
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StringTemplateMiddle = exports.StringTemplateEnd = exports.StringTemplateBegin = exports.StringTemplate = exports.StringToken = void 0;
|
|
4
|
-
const
|
|
5
|
-
class StringToken extends
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StringToken extends abstract_token_1.AbstractToken {
|
|
6
6
|
}
|
|
7
7
|
exports.StringToken = StringToken;
|
|
8
|
-
class StringTemplate extends
|
|
8
|
+
class StringTemplate extends abstract_token_1.AbstractToken {
|
|
9
9
|
}
|
|
10
10
|
exports.StringTemplate = StringTemplate;
|
|
11
|
-
class StringTemplateBegin extends
|
|
11
|
+
class StringTemplateBegin extends abstract_token_1.AbstractToken {
|
|
12
12
|
}
|
|
13
13
|
exports.StringTemplateBegin = StringTemplateBegin;
|
|
14
|
-
class StringTemplateEnd extends
|
|
14
|
+
class StringTemplateEnd extends abstract_token_1.AbstractToken {
|
|
15
15
|
}
|
|
16
16
|
exports.StringTemplateEnd = StringTemplateEnd;
|
|
17
|
-
class StringTemplateMiddle extends
|
|
17
|
+
class StringTemplateMiddle extends abstract_token_1.AbstractToken {
|
|
18
18
|
}
|
|
19
19
|
exports.StringTemplateMiddle = StringTemplateMiddle;
|
|
20
20
|
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WAt = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WAt extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " @";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WAt = WAt;
|
|
11
|
+
//# sourceMappingURL=wat.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WAtW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WAtW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " @ ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WAtW = WAtW;
|
|
11
|
+
//# sourceMappingURL=watw.js.map
|
|
@@ -10,7 +10,7 @@ const token_node_1 = require("../nodes/token_node");
|
|
|
10
10
|
const statement_parser_1 = require("./statement_parser");
|
|
11
11
|
const memory_file_1 = require("../../files/memory_file");
|
|
12
12
|
const lexer_1 = require("../1_lexer/lexer");
|
|
13
|
-
const
|
|
13
|
+
const virtual_position_1 = require("../../virtual_position");
|
|
14
14
|
class Macros {
|
|
15
15
|
constructor(globalMacros) {
|
|
16
16
|
this.macros = {};
|
|
@@ -149,8 +149,8 @@ class ExpandMacros {
|
|
|
149
149
|
}
|
|
150
150
|
// argh, macros is a nightmare
|
|
151
151
|
let end = now.getStart();
|
|
152
|
-
if (end instanceof
|
|
153
|
-
end = new
|
|
152
|
+
if (end instanceof virtual_position_1.VirtualPosition) {
|
|
153
|
+
end = new virtual_position_1.VirtualPosition(end, end.vrow, end.vcol + now.getStr().length);
|
|
154
154
|
}
|
|
155
155
|
else {
|
|
156
156
|
end = now.getEnd();
|
|
@@ -25,7 +25,12 @@ class ReduceBody {
|
|
|
25
25
|
scope.push(_scope_type_1.ScopeType.Let, "LET", node.getFirstToken().getStart(), filename);
|
|
26
26
|
scoped = true;
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
let foundType = targetType;
|
|
29
|
+
const source = i.findDirectExpression(Expressions.Source);
|
|
30
|
+
if (source) {
|
|
31
|
+
foundType = new source_1.Source().runSyntax(source, scope, filename, targetType);
|
|
32
|
+
}
|
|
33
|
+
const found = new inline_field_definition_1.InlineFieldDefinition().runSyntax(i, scope, filename, foundType);
|
|
29
34
|
if (found && first === undefined) {
|
|
30
35
|
first = found;
|
|
31
36
|
}
|
|
@@ -17,7 +17,7 @@ class StringTemplate {
|
|
|
17
17
|
}
|
|
18
18
|
else if ((typeUtils.isCharLike(type) === false && typeUtils.isHexLike(type) === false)
|
|
19
19
|
|| type instanceof basic_1.StructureType) {
|
|
20
|
-
throw new Error("
|
|
20
|
+
throw new Error("String template, not character like, " + type.constructor.name);
|
|
21
21
|
}
|
|
22
22
|
const format = templateSource.findDirectExpression(Expressions.StringTemplateFormatting);
|
|
23
23
|
const formatConcat = format === null || format === void 0 ? void 0 : format.concatTokens();
|
|
@@ -46,6 +46,8 @@ class ClassDefinition extends _identifier_1.Identifier {
|
|
|
46
46
|
this.testing = concat.includes(" FOR TESTING");
|
|
47
47
|
this.sharedMemory = concat.includes(" SHARED MEMORY ENABLED");
|
|
48
48
|
this.abstract = (cdef === null || cdef === void 0 ? void 0 : cdef.findDirectTokenByText("ABSTRACT")) !== undefined;
|
|
49
|
+
// perform checks after everything has been initialized
|
|
50
|
+
this.checkMethodsFromSuperClasses(scope);
|
|
49
51
|
}
|
|
50
52
|
getFriends() {
|
|
51
53
|
return this.friends;
|
|
@@ -98,6 +100,29 @@ class ClassDefinition extends _identifier_1.Identifier {
|
|
|
98
100
|
const name = token === null || token === void 0 ? void 0 : token.getStr();
|
|
99
101
|
return name;
|
|
100
102
|
}
|
|
103
|
+
checkMethodsFromSuperClasses(scope) {
|
|
104
|
+
var _a;
|
|
105
|
+
let sup = this.getSuperClass();
|
|
106
|
+
const names = new Set();
|
|
107
|
+
while (sup !== undefined) {
|
|
108
|
+
const cdef = scope.findClassDefinition(sup);
|
|
109
|
+
for (const m of ((_a = cdef === null || cdef === void 0 ? void 0 : cdef.getMethodDefinitions()) === null || _a === void 0 ? void 0 : _a.getAll()) || []) {
|
|
110
|
+
if (m.getVisibility() === visibility_1.Visibility.Private) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
else if (m.getName().toUpperCase() === "CONSTRUCTOR") {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
names.add(m.getName().toUpperCase());
|
|
117
|
+
}
|
|
118
|
+
sup = cdef === null || cdef === void 0 ? void 0 : cdef.getSuperClass();
|
|
119
|
+
}
|
|
120
|
+
for (const m of this.getMethodDefinitions().getAll()) {
|
|
121
|
+
if (names.has(m.getName().toUpperCase()) && m.isRedefinition() === false) {
|
|
122
|
+
throw new Error(`Method ${m.getName().toUpperCase()} already declared in superclass`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
101
126
|
findFriends(def, filename, scope) {
|
|
102
127
|
var _a;
|
|
103
128
|
const result = [];
|
|
@@ -9,10 +9,17 @@ class AbstractFile {
|
|
|
9
9
|
return this.filename;
|
|
10
10
|
}
|
|
11
11
|
baseName() {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
let name = this.getFilename();
|
|
13
|
+
let index = name.lastIndexOf("\\");
|
|
14
|
+
if (index) {
|
|
15
|
+
index = index + 1;
|
|
16
|
+
}
|
|
17
|
+
name = name.substring(index);
|
|
18
|
+
index = name.lastIndexOf("/");
|
|
19
|
+
if (index) {
|
|
20
|
+
index = index + 1;
|
|
21
|
+
}
|
|
22
|
+
return name.substring(index);
|
|
16
23
|
}
|
|
17
24
|
getObjectType() {
|
|
18
25
|
var _a;
|
package/build/src/index.js
CHANGED
|
@@ -39,8 +39,8 @@ const _current_scope_1 = require("./abap/5_syntax/_current_scope");
|
|
|
39
39
|
Object.defineProperty(exports, "CurrentScope", { enumerable: true, get: function () { return _current_scope_1.CurrentScope; } });
|
|
40
40
|
const Objects = require("./objects");
|
|
41
41
|
exports.Objects = Objects;
|
|
42
|
-
const
|
|
43
|
-
Object.defineProperty(exports, "Token", { enumerable: true, get: function () { return
|
|
42
|
+
const abstract_token_1 = require("./abap/1_lexer/tokens/abstract_token");
|
|
43
|
+
Object.defineProperty(exports, "Token", { enumerable: true, get: function () { return abstract_token_1.AbstractToken; } });
|
|
44
44
|
const Statements = require("./abap/2_statements/statements");
|
|
45
45
|
exports.Statements = Statements;
|
|
46
46
|
const Expressions = require("./abap/2_statements/expressions");
|
|
@@ -59,7 +59,8 @@ const Tokens = require("./abap/1_lexer/tokens");
|
|
|
59
59
|
exports.Tokens = Tokens;
|
|
60
60
|
const position_1 = require("./position");
|
|
61
61
|
Object.defineProperty(exports, "Position", { enumerable: true, get: function () { return position_1.Position; } });
|
|
62
|
-
|
|
62
|
+
const virtual_position_1 = require("./virtual_position");
|
|
63
|
+
Object.defineProperty(exports, "VirtualPosition", { enumerable: true, get: function () { return virtual_position_1.VirtualPosition; } });
|
|
63
64
|
const _abstract_file_1 = require("./files/_abstract_file");
|
|
64
65
|
Object.defineProperty(exports, "AbstractFile", { enumerable: true, get: function () { return _abstract_file_1.AbstractFile; } });
|
|
65
66
|
const pretty_printer_1 = require("./pretty_printer/pretty_printer");
|
package/build/src/issue.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Issue = void 0;
|
|
4
4
|
const position_1 = require("./position");
|
|
5
|
+
const virtual_position_1 = require("./virtual_position");
|
|
5
6
|
const severity_1 = require("./severity");
|
|
6
7
|
class Issue {
|
|
7
8
|
//////////////////////////
|
|
@@ -87,7 +88,7 @@ class Issue {
|
|
|
87
88
|
}
|
|
88
89
|
constructor(data) {
|
|
89
90
|
this.data = data;
|
|
90
|
-
if (this.data.start instanceof
|
|
91
|
+
if (this.data.start instanceof virtual_position_1.VirtualPosition) {
|
|
91
92
|
// no quick fixes inside macros
|
|
92
93
|
this.data.fix = undefined;
|
|
93
94
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SemanticHighlighting = void 0;
|
|
4
4
|
const LServer = require("vscode-languageserver-types");
|
|
5
5
|
const position_1 = require("../position");
|
|
6
|
+
const virtual_position_1 = require("../virtual_position");
|
|
6
7
|
const tokens_1 = require("../abap/1_lexer/tokens");
|
|
7
8
|
const nodes_1 = require("../abap/nodes");
|
|
8
9
|
const Statements = require("../abap/2_statements/statements");
|
|
@@ -46,7 +47,7 @@ class SemanticHighlighting {
|
|
|
46
47
|
const rangeEndPosition = new position_1.Position(range.end.line + 1, range.end.character + 1);
|
|
47
48
|
const tokens = [];
|
|
48
49
|
for (const s of file.getStatements()) {
|
|
49
|
-
if (s.getFirstToken().getStart() instanceof
|
|
50
|
+
if (s.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
|
|
50
51
|
continue;
|
|
51
52
|
}
|
|
52
53
|
else if (s.getFirstToken().getStart().isAfter(rangeEndPosition)) {
|
|
@@ -5,7 +5,7 @@ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
|
5
5
|
const __1 = require("../..");
|
|
6
6
|
const syntax_1 = require("../../abap/5_syntax/syntax");
|
|
7
7
|
const _scope_type_1 = require("../../abap/5_syntax/_scope_type");
|
|
8
|
-
const
|
|
8
|
+
const virtual_position_1 = require("../../virtual_position");
|
|
9
9
|
const _abap_object_1 = require("../_abap_object");
|
|
10
10
|
class RenamerHelper {
|
|
11
11
|
constructor(reg) {
|
|
@@ -149,7 +149,7 @@ class RenamerHelper {
|
|
|
149
149
|
for (const r of node.getData().references) {
|
|
150
150
|
if (((_a = r.resolved) === null || _a === void 0 ? void 0 : _a.equals(identifier))
|
|
151
151
|
&& r.referenceType !== __1.ReferenceType.InferredType
|
|
152
|
-
&& !(r.position.getStart() instanceof
|
|
152
|
+
&& !(r.position.getStart() instanceof virtual_position_1.VirtualPosition)) {
|
|
153
153
|
ret.push(r.position);
|
|
154
154
|
}
|
|
155
155
|
}
|
package/build/src/position.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Position = void 0;
|
|
4
4
|
// first position is (1,1)
|
|
5
5
|
class Position {
|
|
6
6
|
constructor(row, col) {
|
|
@@ -27,20 +27,4 @@ class Position {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
exports.Position = Position;
|
|
30
|
-
/** used for macro calls */
|
|
31
|
-
class VirtualPosition extends Position {
|
|
32
|
-
constructor(virtual, row, col) {
|
|
33
|
-
super(virtual.getRow(), virtual.getCol());
|
|
34
|
-
this.vrow = row;
|
|
35
|
-
this.vcol = col;
|
|
36
|
-
}
|
|
37
|
-
equals(p) {
|
|
38
|
-
if (!(p instanceof VirtualPosition)) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
const casted = p;
|
|
42
|
-
return super.equals(this) && this.vrow === casted.vrow && this.vcol === casted.vcol;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.VirtualPosition = VirtualPosition;
|
|
46
30
|
//# sourceMappingURL=position.js.map
|
|
@@ -4,7 +4,7 @@ exports.Indent = void 0;
|
|
|
4
4
|
const Statements = require("../abap/2_statements/statements");
|
|
5
5
|
const Expressions = require("../abap/2_statements/expressions");
|
|
6
6
|
const _statement_1 = require("../abap/2_statements/statements/_statement");
|
|
7
|
-
const
|
|
7
|
+
const virtual_position_1 = require("../virtual_position");
|
|
8
8
|
// todo, will break if there is multiple statements per line?
|
|
9
9
|
class Indent {
|
|
10
10
|
constructor(options) {
|
|
@@ -16,7 +16,7 @@ class Indent {
|
|
|
16
16
|
const expected = this.getExpectedIndents(original);
|
|
17
17
|
const lines = modified.split("\n");
|
|
18
18
|
for (const statement of statements) {
|
|
19
|
-
if (statement.getFirstToken().getStart() instanceof
|
|
19
|
+
if (statement.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
|
|
20
20
|
continue; // macro contents
|
|
21
21
|
}
|
|
22
22
|
const exp = expected.shift();
|
|
@@ -40,7 +40,7 @@ class Indent {
|
|
|
40
40
|
let parentIsEvent = false;
|
|
41
41
|
let previousStatement = undefined;
|
|
42
42
|
for (const statement of file.getStatements()) {
|
|
43
|
-
if (statement.getFirstToken().getStart() instanceof
|
|
43
|
+
if (statement.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
|
|
44
44
|
continue; // skip macro contents
|
|
45
45
|
}
|
|
46
46
|
const type = statement.get();
|
|
@@ -4,7 +4,7 @@ exports.PrettyPrinter = void 0;
|
|
|
4
4
|
const _statement_1 = require("../abap/2_statements/statements/_statement");
|
|
5
5
|
const fix_keyword_case_1 = require("./fix_keyword_case");
|
|
6
6
|
const indent_1 = require("./indent");
|
|
7
|
-
const
|
|
7
|
+
const virtual_position_1 = require("../virtual_position");
|
|
8
8
|
const indentation_1 = require("../rules/indentation");
|
|
9
9
|
class PrettyPrinter {
|
|
10
10
|
constructor(file, config) {
|
|
@@ -23,7 +23,7 @@ class PrettyPrinter {
|
|
|
23
23
|
if (statement.get() instanceof _statement_1.Unknown
|
|
24
24
|
|| statement.get() instanceof _statement_1.MacroContent
|
|
25
25
|
|| statement.get() instanceof _statement_1.MacroCall
|
|
26
|
-
|| statement.getFirstToken().getStart() instanceof
|
|
26
|
+
|| statement.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition
|
|
27
27
|
|| statement.get() instanceof _statement_1.Comment) {
|
|
28
28
|
continue;
|
|
29
29
|
}
|
package/build/src/registry.js
CHANGED
|
@@ -12,6 +12,7 @@ const _statement_1 = require("../abap/2_statements/statements/_statement");
|
|
|
12
12
|
const nodes_1 = require("../abap/nodes");
|
|
13
13
|
const edit_helper_1 = require("../edit_helper");
|
|
14
14
|
const position_1 = require("../position");
|
|
15
|
+
const virtual_position_1 = require("../virtual_position");
|
|
15
16
|
const _abap_object_1 = require("../objects/_abap_object");
|
|
16
17
|
const version_1 = require("../version");
|
|
17
18
|
const registry_1 = require("../registry");
|
|
@@ -324,7 +325,7 @@ Make sure to test the downported code, it might not always be completely correct
|
|
|
324
325
|
}
|
|
325
326
|
/** applies one rule at a time, multiple iterations are required to transform complex statements */
|
|
326
327
|
checkStatement(low, high, lowFile, highSyntax, highFile) {
|
|
327
|
-
if (low.getFirstToken().getStart() instanceof
|
|
328
|
+
if (low.getFirstToken().getStart() instanceof virtual_position_1.VirtualPosition) {
|
|
328
329
|
return undefined;
|
|
329
330
|
}
|
|
330
331
|
// downport XSDBOOL() early, as it is valid 702 syntax
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
69
|
-
|
|
70
|
-
|
|
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
|
|
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
|
|
56
|
+
if (pos instanceof virtual_position_1.VirtualPosition) {
|
|
57
57
|
continue;
|
|
58
58
|
}
|
|
59
59
|
const row = pos.getRow();
|
|
@@ -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
|