From c1cb2184aa1b86dd1624a3b7c98b51f89af587eb Mon Sep 17 00:00:00 2001 From: zaaarf Date: Sat, 18 Mar 2023 14:03:25 +0100 Subject: [PATCH] fix: fixed return type bug --- .../java/ftbsc/lll/proxies/AbstractProxy.java | 4 +++- .../java/ftbsc/lll/proxies/MethodProxy.java | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/ftbsc/lll/proxies/AbstractProxy.java b/src/main/java/ftbsc/lll/proxies/AbstractProxy.java index 1ee19a8..4c57e20 100644 --- a/src/main/java/ftbsc/lll/proxies/AbstractProxy.java +++ b/src/main/java/ftbsc/lll/proxies/AbstractProxy.java @@ -1,5 +1,7 @@ package ftbsc.lll.proxies; +import java.lang.reflect.Modifier; + /** * Abstract proxy class, implementing common aspects * of {@link MethodProxy} and {@link FieldProxy}. @@ -33,7 +35,7 @@ public abstract class AbstractProxy { /** * @return the modifiers of the member, as a packed int - * @see java.lang.reflect.Modifier + * @see Modifier */ public int getModifiers() { return this.modifiers; diff --git a/src/main/java/ftbsc/lll/proxies/MethodProxy.java b/src/main/java/ftbsc/lll/proxies/MethodProxy.java index ff5e1f0..b9abe84 100644 --- a/src/main/java/ftbsc/lll/proxies/MethodProxy.java +++ b/src/main/java/ftbsc/lll/proxies/MethodProxy.java @@ -75,23 +75,30 @@ public class MethodProxy extends AbstractProxy { return this.descriptorCache; DescriptorBuilder b = new DescriptorBuilder(); for(Object p : this.parameters) - addParameterToBuilder(b, p); - addParameterToBuilder(b, this.returnType); + addTypeToDescriptorBuilder(b, p, false); + addTypeToDescriptorBuilder(b, this.returnType, true); this.descriptorCache = b.build(); 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}. * @param b the {@link DescriptorBuilder} * @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) { TypeContainer param = (TypeContainer) p; - b.addParameter(param.fqn, param.arrayLevel); - } else b.addParameter((Class) p); + if(isReturnType) + 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); + } } /**