Skip to content

Commit ca2e11d

Browse files
cushonError Prone Team
authored andcommitted
Fix some crashes in warning-level checks
PiperOrigin-RevId: 774814165
1 parent a9eab60 commit ca2e11d

4 files changed

Lines changed: 47 additions & 1 deletion

File tree

core/src/main/java/com/google/errorprone/bugpatterns/BooleanLiteral.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public Description matchMemberSelect(MemberSelectTree tree, VisitorState state)
5252

5353
private Description match(ExpressionTree tree, VisitorState state) {
5454
Symbol sym = getSymbol(tree);
55-
if (sym == null) {
55+
if (sym == null || sym.owner == null) {
5656
return NO_MATCH;
5757
}
5858
if (!sym.owner.equals(state.getTypes().boxedClass(state.getSymtab().booleanType))) {

core/src/main/java/com/google/errorprone/bugpatterns/UnnecessaryParentheses.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static com.google.errorprone.BugPattern.SeverityLevel.WARNING;
2020
import static com.google.errorprone.matchers.Description.NO_MATCH;
2121
import static com.google.errorprone.util.ASTHelpers.getStartPosition;
22+
import static com.google.errorprone.util.ASTHelpers.hasExplicitSource;
2223

2324
import com.google.errorprone.BugPattern;
2425
import com.google.errorprone.VisitorState;
@@ -43,6 +44,9 @@ public class UnnecessaryParentheses extends BugChecker
4344

4445
@Override
4546
public Description matchAnnotation(AnnotationTree tree, VisitorState state) {
47+
if (!hasExplicitSource(tree, state)) {
48+
return NO_MATCH;
49+
}
4650
return state.getSourceForNode(tree).endsWith("()")
4751
? describeMatch(
4852
tree,

core/src/test/java/com/google/errorprone/bugpatterns/BooleanLiteralTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,18 @@ void f() {
7777
.expectUnchanged()
7878
.doTest();
7979
}
80+
81+
@Test
82+
public void moduleInfo() {
83+
refactoringHelper
84+
.addInputLines(
85+
"module-info.java",
86+
"""
87+
module foo {
88+
requires java.base;
89+
}
90+
""")
91+
.expectUnchanged()
92+
.doTest();
93+
}
8094
}

core/src/test/java/com/google/errorprone/bugpatterns/UnnecessaryParenthesesTest.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.errorprone.bugpatterns;
1818

19+
import com.google.auto.value.processor.AutoValueProcessor;
1920
import com.google.errorprone.BugCheckerRefactoringTestHelper;
2021
import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode;
2122
import com.google.errorprone.CompilationTestHelper;
@@ -369,4 +370,31 @@ public String toString() {
369370
// Using TEXT_MATCH because the ASTs are the same with or without the parentheses!
370371
.doTest(TestMode.TEXT_MATCH);
371372
}
373+
374+
@Test
375+
public void recordParameters() {
376+
testHelper
377+
.addInputLines(
378+
"R.java",
379+
"""
380+
import org.checkerframework.checker.nullness.qual.Nullable;
381+
import org.checkerframework.dataflow.qual.Pure;
382+
import com.google.auto.value.AutoBuilder;
383+
384+
/**
385+
* A record with parameters.
386+
*
387+
* @param x parameter x
388+
* @param y parameter y
389+
* @param z parameter z
390+
*/
391+
public record R(@Pure boolean x, @Pure @Nullable String y, @Pure @Nullable String z) {
392+
@AutoBuilder
393+
public abstract static class Builder {}
394+
}
395+
""")
396+
.expectUnchanged()
397+
.setArgs("-processor", AutoValueProcessor.class.getName())
398+
.doTest(TestMode.TEXT_MATCH);
399+
}
372400
}

0 commit comments

Comments
 (0)