Skip to content

Commit

Permalink
ArC - fix resolution if the required type is wildcard
Browse files Browse the repository at this point in the history
- resolves #3311
  • Loading branch information
mkouba authored and gsmet committed Nov 15, 2019
1 parent 63c83aa commit a1bbe04
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ boolean matchesNoBoxing(Type requiredType, Type beanType) {
}
return true;
}
} else if (WILDCARD_TYPE.equals(requiredType.kind())) {
return parametersMatch(requiredType, beanType);
}
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ public class RemoveUnusedBeansTest {
@RegisterExtension
public ArcTestContainer container = ArcTestContainer.builder()
.beanClasses(HasObserver.class, Foo.class, FooAlternative.class, HasName.class, UnusedProducers.class,
InjectedViaInstance.class, InjectedViaProvider.class, Excluded.class, UsedProducers.class,
InjectedViaInstance.class, InjectedViaInstanceWithWildcard.class, InjectedViaInstanceWithWildcard2.class,
InjectedViaProvider.class, Excluded.class,
UsedProducers.class,
UnusedProducerButInjected.class, UsedViaInstanceWithUnusedProducer.class, UsesBeanViaInstance.class)
.removeUnusedBeans(true)
.addRemovalExclusion(b -> b.getBeanClass().toString().equals(Excluded.class.getName()))
Expand All @@ -40,6 +42,8 @@ public void testRemoval() {
assertTrue(container.instance(HasObserver.class).isAvailable());
assertTrue(container.instance(HasName.class).isAvailable());
assertTrue(container.instance(InjectedViaInstance.class).isAvailable());
assertTrue(container.instance(InjectedViaInstanceWithWildcard.class).isAvailable());
assertTrue(container.instance(InjectedViaInstanceWithWildcard2.class).isAvailable());
assertTrue(container.instance(InjectedViaProvider.class).isAvailable());
assertTrue(container.instance(String.class).isAvailable());
assertTrue(container.instance(UsedProducers.class).isAvailable());
Expand Down Expand Up @@ -96,6 +100,12 @@ static class FooAlternative extends Foo {
@Inject
Instance<InjectedViaInstance> instance;

@Inject
Instance<? extends InjectedViaInstanceWithWildcard> instanceWildcard;

@Inject
Instance<Comparable<? extends Foo>> instanceWildcard2;

@Inject
String foo;

Expand All @@ -106,6 +116,21 @@ static class InjectedViaInstance {

}

@Singleton
static class InjectedViaInstanceWithWildcard {

}

@Singleton
static class InjectedViaInstanceWithWildcard2 implements Comparable<FooAlternative> {

@Override
public int compareTo(FooAlternative o) {
return 0;
}

}

@Singleton
static class InjectedViaProvider {

Expand Down

0 comments on commit a1bbe04

Please sign in to comment.