JavaPatternMatching/src/typinferenz/FunNMethod.java

57 lines
1.8 KiB
Java

package typinferenz;
import java.util.Vector;
import mycompiler.mytype.*;
import mycompiler.myclass.*;
import mycompiler.mytype.TypePlaceholder;
public class FunNMethod extends Method{
/**
*
* @param N - Anzahl der Parameter (Beispiel: Fun2<R, T1, T2>)
*/
public FunNMethod(Vector<Type> paralist){
super(0); //Hat keinen Offset, da nur theoretisch gedachte Methode
int N = paralist.size(); //In der paraliste ist der erste Parameter der Rückgabetyp
this.setType(paralist.firstElement());
this.set_DeclId(new DeclId("apply"));
ParameterList pl = new ParameterList();
Vector<FormalParameter> fpList = new Vector<FormalParameter>();
for(int i = 1;i<N;i++){ //Alle verbleibenden Elemente in der übergebenen paralist durchgehen.
DeclId paramName = new DeclId("T"+i);
FormalParameter parameter = new FormalParameter(paramName);
//parameter.setType(TypePlaceholder.fresh(parameter));
parameter.setType(paralist.get(i));
//parameter.set_DeclId(paramName);
fpList.add(parameter);
}
pl.formalparameter = fpList;
this.parameterlist = pl;
}
public FunNMethod(int N){
super(0); //Hat keinen Offset, da nur theoretisch gedachte Methode
this.setType(TypePlaceholder.fresh(this));
this.set_DeclId(new DeclId("apply"));
ParameterList pl = new ParameterList();
Vector<FormalParameter> fpList = new Vector<FormalParameter>();
for(int i = 1;i<=N;i++){ //Alle verbleibenden Elemente in der übergebenen paralist durchgehen.
DeclId paramName = new DeclId("T"+i);
FormalParameter parameter = new FormalParameter(paramName);
parameter.setType(TypePlaceholder.fresh(parameter));
//parameter.set_DeclId(paramName);
fpList.add(parameter);
}
pl.formalparameter = fpList;
this.parameterlist = pl;
}
@Override
public TypeInsertPoint createTypeInsertPoint(TypePlaceholder tph,
ResultSet resultSet) {
return null;
}
}