@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.
- package/build/abaplint.d.ts +12 -11
- 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 +3 -21
- package/build/src/abap/1_lexer/tokens/bracket_leftw.js +11 -0
- package/build/src/abap/1_lexer/tokens/bracket_right.js +3 -21
- package/build/src/abap/1_lexer/tokens/bracket_rightw.js +11 -0
- 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 +3 -21
- package/build/src/abap/1_lexer/tokens/dashw.js +11 -0
- package/build/src/abap/1_lexer/tokens/identifier.js +2 -2
- package/build/src/abap/1_lexer/tokens/index.js +37 -6
- package/build/src/abap/1_lexer/tokens/instance_arrow.js +3 -21
- package/build/src/abap/1_lexer/tokens/instance_arroww.js +11 -0
- package/build/src/abap/1_lexer/tokens/paren_left.js +3 -21
- package/build/src/abap/1_lexer/tokens/paren_leftw.js +11 -0
- package/build/src/abap/1_lexer/tokens/paren_right.js +3 -21
- package/build/src/abap/1_lexer/tokens/paren_rightw.js +11 -0
- package/build/src/abap/1_lexer/tokens/plus.js +3 -21
- package/build/src/abap/1_lexer/tokens/plusw.js +11 -0
- 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 +3 -21
- package/build/src/abap/1_lexer/tokens/static_arroww.js +11 -0
- package/build/src/abap/1_lexer/tokens/string.js +3 -15
- package/build/src/abap/1_lexer/tokens/string_template.js +8 -0
- package/build/src/abap/1_lexer/tokens/string_template_begin.js +8 -0
- package/build/src/abap/1_lexer/tokens/string_template_end.js +8 -0
- package/build/src/abap/1_lexer/tokens/string_template_middle.js +8 -0
- 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/1_lexer/tokens/wbracket_left.js +11 -0
- package/build/src/abap/1_lexer/tokens/wbracket_leftw.js +11 -0
- package/build/src/abap/1_lexer/tokens/wbracket_right.js +11 -0
- package/build/src/abap/1_lexer/tokens/wbracket_rightw.js +11 -0
- package/build/src/abap/1_lexer/tokens/wdash.js +11 -0
- package/build/src/abap/1_lexer/tokens/wdashw.js +11 -0
- package/build/src/abap/1_lexer/tokens/winstance_arrow.js +11 -0
- package/build/src/abap/1_lexer/tokens/winstance_arroww.js +11 -0
- package/build/src/abap/1_lexer/tokens/wparen_left.js +11 -0
- package/build/src/abap/1_lexer/tokens/wparen_leftw.js +11 -0
- package/build/src/abap/1_lexer/tokens/wparen_right.js +11 -0
- package/build/src/abap/1_lexer/tokens/wparen_rightw.js +11 -0
- package/build/src/abap/1_lexer/tokens/wplus.js +11 -0
- package/build/src/abap/1_lexer/tokens/wplusw.js +11 -0
- package/build/src/abap/1_lexer/tokens/wstatic_arrow.js +11 -0
- package/build/src/abap/1_lexer/tokens/wstatic_arroww.js +11 -0
- package/build/src/abap/2_statements/expand_macros.js +3 -3
- package/build/src/abap/2_statements/expressions/sql_into_list.js +3 -2
- package/build/src/abap/nodes/statement_node.js +12 -8
- package/build/src/abap/types/class_definition.js +25 -0
- package/build/src/abap/types/interface_definition.js +17 -5
- 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/rules/unused_variables.js +8 -0
- package/build/src/virtual_position.js +21 -0
- package/package.json +3 -3
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
class StringToken extends
|
|
3
|
+
exports.StringToken = void 0;
|
|
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 _token_1.Token {
|
|
9
|
-
}
|
|
10
|
-
exports.StringTemplate = StringTemplate;
|
|
11
|
-
class StringTemplateBegin extends _token_1.Token {
|
|
12
|
-
}
|
|
13
|
-
exports.StringTemplateBegin = StringTemplateBegin;
|
|
14
|
-
class StringTemplateEnd extends _token_1.Token {
|
|
15
|
-
}
|
|
16
|
-
exports.StringTemplateEnd = StringTemplateEnd;
|
|
17
|
-
class StringTemplateMiddle extends _token_1.Token {
|
|
18
|
-
}
|
|
19
|
-
exports.StringTemplateMiddle = StringTemplateMiddle;
|
|
20
8
|
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringTemplate = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StringTemplate extends abstract_token_1.AbstractToken {
|
|
6
|
+
}
|
|
7
|
+
exports.StringTemplate = StringTemplate;
|
|
8
|
+
//# sourceMappingURL=string_template.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringTemplateBegin = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StringTemplateBegin extends abstract_token_1.AbstractToken {
|
|
6
|
+
}
|
|
7
|
+
exports.StringTemplateBegin = StringTemplateBegin;
|
|
8
|
+
//# sourceMappingURL=string_template_begin.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringTemplateEnd = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StringTemplateEnd extends abstract_token_1.AbstractToken {
|
|
6
|
+
}
|
|
7
|
+
exports.StringTemplateEnd = StringTemplateEnd;
|
|
8
|
+
//# sourceMappingURL=string_template_end.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StringTemplateMiddle = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class StringTemplateMiddle extends abstract_token_1.AbstractToken {
|
|
6
|
+
}
|
|
7
|
+
exports.StringTemplateMiddle = StringTemplateMiddle;
|
|
8
|
+
//# sourceMappingURL=string_template_middle.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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WBracketLeft = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WBracketLeft extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " [";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WBracketLeft = WBracketLeft;
|
|
11
|
+
//# sourceMappingURL=wbracket_left.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WBracketLeftW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WBracketLeftW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " [ ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WBracketLeftW = WBracketLeftW;
|
|
11
|
+
//# sourceMappingURL=wbracket_leftw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WBracketRight = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WBracketRight extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " ]";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WBracketRight = WBracketRight;
|
|
11
|
+
//# sourceMappingURL=wbracket_right.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WBracketRightW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WBracketRightW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " ] ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WBracketRightW = WBracketRightW;
|
|
11
|
+
//# sourceMappingURL=wbracket_rightw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WDash = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WDash extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " -";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WDash = WDash;
|
|
11
|
+
//# sourceMappingURL=wdash.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WDashW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WDashW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " - ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WDashW = WDashW;
|
|
11
|
+
//# sourceMappingURL=wdashw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WInstanceArrow = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WInstanceArrow extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " ->";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WInstanceArrow = WInstanceArrow;
|
|
11
|
+
//# sourceMappingURL=winstance_arrow.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WInstanceArrowW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WInstanceArrowW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " -> ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WInstanceArrowW = WInstanceArrowW;
|
|
11
|
+
//# sourceMappingURL=winstance_arroww.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WParenLeft = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WParenLeft extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " (";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WParenLeft = WParenLeft;
|
|
11
|
+
//# sourceMappingURL=wparen_left.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WParenLeftW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WParenLeftW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " ( ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WParenLeftW = WParenLeftW;
|
|
11
|
+
//# sourceMappingURL=wparen_leftw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WParenRight = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WParenRight extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " )";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WParenRight = WParenRight;
|
|
11
|
+
//# sourceMappingURL=wparen_right.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WParenRightW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WParenRightW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " ) ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WParenRightW = WParenRightW;
|
|
11
|
+
//# sourceMappingURL=wparen_rightw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WPlus = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WPlus extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " +";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WPlus = WPlus;
|
|
11
|
+
//# sourceMappingURL=wplus.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WPlusW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WPlusW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " + ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WPlusW = WPlusW;
|
|
11
|
+
//# sourceMappingURL=wplusw.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WStaticArrow = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WStaticArrow extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " =>";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WStaticArrow = WStaticArrow;
|
|
11
|
+
//# sourceMappingURL=wstatic_arrow.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WStaticArrowW = void 0;
|
|
4
|
+
const abstract_token_1 = require("./abstract_token");
|
|
5
|
+
class WStaticArrowW extends abstract_token_1.AbstractToken {
|
|
6
|
+
static railroad() {
|
|
7
|
+
return " => ";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.WStaticArrowW = WStaticArrowW;
|
|
11
|
+
//# sourceMappingURL=wstatic_arroww.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();
|
|
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SQLIntoList = void 0;
|
|
4
4
|
const combi_1 = require("../combi");
|
|
5
5
|
const _1 = require(".");
|
|
6
|
-
const
|
|
6
|
+
const wparen_leftw_1 = require("../../1_lexer/tokens/wparen_leftw");
|
|
7
|
+
const wparen_left_1 = require("../../1_lexer/tokens/wparen_left");
|
|
7
8
|
class SQLIntoList extends combi_1.Expression {
|
|
8
9
|
getRunnable() {
|
|
9
|
-
const intoList = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.tok)(
|
|
10
|
+
const intoList = (0, combi_1.seq)((0, combi_1.altPrio)((0, combi_1.tok)(wparen_left_1.WParenLeft), (0, combi_1.tok)(wparen_leftw_1.WParenLeftW)), (0, combi_1.starPrio)((0, combi_1.seq)(_1.SQLTarget, ",")), _1.SQLTarget, ")");
|
|
10
11
|
return (0, combi_1.seq)("INTO", intoList);
|
|
11
12
|
}
|
|
12
13
|
}
|
|
@@ -7,6 +7,10 @@ const expression_node_1 = require("./expression_node");
|
|
|
7
7
|
const comment_1 = require("../1_lexer/tokens/comment");
|
|
8
8
|
const pragma_1 = require("../1_lexer/tokens/pragma");
|
|
9
9
|
const string_1 = require("../1_lexer/tokens/string");
|
|
10
|
+
const string_template_middle_1 = require("../1_lexer/tokens/string_template_middle");
|
|
11
|
+
const string_template_end_1 = require("../1_lexer/tokens/string_template_end");
|
|
12
|
+
const string_template_begin_1 = require("../1_lexer/tokens/string_template_begin");
|
|
13
|
+
const string_template_1 = require("../1_lexer/tokens/string_template");
|
|
10
14
|
class StatementNode extends _abstract_node_1.AbstractNode {
|
|
11
15
|
constructor(statement, colon, pragmas) {
|
|
12
16
|
super();
|
|
@@ -115,10 +119,10 @@ class StatementNode extends _abstract_node_1.AbstractNode {
|
|
|
115
119
|
for (const token of this.getTokens()) {
|
|
116
120
|
if (token instanceof comment_1.Comment
|
|
117
121
|
|| token instanceof string_1.StringToken
|
|
118
|
-
|| token instanceof
|
|
119
|
-
|| token instanceof
|
|
120
|
-
|| token instanceof
|
|
121
|
-
|| token instanceof
|
|
122
|
+
|| token instanceof string_template_1.StringTemplate
|
|
123
|
+
|| token instanceof string_template_begin_1.StringTemplateBegin
|
|
124
|
+
|| token instanceof string_template_middle_1.StringTemplateMiddle
|
|
125
|
+
|| token instanceof string_template_end_1.StringTemplateEnd) {
|
|
122
126
|
continue;
|
|
123
127
|
}
|
|
124
128
|
if (str === "") {
|
|
@@ -251,10 +255,10 @@ class StatementNode extends _abstract_node_1.AbstractNode {
|
|
|
251
255
|
for (const token of this.getTokens()) {
|
|
252
256
|
if (token instanceof comment_1.Comment
|
|
253
257
|
|| token instanceof string_1.StringToken
|
|
254
|
-
|| token instanceof
|
|
255
|
-
|| token instanceof
|
|
256
|
-
|| token instanceof
|
|
257
|
-
|| token instanceof
|
|
258
|
+
|| token instanceof string_template_1.StringTemplate
|
|
259
|
+
|| token instanceof string_template_begin_1.StringTemplateBegin
|
|
260
|
+
|| token instanceof string_template_middle_1.StringTemplateMiddle
|
|
261
|
+
|| token instanceof string_template_end_1.StringTemplateEnd) {
|
|
258
262
|
continue;
|
|
259
263
|
}
|
|
260
264
|
if (prev && token.getStr().toUpperCase() === second && (prev === null || prev === void 0 ? void 0 : prev.getStr().toUpperCase()) === first.toUpperCase()) {
|
|
@@ -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 = [];
|
|
@@ -12,6 +12,9 @@ const event_definition_1 = require("./event_definition");
|
|
|
12
12
|
const method_definitions_1 = require("./method_definitions");
|
|
13
13
|
const aliases_1 = require("./aliases");
|
|
14
14
|
const _reference_1 = require("../5_syntax/_reference");
|
|
15
|
+
const class_constant_1 = require("./class_constant");
|
|
16
|
+
const _typed_identifier_1 = require("./_typed_identifier");
|
|
17
|
+
const tokens_1 = require("../1_lexer/tokens");
|
|
15
18
|
class InterfaceDefinition extends _identifier_1.Identifier {
|
|
16
19
|
constructor(node, filename, scope) {
|
|
17
20
|
if (!(node.get() instanceof Structures.Interface)) {
|
|
@@ -24,7 +27,7 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
24
27
|
this.events = [];
|
|
25
28
|
this.implementing = [];
|
|
26
29
|
scope.push(_scope_type_1.ScopeType.Interface, name.getStr(), node.getFirstToken().getStart(), filename);
|
|
27
|
-
this.parse(scope);
|
|
30
|
+
this.parse(scope, filename);
|
|
28
31
|
scope.pop(node.getLastToken().getEnd());
|
|
29
32
|
}
|
|
30
33
|
getSuperClass() {
|
|
@@ -55,7 +58,7 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
55
58
|
return this.methodDefinitions;
|
|
56
59
|
}
|
|
57
60
|
/////////////////
|
|
58
|
-
parse(scope) {
|
|
61
|
+
parse(scope, filename) {
|
|
59
62
|
var _a;
|
|
60
63
|
// todo, proper sequencing, the statements should be processed line by line
|
|
61
64
|
this.attributes = new class_attributes_1.Attributes(this.node, this.filename, scope);
|
|
@@ -66,9 +69,18 @@ class InterfaceDefinition extends _identifier_1.Identifier {
|
|
|
66
69
|
const [objName, fieldName] = a.getComponent().split("~");
|
|
67
70
|
const idef = scope.findInterfaceDefinition(objName);
|
|
68
71
|
if (idef) {
|
|
69
|
-
const
|
|
70
|
-
if (
|
|
71
|
-
scope.addTypeNamed(a.getName(),
|
|
72
|
+
const foundType = idef.getTypeDefinitions().getByName(fieldName);
|
|
73
|
+
if (foundType) {
|
|
74
|
+
scope.addTypeNamed(a.getName(), foundType);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const foundField = idef.getAttributes().findByName(fieldName);
|
|
78
|
+
if (foundField && foundField instanceof class_constant_1.ClassConstant) {
|
|
79
|
+
const token = new tokens_1.Identifier(a.getStart(), a.getName());
|
|
80
|
+
const id = new _typed_identifier_1.TypedIdentifier(token, filename, foundField.getType());
|
|
81
|
+
const constant = new class_constant_1.ClassConstant(id, visibility_1.Visibility.Public, foundField.getValue());
|
|
82
|
+
scope.addIdentifier(constant);
|
|
83
|
+
}
|
|
72
84
|
}
|
|
73
85
|
}
|
|
74
86
|
}
|
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
|