make sure MembersInjector dependencies don't blow up on requireExplicitBindings.
git-svn-id: https://google-guice.googlecode.com/svn/trunk@1327 d779f126-a31b-0410-b53b-1d3aecad763e
diff --git a/core/src/com/google/inject/internal/InjectorImpl.java b/core/src/com/google/inject/internal/InjectorImpl.java
index 897e521..791d7da 100644
--- a/core/src/com/google/inject/internal/InjectorImpl.java
+++ b/core/src/com/google/inject/internal/InjectorImpl.java
@@ -212,7 +212,7 @@
throws ErrorsException {
- boolean jitOverride = isProvider(key) || isTypeLiteral(key);
+ boolean jitOverride = isProvider(key) || isTypeLiteral(key) || isMembersInjector(key);
if(options.jitDisabled && jitType == JitLimitation.NO_JIT && !jitOverride) {
throw errors.jitDisabled(key).toException();
}
diff --git a/core/test/com/google/inject/JitBindingsTest.java b/core/test/com/google/inject/JitBindingsTest.java
index 6e48316..ccf1516 100644
--- a/core/test/com/google/inject/JitBindingsTest.java
+++ b/core/test/com/google/inject/JitBindingsTest.java
@@ -323,6 +323,25 @@
assertEquals(of("bar"), foo.set);
}
+ public void testMembersInjectorsCanBeInjected() {
+ Injector injector = new InjectorBuilder()
+ .requireExplicitBindings()
+ .addModules(new AbstractModule() {
+ @Override protected void configure() {
+ }
+
+ @Provides String data(MembersInjector<String> mi) {
+ String data = "foo";
+ mi.injectMembers(data);
+ return data;
+ }
+ })
+ .build();
+
+ String data = injector.getInstance(String.class);
+ assertEquals("foo", data);
+ }
+
private void ensureWorks(Injector injector, Class<?>... classes) {
for(int i = 0; i < classes.length; i++) {
injector.getInstance(classes[i]);