Skip to content

Commit 43dd3e5

Browse files
committed
Merge branch 'develop'
2 parents eec5144 + 20fc658 commit 43dd3e5

File tree

3 files changed

+36
-23
lines changed

3 files changed

+36
-23
lines changed

src/main/java/org/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnostic.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
*/
2222
package org.github._1c_syntax.bsl.languageserver.diagnostics;
2323

24+
import org.antlr.v4.runtime.ParserRuleContext;
2425
import org.antlr.v4.runtime.tree.ParseTree;
2526
import org.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticMetadata;
2627
import org.github._1c_syntax.bsl.languageserver.diagnostics.metadata.DiagnosticParameter;
@@ -59,7 +60,7 @@ private boolean isExcluded(String s) {
5960
return false;
6061
}
6162

62-
private boolean isNumericExpression(BSLParser.ExpressionContext expression) {
63+
private static boolean isNumericExpression(BSLParser.ExpressionContext expression) {
6364
return (expression.getChildCount() <= 1);
6465
}
6566

@@ -75,16 +76,21 @@ public void configure(Map<String, Object> configuration) {
7576
}
7677
}
7778

79+
@Override
7880
public ParseTree visitNumeric(BSLParser.NumericContext ctx) {
7981
String checked = ctx.getText();
8082

8183
if(checked == null || isExcluded(checked)) {
8284
return super.visitNumeric(ctx);
8385
}
8486

85-
BSLParser.ExpressionContext expression = (BSLParser.ExpressionContext) ctx.getParent().getParent().getParent();
87+
ParserRuleContext expression = ctx.getParent().getParent().getParent();
88+
89+
if (!(expression instanceof BSLParser.ExpressionContext)) {
90+
return ctx;
91+
}
8692

87-
if (isNumericExpression(expression)) {
93+
if (isNumericExpression((BSLParser.ExpressionContext) expression)) {
8894
return super.visitNumeric(ctx);
8995
}
9096

src/test/java/org/github/_1c_syntax/bsl/languageserver/diagnostics/MagicNumberDiagnosticTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ void runTest() {
4646
assertThat(diagnostics.get(1).getRange()).isEqualTo(RangeHelper.newRange(3, 23, 3, 25));
4747
assertThat(diagnostics.get(2).getRange()).isEqualTo(RangeHelper.newRange(7, 31, 7, 33));
4848
assertThat(diagnostics.get(3).getRange()).isEqualTo(RangeHelper.newRange(11, 20, 11, 21));
49-
assertThat(diagnostics.get(4).getRange()).isEqualTo(RangeHelper.newRange(19, 17, 19, 19));
50-
assertThat(diagnostics.get(5).getRange()).isEqualTo(RangeHelper.newRange(22, 20, 22, 22));
51-
assertThat(diagnostics.get(6).getRange()).isEqualTo(RangeHelper.newRange(26, 30, 26, 31));
49+
assertThat(diagnostics.get(4).getRange()).isEqualTo(RangeHelper.newRange(20, 21, 20, 23));
50+
assertThat(diagnostics.get(5).getRange()).isEqualTo(RangeHelper.newRange(23, 24, 23, 26));
51+
assertThat(diagnostics.get(6).getRange()).isEqualTo(RangeHelper.newRange(27, 34, 27, 35));
5252
}
5353

5454
@Test
@@ -65,7 +65,7 @@ void testConfigure() {
6565
assertThat(diagnostics).hasSize(4);
6666
assertThat(diagnostics.get(0).getRange()).isEqualTo(RangeHelper.newRange(7, 31, 7, 33));
6767
assertThat(diagnostics.get(1).getRange()).isEqualTo(RangeHelper.newRange(11, 20, 11, 21));
68-
assertThat(diagnostics.get(2).getRange()).isEqualTo(RangeHelper.newRange(19, 17, 19, 19));
69-
assertThat(diagnostics.get(3).getRange()).isEqualTo(RangeHelper.newRange(22, 20, 22, 22));
68+
assertThat(diagnostics.get(2).getRange()).isEqualTo(RangeHelper.newRange(20, 21, 20, 23));
69+
assertThat(diagnostics.get(3).getRange()).isEqualTo(RangeHelper.newRange(23, 24, 23, 26));
7070
}
7171
}

src/test/resources/diagnostics/MagicNumberDiagnostic.bsl

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,35 @@
1717

1818
КонецПроцедуры
1919

20-
Если Описание2 > 11 Тогда // Ошибка на 11
20+
Процедура Б()
21+
Если Описание2 > 11 Тогда // Ошибка на 11
2122

22-
Чтото = Чтото + 1; // Нет ошибки из-за исключения
23-
Чтото = Чтото + 14; // Ошибка на 14
23+
Чтото = Чтото + 1; // Нет ошибки из-за исключения
24+
Чтото = Чтото + 14; // Ошибка на 14
2425

25-
КонецЕсли;
26+
КонецЕсли;
27+
28+
ЭтоВоскресенье = ДеньНедели = 7; // Тут ошибка, хоть и вглядит нормально.
29+
ДеньНеделиВоскресенье = 7;
30+
ЭтоВоскресенье = ДеньНедели = ДеньНеделиВоскресенье; // А вот тут уже ошибки нет
2631

27-
ЭтоВоскресенье = ДеньНедели = 7; // Тут ошибка, хоть и вглядит нормально.
28-
ДеньНеделиВоскресенье = 7;
29-
ЭтоВоскресенье = ДеньНедели = ДеньНеделиВоскресенье; // А вот тут уже ошибки нет
32+
// Далеше без ошибок
33+
ПроверочноеПеречисление = Новый Массив;
34+
ПроверочноеПеречисление.Добавить(1);
35+
ПроверочноеПеречисление.Добавить(2);
36+
ПроверочноеПеречисление.Добавить(3);
3037

31-
// Далеше без ошибок
32-
ПроверочноеПеречисление = Новый Массив;
33-
ПроверочноеПеречисление.Добавить(1);
34-
ПроверочноеПеречисление.Добавить(2);
35-
ПроверочноеПеречисление.Добавить(3);
38+
ПроверочнаяСтруктура = Новый Структура("Авто,ПростойВариант,СложныйВариант", 0, 1, 2);
39+
ПроверочнаяСтруктура.Добавить("ЭкспертныйВариант", 3);
40+
41+
КонецПроцедуры
3642

37-
ПроверочнаяСтруктура = Новый Структура("Авто,ПростойВариант,СложныйВариант", 0, 1, 2);
38-
ПроверочнаяСтруктура.Добавить("ЭкспертныйВариант", 3);
43+
Процедура А(А = 566)
44+
45+
КонецПроцедуры
3946

4047
Функция КодОшибки()
41-
48+
4249
Возврат 12;
4350

4451
КонецФункции

0 commit comments

Comments
 (0)