fix: added missing case in main loop

This commit is contained in:
zaaarf 2023-03-25 20:41:28 +01:00
parent d967afe2e3
commit b793bddaa0
No known key found for this signature in database
GPG key ID: 82240E075E31FA4C

View file

@ -223,13 +223,6 @@ public class LilleroProcessor extends AbstractProcessor {
appendMemberFinderDefinition(targetClass, proxyVar, null, constructorBuilder, this.processingEnv, this.mapper); appendMemberFinderDefinition(targetClass, proxyVar, null, constructorBuilder, this.processingEnv, this.mapper);
} }
//declare it once for efficiency
List<String> injectorNames =
injectors.stream()
.map(ExecutableElement::getSimpleName)
.map(Object::toString)
.collect(Collectors.toList());
//targets that have matched at least once are put in here //targets that have matched at least once are put in here
Set<ExecutableElement> matchedTargets = new HashSet<>(); Set<ExecutableElement> matchedTargets = new HashSet<>();
@ -276,6 +269,10 @@ public class LilleroProcessor extends AbstractProcessor {
throw new AmbiguousDefinitionException( throw new AmbiguousDefinitionException(
String.format("Target specified user %s, but name was used by both a finder and injector.", targetAnn.of()) String.format("Target specified user %s, but name was used by both a finder and injector.", targetAnn.of())
); );
else if(finderCandidates.size() == 0 && injectorCandidates.size() == 0)
throw new AmbiguousDefinitionException(
String.format("Could not find any candidate mathcing target %s", tg.getSimpleName().toString())
);
else if(finderCandidates.size() == 0 && injectorCandidates.size() != 1) else if(finderCandidates.size() == 0 && injectorCandidates.size() != 1)
throw new AmbiguousDefinitionException( throw new AmbiguousDefinitionException(
String.format("Found multiple candidate injectors for target %s::%s!", cl.getSimpleName(), tg.getSimpleName()) String.format("Found multiple candidate injectors for target %s::%s!", cl.getSimpleName(), tg.getSimpleName())
@ -285,6 +282,7 @@ public class LilleroProcessor extends AbstractProcessor {
String.format("Found multiple candidate finders for target %s::%s!", cl.getSimpleName(), tg.getSimpleName()) String.format("Found multiple candidate finders for target %s::%s!", cl.getSimpleName(), tg.getSimpleName())
); );
else { else {
matchedTargets.add(tg);
if(injectorCandidates.size() == 1) { if(injectorCandidates.size() == 1) {
//matched an injector! //matched an injector!
toGenerate.put( toGenerate.put(
@ -307,6 +305,10 @@ public class LilleroProcessor extends AbstractProcessor {
} }
} }
//find orphan targets and warn
Set<ExecutableElement> orphanTargets = targets.stream().filter(t -> !matchedTargets.contains(t)).collect(Collectors.toSet());
//TODO!
//iterate over the map and generate the classes //iterate over the map and generate the classes
for(String injName : toGenerate.keySet()) { for(String injName : toGenerate.keySet()) {
String targetMethodDescriptor = descriptorFromExecutableElement(toGenerate.get(injName).target); String targetMethodDescriptor = descriptorFromExecutableElement(toGenerate.get(injName).target);