21
21
*/
22
22
package com .github ._1c_syntax .bsl .languageserver .diagnostics ;
23
23
24
- import com .github ._1c_syntax .bsl .languageserver .diagnostics .metadata .DiagnosticInfo ;
25
24
import com .github ._1c_syntax .bsl .languageserver .diagnostics .metadata .DiagnosticMetadata ;
26
25
import com .github ._1c_syntax .bsl .languageserver .diagnostics .metadata .DiagnosticSeverity ;
27
26
import com .github ._1c_syntax .bsl .languageserver .diagnostics .metadata .DiagnosticTag ;
28
27
import com .github ._1c_syntax .bsl .languageserver .diagnostics .metadata .DiagnosticType ;
29
- import com .github ._1c_syntax .bsl .languageserver .utils .Ranges ;
30
- import com .github ._1c_syntax .bsl .languageserver .utils .Trees ;
31
- import com .github ._1c_syntax .bsl .parser .BSLParser ;
32
- import com .github ._1c_syntax .bsl .parser .BSLParserRuleContext ;
33
28
import com .github ._1c_syntax .utils .CaseInsensitivePattern ;
34
- import org .antlr .v4 .runtime .Token ;
35
- import org .antlr .v4 .runtime .tree .ParseTree ;
36
29
37
30
import java .util .HashSet ;
38
- import java .util .Optional ;
39
- import java .util .regex .Matcher ;
31
+ import java .util .Set ;
40
32
import java .util .regex .Pattern ;
41
33
42
34
@ DiagnosticMetadata (
@@ -55,42 +47,36 @@ public class IncorrectLineBreakDiagnostic extends AbstractDiagnostic {
55
47
);
56
48
57
49
private static final Pattern INCORRECT_END_LINE_PATTERN = CaseInsensitivePattern .compile (
58
- "\\ s+(:?ИЛИ|И|OR|AND|\\ +|-|\\ /|%|\\ *)\\ s*(?:\\ / \\ /.*)?$"
50
+ "\\ s+(:?ИЛИ|И|OR|AND|\\ +|-|/|%|\\ *)\\ s*(?:/ /.*)?$"
59
51
);
60
52
61
- private HashSet <Integer > setFirstQueryLines = new HashSet <Integer >();
53
+ // +1 for next line and +1 for 1..n based line numbers.
54
+ private static final int QUERY_START_LINE_OFFSET = 2 ;
55
+
56
+ private final Set <Integer > queryFirstLines = new HashSet <>();
62
57
63
58
@ Override
64
59
protected void check () {
65
-
66
- findFirstQueryLines ();
60
+ findQueryFirstLines ();
67
61
68
62
checkContent (INCORRECT_START_LINE_PATTERN );
69
63
checkContent (INCORRECT_END_LINE_PATTERN );
70
64
}
71
65
72
- private void findFirstQueryLines () {
73
-
74
- documentContext .getQueries ().forEach (query -> {
75
- setFirstQueryLines .add (query .getAst ().start .getLine ());
76
- }
77
- );
66
+ private void findQueryFirstLines () {
67
+ documentContext .getQueries ().forEach (query -> queryFirstLines .add (query .getAst ().getStart ().getLine ()));
78
68
}
79
69
80
70
private void checkContent (Pattern pattern ) {
81
-
82
- String [] contentList ;
71
+ String [] contentList = documentContext .getContentList ();
83
72
String checkText ;
84
73
85
- contentList = documentContext .getContentList ();
86
-
87
- for (int i = 0 ; i < contentList .length ; i ++) {
88
-
74
+ for (var i = 0 ; i < contentList .length ; i ++) {
89
75
checkText = contentList [i ];
90
76
91
- Matcher matcher = pattern .matcher (checkText );
77
+ var matcher = pattern .matcher (checkText );
92
78
93
- if (matcher .find () && !setFirstQueryLines .contains (i + 2 )) {
79
+ if (matcher .find () && !queryFirstLines .contains (i + QUERY_START_LINE_OFFSET )) {
94
80
diagnosticStorage .addDiagnostic (i + 1 , matcher .start (1 ), i + 1 , matcher .end (1 ));
95
81
}
96
82
}
0 commit comments