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 {
*
* - A type declares type variables or is an inner class of a type with a generic declaration.
* - A method declares at least one type variable.
+ * - A type is an inner anonymous class of a method with a generic declaration
*
*
* @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 {
/* */
}