Skip to content

Commit 8be0e58

Browse files
TypeUtils#isOfType() should not compare annotations on methods (#4945)
1 parent 04059ce commit 8be0e58

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

rewrite-java-tck/src/main/java/org/openrewrite/java/tree/TypeUtilsTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.util.EnumSet;
2828
import java.util.function.Consumer;
2929

30+
import static java.util.Collections.emptyList;
3031
import static java.util.Collections.singletonList;
3132
import static org.assertj.core.api.Assertions.assertThat;
3233
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -233,6 +234,29 @@ public J.VariableDeclarations.NamedVariable visitVariable(J.VariableDeclarations
233234
);
234235
}
235236

237+
@Test
238+
void methodWithAnnotationsIsOfType() {
239+
rewriteRun(
240+
java(
241+
"""
242+
class Test {
243+
@Deprecated
244+
void foo() {}
245+
}
246+
""",
247+
spec -> spec.afterRecipe(cu -> new JavaIsoVisitor<>() {
248+
@Override
249+
public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, Object o) {
250+
assertThat(TypeUtils.isOfType(method.getMethodType(), method.getMethodType())).isTrue();
251+
assertThat(TypeUtils.isOfType(method.getMethodType().withAnnotations(emptyList()), method.getMethodType())).isTrue();
252+
assertThat(TypeUtils.isOfType(method.getMethodType(), method.getMethodType().withAnnotations(emptyList()))).isTrue();
253+
return method;
254+
}
255+
}.visit(cu, new InMemoryExecutionContext()))
256+
)
257+
);
258+
}
259+
236260
@Test
237261
void isParameterizedTypeOfType() {
238262
rewriteRun(

rewrite-java/src/main/java/org/openrewrite/java/tree/TypeUtils.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,9 @@ public static boolean isOfType(@Nullable JavaType type1, @Nullable JavaType type
139139
JavaType.Method method1 = (JavaType.Method) type1;
140140
JavaType.Method method2 = (JavaType.Method) type2;
141141
if (!method1.getName().equals(method2.getName()) ||
142-
method1.getFlags().size() != method2.getFlags().size() ||
143-
!method1.getFlags().containsAll(method2.getFlags()) ||
142+
method1.getFlagsBitMap() != method2.getFlagsBitMap() ||
144143
!TypeUtils.isOfType(method1.getDeclaringType(), method2.getDeclaringType()) ||
145144
!TypeUtils.isOfType(method1.getReturnType(), method2.getReturnType()) ||
146-
method1.getAnnotations().size() != method2.getAnnotations().size() ||
147145
method1.getThrownExceptions().size() != method2.getThrownExceptions().size() ||
148146
method1.getParameterTypes().size() != method2.getParameterTypes().size()) {
149147
return false;
@@ -159,11 +157,6 @@ public static boolean isOfType(@Nullable JavaType type1, @Nullable JavaType type
159157
return false;
160158
}
161159
}
162-
for (int index = 0; index < method1.getAnnotations().size(); index++) {
163-
if (!TypeUtils.isOfType(method1.getAnnotations().get(index), method2.getAnnotations().get(index))) {
164-
return false;
165-
}
166-
}
167160
return true;
168161
}
169162
return type1.equals(type2);

0 commit comments

Comments
 (0)