summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/ftbsc/lll/proxies/AbstractProxy.java4
-rw-r--r--src/main/java/ftbsc/lll/proxies/MethodProxy.java19
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);
+ }
}
/**