aboutsummaryrefslogtreecommitdiff
path: root/java/dagger/hilt/processor/internal/root/RootMetadata.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/dagger/hilt/processor/internal/root/RootMetadata.java')
-rw-r--r--java/dagger/hilt/processor/internal/root/RootMetadata.java29
1 files changed, 3 insertions, 26 deletions
diff --git a/java/dagger/hilt/processor/internal/root/RootMetadata.java b/java/dagger/hilt/processor/internal/root/RootMetadata.java
index 8166d668e..55f6e9c4e 100644
--- a/java/dagger/hilt/processor/internal/root/RootMetadata.java
+++ b/java/dagger/hilt/processor/internal/root/RootMetadata.java
@@ -21,7 +21,6 @@ import static com.google.common.base.Suppliers.memoize;
import static dagger.internal.codegen.extension.DaggerStreams.toImmutableSet;
import androidx.room.compiler.processing.XConstructorElement;
-import androidx.room.compiler.processing.XMethodElement;
import androidx.room.compiler.processing.XProcessingEnv;
import androidx.room.compiler.processing.XTypeElement;
import com.google.common.base.Supplier;
@@ -40,6 +39,7 @@ import javax.tools.Diagnostic;
/** Contains metadata about the given hilt root. */
public final class RootMetadata {
+
private static final ClassName APPLICATION_CONTEXT_MODULE =
ClassName.get("dagger.hilt.android.internal.modules", "ApplicationContextModule");
@@ -195,33 +195,10 @@ public final class RootMetadata {
}
private static boolean daggerCanConstruct(XTypeElement type) {
- if (type.isKotlinObject()) {
- // Treat Kotlin object modules as if Dagger can construct them (it technically can't, but it
- // doesn't need to as it can use them since all their provision methods are static).
+ if (!Processors.requiresModuleInstance(type)) {
return true;
}
-
- return !isInnerClass(type)
- && !hasNonDaggerAbstractMethod(type)
- && (hasOnlyStaticProvides(type) || hasVisibleEmptyConstructor(type));
- }
-
- private static boolean isInnerClass(XTypeElement type) {
- return type.isNested() && !type.isStatic();
- }
-
- private static boolean hasNonDaggerAbstractMethod(XTypeElement type) {
- // TODO(erichang): Actually this isn't really supported b/28989613
- return type.getDeclaredMethods().stream()
- .filter(XMethodElement::isAbstract)
- .anyMatch(method -> !Processors.hasDaggerAbstractMethodAnnotation(method));
- }
-
- private static boolean hasOnlyStaticProvides(XTypeElement type) {
- // TODO(erichang): Check for @Produces too when we have a producers story
- return type.getDeclaredMethods().stream()
- .filter(method -> method.hasAnnotation(ClassNames.PROVIDES))
- .allMatch(XMethodElement::isStatic);
+ return hasVisibleEmptyConstructor(type) && (!type.isNested() || type.isStatic());
}
private static boolean hasVisibleEmptyConstructor(XTypeElement type) {