fixes issue 478.

git-svn-id: https://google-guice.googlecode.com/svn/trunk@1159 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
index d3e2783..ee8f9fe 100644
--- a/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
+++ b/extensions/assistedinject/src/com/google/inject/assistedinject/FactoryProvider2.java
@@ -455,7 +455,7 @@
           if(constructor == null) {
             binder.bind(assistedReturnType).to((Key)returnType);
           } else {
-            binder.bind(assistedReturnType).toConstructor((Constructor)constructor);
+            binder.bind(assistedReturnType).toConstructor((Constructor)constructor, (TypeLiteral)returnType.getTypeLiteral());
           }
         }
       }
diff --git a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
index 6a8de20..940fe93 100644
--- a/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
+++ b/extensions/assistedinject/test/com/google/inject/assistedinject/FactoryModuleBuilderTest.java
@@ -17,9 +17,12 @@
 package com.google.inject.assistedinject;
 
 import com.google.inject.AbstractModule;
+
 import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
+import com.google.inject.Key;
+import com.google.inject.TypeLiteral;
 import com.google.inject.name.Named;
 import com.google.inject.name.Names;
 
@@ -152,6 +155,18 @@
     Beetle beetle = factory.getBeetle(Color.GREEN);
     assertEquals(Color.GREEN, beetle.color);
   }
+  
+  public void testParameterizedClassesWithNoImplements() {
+    Injector injector = Guice.createInjector(new AbstractModule() {
+      @Override
+      protected void configure() {
+        install(new FactoryModuleBuilder().build(new TypeLiteral<Foo.Factory<String>>() {}));
+      }
+    });
+    
+    Foo.Factory<String> factory = injector.getInstance(Key.get(new TypeLiteral<Foo.Factory<String>>() {}));
+    Foo<String> foo = factory.create(new Bar());
+  }
 
   interface Car {}
 
@@ -192,4 +207,15 @@
       this.color = color;
     }
   }
+  
+  public static class Foo<E> {
+    static interface Factory<E> {
+      Foo<E> create(Bar bar);
+    }
+    @Inject Foo(@Assisted Bar bar, Baz<E> baz) {}
+  }
+  
+  public static class Bar {}
+  public static class Baz<E> {}
+  
 }