Skip to content

Commit 7d93df4

Browse files
cushonError Prone Team
authored and
Error Prone Team
committed
Fix handling of super:: method references in UnnecessaryMethodReference
Fixes #2102 PiperOrigin-RevId: 351900058
1 parent b1eaa17 commit 7d93df4

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.google.errorprone.predicates.TypePredicates;
3838
import com.google.errorprone.util.ASTHelpers.TargetType;
3939
import com.sun.source.tree.ExpressionTree;
40+
import com.sun.source.tree.IdentifierTree;
4041
import com.sun.source.tree.MemberReferenceTree;
4142
import com.sun.source.tree.MemberReferenceTree.ReferenceMode;
4243
import com.sun.source.tree.MethodInvocationTree;
@@ -69,6 +70,10 @@ public Description matchMemberReference(MemberReferenceTree tree, VisitorState s
6970
if (receiver == null) {
7071
return NO_MATCH;
7172
}
73+
if (receiver instanceof IdentifierTree
74+
&& ((IdentifierTree) receiver).getName().contentEquals("super")) {
75+
return NO_MATCH;
76+
}
7277
if (!isSubtype(getType(receiver), targetType.type(), state)) {
7378
return NO_MATCH;
7479
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,4 +164,23 @@ public void positiveCaseViaConvert() {
164164
"}")
165165
.doTest();
166166
}
167+
168+
@Test
169+
public void ignoreSuper() {
170+
helper
171+
.addSourceLines(
172+
"S.java", //
173+
"class S implements Runnable {",
174+
" public void run() {}",
175+
"}")
176+
.addSourceLines(
177+
"Test.java",
178+
"abstract class Test extends S {",
179+
" abstract void r(Runnable r);",
180+
" public void run() {",
181+
" r(super::run);",
182+
" }",
183+
"}")
184+
.doTest();
185+
}
167186
}

0 commit comments

Comments
 (0)