From 525cd45b944f4b534ff47e39515d9c5e92b49660 Mon Sep 17 00:00:00 2001 From: Josiah Noel <32279667+SentryMan@users.noreply.github.com> Date: Wed, 19 Nov 2025 17:38:21 -0500 Subject: [PATCH] Throw compile error for nested factory --- .../main/java/io/avaje/inject/generator/InjectProcessor.java | 4 ++++ 1 file changed, 4 insertions(+) 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 21feb8809..6d3956c37 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