2013-10-18 11:33:46 +00:00
|
|
|
// ino.module.Return.8651.package
|
|
|
|
package mycompiler.mystatement;
|
|
|
|
// ino.end
|
|
|
|
// ino.module.Return.8651.import
|
|
|
|
import java.util.Hashtable;
|
|
|
|
import java.util.Vector;
|
2014-02-09 15:07:31 +00:00
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
import mycompiler.mybytecode.ClassFile;
|
|
|
|
import mycompiler.mybytecode.CodeAttribute;
|
|
|
|
import mycompiler.mybytecode.JVMCode;
|
|
|
|
import mycompiler.myclass.Class;
|
|
|
|
import mycompiler.myexception.CTypeReconstructionException;
|
|
|
|
import mycompiler.myexception.JVMCodeException;
|
|
|
|
import mycompiler.myexception.SCExcept;
|
|
|
|
import mycompiler.myexception.SCStatementException;
|
|
|
|
import mycompiler.mytype.GenericTypeVar;
|
|
|
|
import mycompiler.mytype.Type;
|
|
|
|
import mycompiler.mytype.TypePlaceholder;
|
|
|
|
import mycompiler.mytypereconstruction.CSupportData;
|
|
|
|
import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
|
|
|
import mycompiler.mytypereconstruction.set.CSubstitutionSet;
|
|
|
|
import mycompiler.mytypereconstruction.set.CTripleSet;
|
|
|
|
import mycompiler.mytypereconstruction.set.CTypeAssumptionSet;
|
|
|
|
import mycompiler.mytypereconstruction.typeassumption.CTypeAssumption;
|
|
|
|
|
|
|
|
import org.apache.log4j.Logger;
|
|
|
|
// ino.end
|
|
|
|
|
2014-02-09 15:07:31 +00:00
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
|
|
|
|
import typinferenz.JavaCodeResult;
|
|
|
|
import typinferenz.SingleConstraint;
|
|
|
|
import typinferenz.ConstraintsSet;
|
|
|
|
import typinferenz.FreshTypeVariable;
|
|
|
|
import typinferenz.ResultSet;
|
2014-02-09 15:07:31 +00:00
|
|
|
import typinferenz.assumptions.TypeAssumptions;
|
2013-10-18 11:33:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ino.class.Return.26150.declaration
|
|
|
|
public class Return extends Statement
|
|
|
|
// ino.end
|
|
|
|
// ino.class.Return.26150.body
|
|
|
|
{
|
|
|
|
// ino.method.Return.26154.definition
|
|
|
|
public Return(int offset,int variableLength)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.Return.26154.body
|
|
|
|
{
|
|
|
|
super(offset,variableLength);
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
// ino.attribute.retexpr.26157.declaration
|
|
|
|
public Expr retexpr;
|
|
|
|
// ino.end
|
|
|
|
// ino.attribute.parserlog.26160.declaration
|
|
|
|
protected static Logger parserlog = Logger.getLogger("parser");
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ino.method.set_ReturnExpr.26166.definition
|
|
|
|
public Return set_ReturnExpr(Expr ret)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.set_ReturnExpr.26166.body
|
|
|
|
{
|
|
|
|
this.retexpr=ret;
|
|
|
|
return this;
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.get_Type.26169.definition
|
|
|
|
public String get_Type()
|
|
|
|
// ino.end
|
|
|
|
// ino.method.get_Type.26169.body
|
|
|
|
{
|
|
|
|
return retexpr.getTypeName();
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.codegen.26172.definition
|
|
|
|
public void codegen(ClassFile classfile, CodeAttribute code, Vector paralist)
|
|
|
|
throws JVMCodeException
|
|
|
|
// ino.end
|
|
|
|
// ino.method.codegen.26172.body
|
|
|
|
{
|
|
|
|
retexpr.codegen(classfile, code, paralist);
|
|
|
|
code.add_code(JVMCode.nreturn(retexpr.getTypeName()));
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.toString.26178.definition
|
|
|
|
public String toString()
|
|
|
|
// ino.end
|
|
|
|
// ino.method.toString.26178.body
|
|
|
|
{
|
|
|
|
return type + " Return " + retexpr.toString();
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
// ino.method.wandleRefTypeAttributes2GenericAttributes.26181.definition
|
|
|
|
public void wandleRefTypeAttributes2GenericAttributes(Vector<Type> paralist, Vector<GenericTypeVar> genericMethodParameters)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.wandleRefTypeAttributes2GenericAttributes.26181.body
|
|
|
|
{
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
public boolean addOffsetsToStatement(CTypeAssumption localAssumption, String NameVariable, boolean isMemberVariable)
|
|
|
|
{
|
|
|
|
retexpr.addOffsetsToExpression(localAssumption,NameVariable,isMemberVariable);
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ConstraintsSet TYPEStmt(TypeAssumptions assumptions) {
|
|
|
|
ConstraintsSet ret = new ConstraintsSet();
|
|
|
|
ret.add(this.retexpr.TYPEExpr(assumptions));
|
|
|
|
//this.setTypeVariable(TypePlaceholder.fresh("Return Type"));
|
|
|
|
this.setTypeVariable(TypePlaceholder.fresh(this));
|
|
|
|
ret.add(new SingleConstraint(retexpr.getTypeVariable(), this.getTypeVariable()));
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void replaceType(CReplaceTypeEvent e) {
|
|
|
|
super.replaceType(e);
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getTypeLineNumber() {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String getTypeInformation(){
|
|
|
|
String ret = this.getTypeVariable()+" :: (Return "+this.retexpr.getTypeInformation()+")";
|
|
|
|
return ret;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
|
|
|
JavaCodeResult ret = new JavaCodeResult("return ");
|
|
|
|
ret.attach(this.retexpr.printJavaCode(resultSet));
|
|
|
|
return ret.attach(";");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// ino.end
|