Author: limpbizkit
Date: Sun Apr 26 14:00:24 2009
New Revision: 936

Modified:
    trunk/src/com/google/inject/BindingProcessor.java
    trunk/src/com/google/inject/internal/Errors.java
    trunk/test/com/google/inject/spi/ProviderMethodsTest.java

Log:
Tests and fix for issue 340.

Modified: trunk/src/com/google/inject/BindingProcessor.java
==============================================================================
--- trunk/src/com/google/inject/BindingProcessor.java   (original)
+++ trunk/src/com/google/inject/BindingProcessor.java   Sun Apr 26 14:00:24  
2009
@@ -28,6 +28,7 @@
  import com.google.inject.internal.LinkedProviderBindingImpl;
  import com.google.inject.internal.Lists;
  import com.google.inject.internal.ProviderInstanceBindingImpl;
+import com.google.inject.internal.ProviderMethod;
  import com.google.inject.internal.Scoping;
  import com.google.inject.internal.UntargettedBindingImpl;
  import com.google.inject.spi.BindingTargetVisitor;
@@ -66,7 +67,12 @@
      final Object source = command.getSource();

      if (Void.class.equals(command.getKey().getRawType())) {
-      errors.missingConstantValues();
+      if (command instanceof ProviderInstanceBinding
+          && ((ProviderInstanceBinding) command).getProviderInstance()  
instanceof ProviderMethod) {
+        errors.voidProviderMethod();
+      } else {
+        errors.missingConstantValues();
+      }
        return true;
      }


Modified: trunk/src/com/google/inject/internal/Errors.java
==============================================================================
--- trunk/src/com/google/inject/internal/Errors.java    (original)
+++ trunk/src/com/google/inject/internal/Errors.java    Sun Apr 26 14:00:24  
2009
@@ -218,6 +218,10 @@
          annotationType, scope);
    }

+  public Errors voidProviderMethod() {
+    return addMessage("Provider methods must return a value. Do not return  
void.");
+  }
+
    public Errors missingConstantValues() {
      return addMessage("Missing constant value. Please call to(...).");
    }

Modified: trunk/test/com/google/inject/spi/ProviderMethodsTest.java
==============================================================================
--- trunk/test/com/google/inject/spi/ProviderMethodsTest.java   (original)
+++ trunk/test/com/google/inject/spi/ProviderMethodsTest.java   Sun Apr 26  
14:00:24 2009
@@ -17,7 +17,7 @@
  package com.google.inject.spi;

  import com.google.inject.AbstractModule;
-import com.google.inject.Asserts;
+import static com.google.inject.Asserts.assertContains;
  import com.google.inject.Binder;
  import com.google.inject.BindingAnnotation;
  import com.google.inject.CreationException;
@@ -190,7 +190,7 @@
        });
        fail();
      } catch (CreationException expected) {
-      Asserts.assertContains(expected.getMessage(),
+      assertContains(expected.getMessage(),
            "more than one annotation annotated with  
@BindingAnnotation:", "Named", "Blue",
            "at " +  
getClass().getName(), ".provideString(ProviderMethodsTest.java:");
      }
@@ -352,5 +352,20 @@
      Provider provider = binding.getProviderInstance();
      assertEquals(ProviderMethod.class, provider.getClass());
      assertEquals(methodsObject, ((ProviderMethod) provider).getInstance());
+  }
+
+  public void testVoidProviderMethods() {
+    try {
+      Guice.createInjector(new AbstractModule() {
+        protected void configure() {}
+
+        @Provides void provideFoo() {}
+      });
+      fail();
+    } catch (CreationException expected) {
+      assertContains(expected.getMessage(),
+          "1) Provider methods must return a value. Do not return void.",
+          getClass().getName(), ".provideFoo(ProviderMethodsTest.java:");
+    }
    }
  }

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/google-guice-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to