fix: getting injector candidates from wrong list

This commit is contained in:
zaaarf 2023-03-25 18:27:31 +01:00
parent 193db6bf7b
commit e2c4ccdce3
No known key found for this signature in database
GPG key ID: 82240E075E31FA4C

View file

@ -200,7 +200,7 @@ public class LilleroProcessor extends AbstractProcessor {
//take care of TypeProxies and FieldProxies first //take care of TypeProxies and FieldProxies first
for(VariableElement proxyVar : finders) { for(VariableElement proxyVar : finders) {
ProxyType type = getProxyType(proxyVar); ProxyType type = getProxyType(proxyVar);
if(type == ProxyType.METHOD) //methods will be handled later if(type == ProxyType.METHOD && !proxyVar.getAnnotation(Find.class).name().equals("")) //methods will be handled later
continue; continue;
//case-specific handling //case-specific handling
if(type == ProxyType.TYPE) { if(type == ProxyType.TYPE) {
@ -214,7 +214,7 @@ public class LilleroProcessor extends AbstractProcessor {
clazz.fqnObf, //use obf name, at runtime it will be obfuscated clazz.fqnObf, //use obf name, at runtime it will be obfuscated
mapModifiers(clazz.elem.getModifiers()) mapModifiers(clazz.elem.getModifiers())
); );
} else if(type == ProxyType.FIELD) } else if(type == ProxyType.FIELD || type == ProxyType.METHOD)
appendMemberFinderDefinition(targetClass, proxyVar, null, constructorBuilder, this.processingEnv, this.mapper); appendMemberFinderDefinition(targetClass, proxyVar, null, constructorBuilder, this.processingEnv, this.mapper);
finders.remove(proxyVar); //remove finders that have already been processed finders.remove(proxyVar); //remove finders that have already been processed
} }
@ -226,6 +226,9 @@ public class LilleroProcessor extends AbstractProcessor {
.map(Object::toString) .map(Object::toString)
.collect(Collectors.toList()); .collect(Collectors.toList());
//targets that have matched at least once are put in here
Set<ExecutableElement> matchedTargets;
//this will contain the classes to generate: the key is the class name //this will contain the classes to generate: the key is the class name
HashMap<String, InjectorInfo> toGenerate = new HashMap<>(); HashMap<String, InjectorInfo> toGenerate = new HashMap<>();
@ -252,8 +255,8 @@ public class LilleroProcessor extends AbstractProcessor {
//case 2: there is only one injector //case 2: there is only one injector
finderCandidates = new ArrayList<>(); //no candidates finderCandidates = new ArrayList<>(); //no candidates
injectorCandidates = new ArrayList<>(); injectorCandidates = new ArrayList<>();
injectorCandidates.add(targets.get(0)); injectorCandidates.add(injectors.get(0));
} else { } else { //todo match finders based on same name
//case 3: try to match by injectTargetName //case 3: try to match by injectTargetName
finderCandidates = new ArrayList<>(); //no candidates finderCandidates = new ArrayList<>(); //no candidates
String inferredName = "inject" + tg.getSimpleName(); String inferredName = "inject" + tg.getSimpleName();
@ -293,7 +296,6 @@ public class LilleroProcessor extends AbstractProcessor {
finders.remove(finder); //unlike injectors, finders can't apply to multiple targets finders.remove(finder); //unlike injectors, finders can't apply to multiple targets
} }
} }
} }
} }