This commit is contained in:
JanUlrich 2018-03-21 11:15:59 +01:00
parent e1f579664a
commit a71e56ea97
4 changed files with 10 additions and 4 deletions

View File

@ -1,5 +1,6 @@
package de.dhbwstuttgart.typeinference.assumptions; package de.dhbwstuttgart.typeinference.assumptions;
import de.dhbwstuttgart.exceptions.NotImplementedException;
import de.dhbwstuttgart.syntaxtree.ClassOrInterface; import de.dhbwstuttgart.syntaxtree.ClassOrInterface;
import de.dhbwstuttgart.syntaxtree.TypeScope; import de.dhbwstuttgart.syntaxtree.TypeScope;
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric; import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
@ -25,7 +26,7 @@ public class FieldAssumption extends Assumption{
} }
public RefTypeOrTPHOrWildcardOrGeneric getReceiverType(GenericsResolver resolver) { public RefTypeOrTPHOrWildcardOrGeneric getReceiverType(GenericsResolver resolver) {
//TODO
return null; throw new NotImplementedException();
} }
} }

View File

@ -37,7 +37,8 @@ public class MethodAssumption extends Assumption{
return receiver; return receiver;
} }
public RefTypeOrTPHOrWildcardOrGeneric getReturnType() { public RefTypeOrTPHOrWildcardOrGeneric getReturnType(GenericsResolver resolver) {
if(retType instanceof GenericRefType)return resolver.resolve(retType);
return retType; return retType;
} }

View File

@ -393,7 +393,7 @@ public class TYPEStmt implements StatementVisitor{
for(Method m : cl.getMethods()){ for(Method m : cl.getMethods()){
if(m.getName().equals(name) && if(m.getName().equals(name) &&
m.getParameterList().getFormalparalist().size() == numArgs){ m.getParameterList().getFormalparalist().size() == numArgs){
RefTypeOrTPHOrWildcardOrGeneric retType = info.checkGTV(m.getReturnType()); RefTypeOrTPHOrWildcardOrGeneric retType = m.getReturnType();//info.checkGTV(m.getReturnType());
ret.add(new MethodAssumption(cl, retType, convertParams(m.getParameterList(),info), ret.add(new MethodAssumption(cl, retType, convertParams(m.getParameterList(),info),
createTypeScope(cl, m))); createTypeScope(cl, m)));

View File

@ -49,6 +49,10 @@ public class JavaTXCompilerTest {
execute(new File(rootDirectory+"Generics.jav")); execute(new File(rootDirectory+"Generics.jav"));
} }
@Test @Test
public void genericsMethodCall() throws IOException, ClassNotFoundException {
execute(new File(rootDirectory+"MethodCallGenerics.jav"));
}
@Test
public void faculty() throws IOException, ClassNotFoundException { public void faculty() throws IOException, ClassNotFoundException {
execute(new File(rootDirectory+"Faculty.jav")); execute(new File(rootDirectory+"Faculty.jav"));
} }