Skip to content

Commit 43bbb79

Browse files
authored
Fix crash with suggested suppressions in JSpecify mode (#1001)
We were calling the wrong overload and hence accidentally passing an incorrect tree on which to apply a `@SuppressWarnings` annotation. Fixes #996
1 parent e0718a8 commit 43bbb79

File tree

2 files changed

+53
-1
lines changed

2 files changed

+53
-1
lines changed

nullaway/src/main/java/com/uber/nullaway/NullAway.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,6 @@ public Description matchAssignment(AssignmentTree tree, VisitorState state) {
498498
// logic
499499
return errorBuilder.createErrorDescription(
500500
errorMessage,
501-
expression,
502501
buildDescription(tree),
503502
state,
504503
ASTHelpers.getSymbol(tree.getVariable()));
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.uber.nullaway.jspecify;
2+
3+
import com.google.errorprone.BugCheckerRefactoringTestHelper;
4+
import com.uber.nullaway.NullAway;
5+
import java.io.IOException;
6+
import org.junit.Rule;
7+
import org.junit.Test;
8+
import org.junit.rules.TemporaryFolder;
9+
10+
/** Tests for combining fix suggestions with JSpecify mode. */
11+
public class SuggestedFixesTests {
12+
13+
@Rule public TemporaryFolder temporaryFolder = new TemporaryFolder();
14+
15+
private BugCheckerRefactoringTestHelper makeTestHelper() {
16+
return BugCheckerRefactoringTestHelper.newInstance(NullAway.class, getClass())
17+
.setArgs(
18+
"-d",
19+
temporaryFolder.getRoot().getAbsolutePath(),
20+
"-processorpath",
21+
SuggestedFixesTests.class.getProtectionDomain().getCodeSource().getLocation().getPath(),
22+
"-XepOpt:NullAway:AnnotatedPackages=com.uber",
23+
"-XepOpt:NullAway:JSpecifyMode=true",
24+
"-XepOpt:NullAway:SuggestSuppressions=true");
25+
}
26+
27+
@Test
28+
public void suggestSuppressionForAssigningNullableIntoNonNullArray() throws IOException {
29+
makeTestHelper()
30+
.addInputLines(
31+
"Test.java",
32+
"package com.uber;",
33+
"import org.jspecify.annotations.Nullable;",
34+
"class Test {",
35+
" void test() {",
36+
" Object[] arr = new Object[1];",
37+
" arr[0] = null;",
38+
" }",
39+
"}")
40+
.addOutputLines(
41+
"out/Test.java",
42+
"package com.uber;",
43+
"import org.jspecify.annotations.Nullable;",
44+
"class Test {",
45+
" @SuppressWarnings(\"NullAway\")",
46+
" void test() {",
47+
" Object[] arr = new Object[1];",
48+
" arr[0] = null;",
49+
" }",
50+
"}")
51+
.doTest();
52+
}
53+
}

0 commit comments

Comments
 (0)