TPH.fresh() kann nicht mehr ohne die Übergabe eines TypeReplacementListeners erfolgen. Keine Lauffähige Version

This commit is contained in:
JanUlrich 2014-02-10 17:44:20 +01:00
parent 3cd6b2f792
commit 7a556fbafb
14 changed files with 35 additions and 1052 deletions

View File

@ -1393,10 +1393,10 @@ formalparameter : type variabledeclaratorid
// #JB# 31.03.2005 // #JB# 31.03.2005
// ########################################################### // ###########################################################
Type T = TypePlaceholder.fresh(); //Type T = TypePlaceholder.fresh(); //auskommentiert von Andreas Stadelmeier
// Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet */ // Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet */
// ########################################################### // ###########################################################
org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName()); //org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName());
//auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T ); //auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T );
FP.set_DeclId($1); FP.set_DeclId($1);

File diff suppressed because one or more lines are too long

View File

@ -349,7 +349,7 @@ public class MyCompiler implements MyCompilerAPI
// #JB# 31.03.2005 // #JB# 31.03.2005
// ########################################################### // ###########################################################
Methode.setReturnType(TypePlaceholder.fresh()); Methode.setReturnType(TypePlaceholder.fresh(Methode));
//Methode.setReturnType( new TypePlaceholder("###NEU###") ); //Methode.setReturnType( new TypePlaceholder("###NEU###") );
// ########################################################### // ###########################################################

View File

@ -19,6 +19,7 @@ import mycompiler.mystatement.Expr;
import mycompiler.mystatement.Literal; import mycompiler.mystatement.Literal;
import mycompiler.mytype.Type; import mycompiler.mytype.Type;
// ino.end // ino.end
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
// ino.class.Constant.23212.description type=javadoc // ino.class.Constant.23212.description type=javadoc
/** /**
@ -221,5 +222,17 @@ public class Constant extends FieldDecl
//return null; //return null;
} }
@Override
public void replaceType(CReplaceTypeEvent e) {
// TODO Auto-generated method stub
}
@Override
public int getTypeLineNumber() {
// TODO Auto-generated method stub
return 0;
}
} }
// ino.end // ino.end

View File

@ -77,7 +77,7 @@ public class FieldInitialization extends InstVarDecl {
* TODO: Der Feld-Assumption muss ein TPH als Typ hinzugefügt werden, falls er Typlos initialisiert wurde. Dies kann auch der Type-Algorithmus der Inst/FieldVar - Klasse machen. * TODO: Der Feld-Assumption muss ein TPH als Typ hinzugefügt werden, falls er Typlos initialisiert wurde. Dies kann auch der Type-Algorithmus der Inst/FieldVar - Klasse machen.
* Wird das Feld mit einem Typ initialisiert so muss dieser auch in die Assumptions. * Wird das Feld mit einem Typ initialisiert so muss dieser auch in die Assumptions.
*/ */
if(this.getType() == null)this.setType(TypePlaceholder.fresh()); if(this.getType() == null)this.setType(TypePlaceholder.fresh(this));
assumptions.add(TypeAssumptions.createFieldVarAssumption(classmember.getName(), this.getName(), this.getType())); assumptions.add(TypeAssumptions.createFieldVarAssumption(classmember.getName(), this.getName(), this.getType()));
classmember.get_ClassBody().addFieldInitialization(this); classmember.get_ClassBody().addFieldInitialization(this);
return assumptions; return assumptions;

View File

@ -1957,10 +1957,10 @@ case 148:
/* #JB# 31.03.2005*/ /* #JB# 31.03.2005*/
/* ###########################################################*/ /* ###########################################################*/
Type T = TypePlaceholder.fresh(); /*Type T = TypePlaceholder.fresh(); //auskommentiert von Andreas Stadelmeier*/
/* Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet * /*/ /* Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet * /*/
/* ###########################################################*/ /* ###########################################################*/
org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName()); //org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName());
/*auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T );*/ /*auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T );*/
FP.set_DeclId(((DeclId)yyVals[0+yyTop])); FP.set_DeclId(((DeclId)yyVals[0+yyTop]));

View File

