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 {}
 }