diff --git a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java index 54829a7ffb0..d764f9cbc53 100644 --- a/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java +++ b/src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java @@ -117,7 +117,7 @@ private String getAdaptedText(String text) { private static int getBooleanToken(BSLParser.ExpressionContext expCtx) { var tmpCtx = Optional.of(expCtx) - .filter(ctx -> ctx.children.size() == 1) + .filter(ctx -> ctx.getChildCount() == 1) .map(ctx -> ctx.member(0)) .map(ctx -> ctx.getChild(0)) .filter(BSLParser.ConstValueContext.class::isInstance) diff --git a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java index 6b1042e61c5..2c84ea294eb 100644 --- a/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java +++ b/src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java @@ -29,6 +29,7 @@ import java.util.List; import static com.github._1c_syntax.bsl.languageserver.util.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; class UselessTernaryOperatorDiagnosticTest extends AbstractDiagnosticTest { @@ -83,4 +84,14 @@ void testQuickFix() { .hasNewText("НЕ (Б=0)"); } + @Test + void testMalformedTernaryOperatorDoesNotThrowNPE() { + // Проверяем, что на некорректном синтаксисе не падает NullPointerException + // Пример из issue: Return ?(table.Count() = 1, undefined, ); + var documentContext = getDocumentContext("UselessTernaryOperatorDiagnosticMalformed"); + + assertThatCode(() -> getDiagnostics(documentContext)) + .doesNotThrowAnyException(); + } + } diff --git a/src/test/resources/diagnostics/UselessTernaryOperatorDiagnosticMalformed.bsl b/src/test/resources/diagnostics/UselessTernaryOperatorDiagnosticMalformed.bsl new file mode 100644 index 00000000000..3965640059e --- /dev/null +++ b/src/test/resources/diagnostics/UselessTernaryOperatorDiagnosticMalformed.bsl @@ -0,0 +1,2 @@ +// Тест на некорректный синтаксис - не должен падать с NullPointerException +Возврат ?(таблица.Количество() = 1, Неопределено, );