@ -1393,10 +1393,10 @@ formalparameter : type variabledeclaratorid
// #JB# 31.03.2005 // #JB# 31.03.2005
// ########################################################### // ###########################################################
Type T = TypePlaceholder.fresh(); //Type T = TypePlaceholder.fresh(); //auskommentiert von Andreas Stadelmeier
// Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet */ // Type T = new TypePlaceholder(""); /* otth: Name wird automatisch berechnet */
// ########################################################### // ###########################################################
org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName()); //org.apache.log4j.Logger.getLogger("parser").debug("\n--> berechneter Name: " + T.getName());
//auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T ); //auskommentiert von Andreas Stadelmeier (a10023) FP.setType( T );
FP.set_DeclId($1); FP.set_DeclId($1);

View File

@ -243,7 +243,7 @@ public class Block extends Statement
throw new TypinferenzException("Falscher Return Type"); throw new TypinferenzException("Falscher Return Type");
} }
else { else {
TypePlaceholder tph = TypePlaceholder.fresh(); TypePlaceholder tph = TypePlaceholder.fresh(this);
ret.add(new SingleConstraint(this.getTypeVariable(), tph)); ret.add(new SingleConstraint(this.getTypeVariable(), tph));
ret.add(new SingleConstraint(stmt.getTypeVariable(), tph)); ret.add(new SingleConstraint(stmt.getTypeVariable(), tph));
this.setTypeVariable(tph); this.setTypeVariable(tph);

View File

@ -7,14 +7,18 @@ import java.util.Enumeration;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Iterator; import java.util.Iterator;
import java.util.Vector; import java.util.Vector;
import mycompiler.mybytecode.JVMCode; import mycompiler.mybytecode.JVMCode;
import mycompiler.myclass.UsedId; import mycompiler.myclass.UsedId;
import mycompiler.myexception.SCException; import mycompiler.myexception.SCException;
import mycompiler.mytypereconstruction.CSubstitutionGenVar; import mycompiler.mytypereconstruction.CSubstitutionGenVar;
import mycompiler.mytypereconstruction.set.CSubstitutionSet; import mycompiler.mytypereconstruction.set.CSubstitutionSet;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
// ino.end // ino.end
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import typinferenz.JavaCodeResult; import typinferenz.JavaCodeResult;
import typinferenz.ResultSet; import typinferenz.ResultSet;
@ -163,6 +167,8 @@ public class RefType extends Type implements IMatchable
// ino.end // ino.end
// ino.method.GenericTypeVar2TypePlaceholder.26652.body // ino.method.GenericTypeVar2TypePlaceholder.26652.body
{ {
throw new NotImplementedException();
/*
CSubstitutionSet sub = new CSubstitutionSet(); CSubstitutionSet sub = new CSubstitutionSet();
if(parameter != null) if(parameter != null)
{ {
@ -182,6 +188,7 @@ public class RefType extends Type implements IMatchable
} }
} }
return sub; return sub;
*/
} }
// ino.end // ino.end

View File

@ -87,7 +87,7 @@ public class TypePlaceholder extends Type implements IReplaceTypeEventProvider
*/ */
// ino.end // ino.end
// ino.method.fresh.26800.definition // ino.method.fresh.26800.definition
public static TypePlaceholder fresh() private static TypePlaceholder fresh()
// ino.end // ino.end
// ino.method.fresh.26800.body // ino.method.fresh.26800.body
{ {

View File

@ -1,6 +1,7 @@
package typinferenz; package typinferenz;
import mycompiler.mytype.Type; import mycompiler.mytype.Type;
import mycompiler.mytypereconstruction.replacementlistener.ITypeReplacementListener;
public interface Typable { public interface Typable {
/** /**

View File

@ -1,5 +1,7 @@
package typinferenz; package typinferenz;
public interface TypeInsertable { import mycompiler.mytypereconstruction.replacementlistener.ITypeReplacementListener;
public interface TypeInsertable extends ITypeReplacementListener {
} }

View File

@ -224,7 +224,7 @@ public class TypeAssumptions implements Iterable<CTypeAssumption> {
* @return * @return
*/ */
public TypeAssumptions add(CTypeAssumption ass){ public TypeAssumptions add(CTypeAssumption ass){
if(ass.getAssumedType()==null)ass.setAssumedType(TypePlaceholder.fresh()); if(ass.getAssumedType()==null)throw new NullPointerException();//ass.setAssumedType(TypePlaceholder.fresh());
//if(ass instanceof CParaTypeAssumption)throw new TypinferenzException("ParameterAssumptions müssen einer Methode zugewiesen sein"); //if(ass instanceof CParaTypeAssumption)throw new TypinferenzException("ParameterAssumptions müssen einer Methode zugewiesen sein");

File diff suppressed because one or more lines are too long