diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlock.java b/core/src/main/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlock.java index 7210e2a5f2e..de8ca29da8c 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlock.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlock.java @@ -71,7 +71,7 @@ public Description matchClass(ClassTree tree, VisitorState state) { @Override public Void visitClass(ClassTree node, Void unused) { for (Tree member : node.getMembers()) { - if (member.getKind().equals(Tree.Kind.CLASS)) { + if (member instanceof ClassTree) { continue; } scan(member, null); diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlockTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlockTest.java index 8cade0cb24b..bce0b5f64a0 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlockTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/ClassInitializationDeadlockTest.java @@ -266,4 +266,34 @@ public void negativeNonPrivateUnrelatedSuper() { "}") .doTest(); } + + @Test + public void nestedEnum() { + testHelper + .addSourceLines( + "TestInterface.java", // + "public interface TestInterface {", + " default Object foo() {", + " return null;", + " }", + " enum TestEnum implements TestInterface {", + " INSTANCE;", + " }", + "}") + .doTest(); + } + + @Test + public void nestedInterface() { + testHelper + .addSourceLines( + "Foo.java", // + "interface Foo {", + " default void foo() {}", + " interface Sub extends Foo {", + " final Sub INSTANCE = new Sub() {};", + " }", + "}") + .doTest(); + } }