diff --git a/pom.xml b/pom.xml
index ea7be6b3..1b97e501 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,6 +42,12 @@
asm-all
[4.0.0,)
+
diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java
index fa930f58..c438bc67 100644
--- a/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java
+++ b/src/de/dhbwstuttgart/syntaxtree/factory/ASTFactory.java
@@ -89,14 +89,21 @@ public class ASTFactory {
return new Field(field.getName(), createType(field.getType(), jreClass, null), field.getModifiers(), new NullToken());
}
+ //private static RefType createType(Class classType) {
+ // return createClass(classType).getType();
+ //}
+
private static de.dhbwstuttgart.syntaxtree.Constructor createConstructor(Constructor constructor, Class inClass) {
String name = constructor.getName();
RefTypeOrTPHOrWildcardOrGeneric returnType = createType(inClass, new JavaClassName(inClass.getName()), name);
Parameter[] jreParams = constructor.getParameters();
+ Type[] jreGenericParams = constructor.getGenericParameterTypes();
List params = new ArrayList<>();
- for(Parameter jreParam : jreParams){
- RefTypeOrTPHOrWildcardOrGeneric paramType = createType(jreParam.getType(),new JavaClassName(inClass.getName()), name);
- params.add(new FormalParameter(jreParam.getName(),paramType, new NullToken()));
+ int i = 0;
+ for(Type jreParam : jreGenericParams){
+ RefTypeOrTPHOrWildcardOrGeneric paramType = createType(jreParam,new JavaClassName(inClass.getName()), name);
+ params.add(new FormalParameter(jreParams[i].getName(),paramType, new NullToken()));
+ i++;
}
ParameterList parameterList = new ParameterList(params, new NullToken());
Block block = new Block(new ArrayList(), new NullToken());
@@ -109,21 +116,26 @@ public class ASTFactory {
}
return new de.dhbwstuttgart.syntaxtree.Constructor(modifier, name,returnType, parameterList, block, gtvDeclarations, offset, new ArrayList<>());
- }
-
- //private static RefType createType(Class classType) {
- // return createClass(classType).getType();
- //}
+ }
public static Method createMethod(java.lang.reflect.Method jreMethod, java.lang.Class inClass){
String name = jreMethod.getName();
RefTypeOrTPHOrWildcardOrGeneric returnType;
- returnType = createType(jreMethod.getReturnType(),new JavaClassName(inClass.getName()), name);
+ Type jreRetType;
+ if(jreMethod.getGenericReturnType()!=null){
+ jreRetType = jreMethod.getGenericReturnType();
+ }else{
+ jreRetType = jreMethod.getReturnType();
+ }
+ returnType = createType(jreRetType,new JavaClassName(inClass.getName()), name);
Parameter[] jreParams = jreMethod.getParameters();
+ Type[] jreGenericParams = jreMethod.getGenericParameterTypes();
List params = new ArrayList<>();
- for(Parameter jreParam : jreParams){
- RefTypeOrTPHOrWildcardOrGeneric paramType = createType(jreParam.getType(),new JavaClassName(inClass.getName()), name);
- params.add(new FormalParameter(jreParam.getName(),paramType, new NullToken()));
+ int i = 0;
+ for(Type jreParam : jreGenericParams){
+ RefTypeOrTPHOrWildcardOrGeneric paramType = createType(jreParam,new JavaClassName(inClass.getName()), name);
+ params.add(new FormalParameter(jreParams[i].getName(),paramType, new NullToken()));
+ i++;
}
ParameterList parameterList = new ParameterList(params, new NullToken());
Block block = new Block(new ArrayList(), new NullToken());
diff --git a/test/javFiles/Vector.jav b/test/javFiles/Vector.jav
index ef3533a6..40072fe4 100644
--- a/test/javFiles/Vector.jav
+++ b/test/javFiles/Vector.jav
@@ -3,10 +3,6 @@ import java.util.Vector;
class MyVector{
id(x){
- return id2(x);
-}
-
-id2(x){
-return id(x);
+ return (x.elementAt(0));
}
}
\ No newline at end of file