Skip to content

Commit e91804a

Browse files
committed
DeclaresType should also pick up J.NewClass when includeSubtypes is true
1 parent 18bd44f commit e91804a

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

rewrite-java/src/main/java/org/openrewrite/java/search/DeclaresType.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,12 @@ public J.ClassDeclaration visitClassDeclaration(J.ClassDeclaration classDecl, P
4343
}
4444
return super.visitClassDeclaration(classDecl, p);
4545
}
46+
47+
@Override
48+
public J.NewClass visitNewClass(J.NewClass newClass, P p) {
49+
if (includeSubtypes && newClass.getBody() != null && TypeUtils.isAssignableTo(type, newClass.getType())) {
50+
return SearchResult.found(newClass);
51+
}
52+
return super.visitNewClass(newClass, p);
53+
}
4654
}

rewrite-java/src/test/java/org/openrewrite/java/search/DeclaresTypeTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.junit.jupiter.api.Test;
1919
import org.openrewrite.DocumentExample;
20+
import org.openrewrite.Issue;
2021
import org.openrewrite.test.RecipeSpec;
2122
import org.openrewrite.test.RewriteTest;
2223
import org.openrewrite.test.SourceSpec;
@@ -70,6 +71,35 @@ class A implements Foo{}
7071
);
7172
}
7273

74+
@Issue("https://github.com/openrewrite/rewrite-migrate-java/pull/961")
75+
@Test
76+
void detectSubtypeWhenEnabledOnAnonymousClass() {
77+
rewriteRun(
78+
spec -> spec.recipe(RewriteTest.toRecipe(() -> new DeclaresType<>("com.sample.Foo", true))),
79+
java(
80+
"""
81+
package com.sample;
82+
public class Foo{}
83+
""",
84+
SourceSpec::skip
85+
),
86+
java(
87+
"""
88+
import com.sample.Foo;
89+
class A {
90+
Foo foo = new Foo(){};
91+
}
92+
""",
93+
"""
94+
import com.sample.Foo;
95+
class A {
96+
Foo foo = /*~~>*/new Foo(){};
97+
}
98+
"""
99+
)
100+
);
101+
}
102+
73103
@Test
74104
void subtypeNotEnabledByDefault() {
75105
rewriteRun(

0 commit comments

Comments
 (0)