From 3979f55cc58bef12e1a9589b2d545e7a99ecefd9 Mon Sep 17 00:00:00 2001 From: Marius Lichtblau Date: Wed, 22 Jun 2022 16:19:04 +0200 Subject: [PATCH] Fix isGenerified to work with anonymous subclasses using the enclosing methods type parameter --- .../java/net/bytebuddy/description/TypeVariableSource.java | 1 + .../net/bytebuddy/description/type/TypeDescription.java | 6 +++++- .../description/type/AbstractTypeDescriptionTest.java | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/byte-buddy-dep/src/main/java/net/bytebuddy/description/TypeVariableSource.java b/byte-buddy-dep/src/main/java/net/bytebuddy/description/TypeVariableSource.java index 7cbc255f5e3..0f63e308b81 100644 --- a/byte-buddy-dep/src/main/java/net/bytebuddy/description/TypeVariableSource.java +++ b/byte-buddy-dep/src/main/java/net/bytebuddy/description/TypeVariableSource.java @@ -88,6 +88,7 @@ public interface TypeVariableSource extends ModifierReviewable.OfAbstraction { * * * @return {@code true} if this type code element has a generic declaration. diff --git a/byte-buddy-dep/src/main/java/net/bytebuddy/description/type/TypeDescription.java b/byte-buddy-dep/src/main/java/net/bytebuddy/description/type/TypeDescription.java index 2285a75f6e3..b031c1fce88 100644 --- a/byte-buddy-dep/src/main/java/net/bytebuddy/description/type/TypeDescription.java +++ b/byte-buddy-dep/src/main/java/net/bytebuddy/description/type/TypeDescription.java @@ -8060,7 +8060,11 @@ public boolean isGenerified() { return false; } TypeDescription declaringType = getDeclaringType(); - return declaringType != null && declaringType.isGenerified(); + if (declaringType != null && declaringType.isGenerified()) { + return true; + } + MethodDescription.InDefinedShape enclosingMethod = getEnclosingMethod(); + return enclosingMethod != null && enclosingMethod.isGenerified(); } /** diff --git a/byte-buddy-dep/src/test/java/net/bytebuddy/description/type/AbstractTypeDescriptionTest.java b/byte-buddy-dep/src/test/java/net/bytebuddy/description/type/AbstractTypeDescriptionTest.java index 6b39873c6f5..12a1ed6bc61 100644 --- a/byte-buddy-dep/src/test/java/net/bytebuddy/description/type/AbstractTypeDescriptionTest.java +++ b/byte-buddy-dep/src/test/java/net/bytebuddy/description/type/AbstractTypeDescriptionTest.java @@ -666,6 +666,7 @@ public void testIsGenerified() throws Exception { assertThat(describe(GenericSample.Nested.class).isGenerified(), is(false)); assertThat(describe(GenericSample.NestedInterface.class).isGenerified(), is(false)); assertThat(describe(Object.class).isGenerified(), is(false)); + assertThat(describe(getAnonymousGenericSample().getClass()).isGenerified(), is(true)); } @Test @@ -1034,6 +1035,12 @@ interface NestedInterface { } } + private GenericSample getAnonymousGenericSample() { + return new GenericSample() { + /* empty */ + }; + } + private static class Type$With$Dollar { /* */ }