fix: fixed return type bug

This commit is contained in:
zaaarf 2023-03-18 14:03:25 +01:00
parent 45ed48b675
commit c1cb2184aa
No known key found for this signature in database
GPG key ID: 82240E075E31FA4C
2 changed files with 16 additions and 7 deletions

View file

@ -1,5 +1,7 @@
package ftbsc.lll.proxies; package ftbsc.lll.proxies;
import java.lang.reflect.Modifier;
/** /**
* Abstract proxy class, implementing common aspects * Abstract proxy class, implementing common aspects
* of {@link MethodProxy} and {@link FieldProxy}. * of {@link MethodProxy} and {@link FieldProxy}.
@ -33,7 +35,7 @@ public abstract class AbstractProxy {
/** /**
* @return the modifiers of the member, as a packed int * @return the modifiers of the member, as a packed int
* @see java.lang.reflect.Modifier * @see Modifier
*/ */
public int getModifiers() { public int getModifiers() {
return this.modifiers; return this.modifiers;

View file

@ -75,23 +75,30 @@ public class MethodProxy extends AbstractProxy {
return this.descriptorCache; return this.descriptorCache;
DescriptorBuilder b = new DescriptorBuilder(); DescriptorBuilder b = new DescriptorBuilder();
for(Object p : this.parameters) for(Object p : this.parameters)
addParameterToBuilder(b, p); addTypeToDescriptorBuilder(b, p, false);
addParameterToBuilder(b, this.returnType); addTypeToDescriptorBuilder(b, this.returnType, true);
this.descriptorCache = b.build(); this.descriptorCache = b.build();
return this.descriptorCache; return this.descriptorCache;
} }
/** /**
* A static method used internally to correctly insert a * A static method used internally to detect and correctly insert a
* {@link TypeContainer} into a {@link DescriptorBuilder}. * {@link TypeContainer} into a {@link DescriptorBuilder}.
* @param b the {@link DescriptorBuilder} * @param b the {@link DescriptorBuilder}
* @param p the {@link TypeContainer} * @param p the {@link TypeContainer}
* @param isReturnType whether it should be inserted as a return type
*/ */
private static void addParameterToBuilder(DescriptorBuilder b, Object p) { private static void addTypeToDescriptorBuilder(DescriptorBuilder b, Object p, boolean isReturnType) {
if(p instanceof TypeContainer) { if(p instanceof TypeContainer) {
TypeContainer param = (TypeContainer) p; TypeContainer param = (TypeContainer) p;
b.addParameter(param.fqn, param.arrayLevel); if(isReturnType)
} else b.addParameter((Class<?>) p); b.setReturnType(param.fqn, param.arrayLevel);
else b.addParameter(param.fqn, param.arrayLevel);
} else {
if(isReturnType)
b.setReturnType((Class<?>) p);
else b.addParameter((Class<?>) p);
}
} }
/** /**