Fix singletons to be eager as intended.
git-svn-id: https://google-guice.googlecode.com/svn/trunk@1233 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/extensions/mini/src/com/google/inject/mini/MiniGuice.java b/extensions/mini/src/com/google/inject/mini/MiniGuice.java
index 73aa6ee..5484a79 100644
--- a/extensions/mini/src/com/google/inject/mini/MiniGuice.java
+++ b/extensions/mini/src/com/google/inject/mini/MiniGuice.java
@@ -260,6 +260,7 @@
private void putBinding(Key key, Provider<Object> provider, boolean singleton) {
if (singleton) {
+ singletons.add(key);
final Provider<Object> unscoped = provider;
provider = new Provider<Object>() {
private Object onlyInstance = UNINITIALIZED;
diff --git a/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java b/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java
index d8da04f..318c2e2 100644
--- a/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java
+++ b/extensions/mini/test/com/google/inject/mini/MiniGuiceTest.java
@@ -16,6 +16,7 @@
package com.google.inject.mini;
import com.google.inject.Provides;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import javax.inject.Inject;
import javax.inject.Named;
@@ -221,4 +222,33 @@
public static class Q extends P {
@Inject Q() {}
}
+
+ public void testSingletonsAreEager() {
+ final AtomicBoolean sInjected = new AtomicBoolean();
+
+ R.injected = false;
+ MiniGuice.inject(A.class, new Object() {
+ @Provides F provideF(R r) {
+ return new F();
+ }
+
+ @Provides @Singleton S provideS() {
+ sInjected.set(true);
+ return new S();
+ }
+ });
+
+ assertTrue(R.injected);
+ assertTrue(sInjected.get());
+ }
+
+ @Singleton
+ static class R {
+ static boolean injected = false;
+ @Inject R() {
+ injected = true;
+ }
+ }
+
+ static class S {}
}