Skip to content

Commit 9c1f478

Browse files
authored
Merge pull request #3728 from 1c-syntax/copilot/fix-nullpointerexception-issue
Fix NullPointerException in UselessTernaryOperatorDiagnostic for malformed ternary operators
2 parents fe3fef5 + 267ce98 commit 9c1f478

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnostic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ private String getAdaptedText(String text) {
117117
private static int getBooleanToken(BSLParser.ExpressionContext expCtx) {
118118

119119
var tmpCtx = Optional.of(expCtx)
120-
.filter(ctx -> ctx.children.size() == 1)
120+
.filter(ctx -> ctx.getChildCount() == 1)
121121
.map(ctx -> ctx.member(0))
122122
.map(ctx -> ctx.getChild(0))
123123
.filter(BSLParser.ConstValueContext.class::isInstance)

src/test/java/com/github/_1c_syntax/bsl/languageserver/diagnostics/UselessTernaryOperatorDiagnosticTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.List;
3030

3131
import static com.github._1c_syntax.bsl.languageserver.util.Assertions.assertThat;
32+
import static org.assertj.core.api.Assertions.assertThatCode;
3233

3334
class UselessTernaryOperatorDiagnosticTest extends AbstractDiagnosticTest<UselessTernaryOperatorDiagnostic> {
3435

@@ -83,4 +84,14 @@ void testQuickFix() {
8384
.hasNewText("НЕ (Б=0)");
8485
}
8586

87+
@Test
88+
void testMalformedTernaryOperatorDoesNotThrowNPE() {
89+
// Проверяем, что на некорректном синтаксисе не падает NullPointerException
90+
// Пример из issue: Return ?(table.Count() = 1, undefined, );
91+
var documentContext = getDocumentContext("UselessTernaryOperatorDiagnosticMalformed");
92+
93+
assertThatCode(() -> getDiagnostics(documentContext))
94+
.doesNotThrowAnyException();
95+
}
96+
8697
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
// Тест на некорректный синтаксис - не должен падать с NullPointerException
2+
Возврат ?(таблица.Количество() = 1, Неопределено, );

0 commit comments

Comments
 (0)