From 4e74fcefd7bb3b3d2d49a93c4bca39e5eb1c7277 Mon Sep 17 00:00:00 2001 From: Christopher Ng Date: Tue, 12 Dec 2017 09:52:52 -0800 Subject: [PATCH] Use more general type for DoubleCheck.provider() (and SingleCheck) to satisfy Java 9 Eclipse JDT type inference quirks Fixes https://github.com/google/dagger/issues/949 Closes https://github.com/google/dagger/pull/957 RELNOTES=Fixed a compilation issue with eclipse ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=178773557 --- java/dagger/internal/DoubleCheck.java | 8 ++++++-- java/dagger/internal/SingleCheck.java | 4 +++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/java/dagger/internal/DoubleCheck.java b/java/dagger/internal/DoubleCheck.java index e4a074b40ad..675a343aac2 100644 --- a/java/dagger/internal/DoubleCheck.java +++ b/java/dagger/internal/DoubleCheck.java @@ -65,7 +65,9 @@ public T get() { } /** Returns a {@link Provider} that caches the value from the given delegate provider. */ - public static Provider provider(Provider delegate) { + // This method is declared this way instead of " Provider provider(Provider delegate)" + // to work around an Eclipse type inference bug: https://github.com/google/dagger/issues/949. + public static

, T> Provider provider(P delegate) { checkNotNull(delegate); if (delegate instanceof DoubleCheck) { /* This should be a rare case, but if we have a scoped @Binds that delegates to a scoped @@ -76,7 +78,9 @@ public static Provider provider(Provider delegate) { } /** Returns a {@link Lazy} that caches the value from the given provider. */ - public static Lazy lazy(Provider provider) { + // This method is declared this way instead of " Lazy lazy(Provider delegate)" + // to work around an Eclipse type inference bug: https://github.com/google/dagger/issues/949. + public static

, T> Lazy lazy(P provider) { if (provider instanceof Lazy) { @SuppressWarnings("unchecked") final Lazy lazy = (Lazy) provider; diff --git a/java/dagger/internal/SingleCheck.java b/java/dagger/internal/SingleCheck.java index 45b1bd793d1..4c8b6c22047 100644 --- a/java/dagger/internal/SingleCheck.java +++ b/java/dagger/internal/SingleCheck.java @@ -54,7 +54,9 @@ public T get() { } /** Returns a {@link Provider} that caches the value from the given delegate provider. */ - public static Provider provider(Provider provider) { + // This method is declared this way instead of " Provider provider(Provider provider)" + // to work around an Eclipse type inference bug: https://github.com/google/dagger/issues/949. + public static

, T> Provider provider(P provider) { // If a scoped @Binds delegates to a scoped binding, don't cache the value again. if (provider instanceof SingleCheck || provider instanceof DoubleCheck) { return provider;