diff --git a/inject-generator/src/main/java/io/avaje/inject/generator/InjectProcessor.java b/inject-generator/src/main/java/io/avaje/inject/generator/InjectProcessor.java index 21feb880..6d3956c3 100644 --- a/inject-generator/src/main/java/io/avaje/inject/generator/InjectProcessor.java +++ b/inject-generator/src/main/java/io/avaje/inject/generator/InjectProcessor.java @@ -32,6 +32,7 @@ import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.NestingKind; import javax.lang.model.element.TypeElement; import javax.lang.model.util.ElementFilter; import javax.lang.model.util.Elements; @@ -322,6 +323,9 @@ private void readChangedBeans(Set beans, boolean factory, boolean i if (typeElement.getKind() == ElementKind.INTERFACE) { continue; } + if (factory && typeElement.getNestingKind() != NestingKind.TOP_LEVEL) { + logError(typeElement, "@Factory Classes cannot be nested"); + } final var scope = findScope(typeElement); if (!factory) { // will be found via custom scope so effectively ignore additional @Singleton