2013-10-18 11:33:46 +00:00
|
|
|
// ino.module.Receiver.8650.package
|
2014-09-02 08:33:54 +00:00
|
|
|
package de.dhbwstuttgart.syntaxtree.statement;
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.end
|
|
|
|
// ino.module.Receiver.8650.import
|
|
|
|
import java.util.Hashtable;
|
2015-04-22 19:40:22 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.Menge;
|
2015-09-23 15:22:01 +00:00
|
|
|
import de.dhbwstuttgart.bytecode.ClassGenerator;
|
2014-10-09 10:01:16 +00:00
|
|
|
import de.dhbwstuttgart.logger.Logger;
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.end
|
|
|
|
|
2014-09-02 08:33:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-04 14:35:44 +00:00
|
|
|
|
|
|
|
import de.dhbwstuttgart.myexception.SCStatementException;
|
2014-09-02 08:33:54 +00:00
|
|
|
import de.dhbwstuttgart.syntaxtree.Class;
|
2015-09-23 15:22:01 +00:00
|
|
|
import de.dhbwstuttgart.syntaxtree.type.RefType;
|
|
|
|
import de.dhbwstuttgart.syntaxtree.type.TypePlaceholder;
|
2014-09-02 08:33:54 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.JavaCodeResult;
|
|
|
|
import de.dhbwstuttgart.typeinference.ResultSet;
|
2015-11-27 15:10:35 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.TypeinferenceResultSet;
|
2015-09-23 15:22:01 +00:00
|
|
|
import de.dhbwstuttgart.typeinference.assumptions.ClassAssumption;
|
|
|
|
import de.dhbwstuttgart.typeinference.assumptions.TypeAssumptions;
|
|
|
|
import de.dhbwstuttgart.typeinference.exceptions.TypeinferenceException;
|
2013-10-18 11:33:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ino.class.Receiver.26123.declaration
|
|
|
|
public class Receiver
|
|
|
|
// ino.end
|
|
|
|
// ino.class.Receiver.26123.body
|
|
|
|
{
|
|
|
|
// ino.attribute.expr.26126.declaration
|
|
|
|
private Expr expr;
|
2015-09-23 15:22:01 +00:00
|
|
|
private TypeAssumptions typeAssumptions;
|
2013-10-18 11:33:46 +00:00
|
|
|
// ino.end
|
|
|
|
// ino.attribute.parserlog.26129.declaration
|
|
|
|
protected static Logger parserlog = Logger.getLogger("parser");
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.Receiver.26132.defdescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* Autor: J�rg B�uerle
|
2013-10-18 11:33:46 +00:00
|
|
|
* @param expr
|
|
|
|
*/
|
|
|
|
// ino.end
|
|
|
|
// ino.method.Receiver.26132.definition
|
|
|
|
public Receiver(Expr expr)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.Receiver.26132.body
|
|
|
|
{
|
|
|
|
this.expr = expr;
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.get_Type.26138.definition
|
|
|
|
public String get_Type()
|
|
|
|
// ino.end
|
|
|
|
// ino.method.get_Type.26138.body
|
|
|
|
{
|
|
|
|
return expr.getTypeName();
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.set_Expr.26141.definition
|
|
|
|
public void set_Expr(Expr express)
|
|
|
|
// ino.end
|
|
|
|
// ino.method.set_Expr.26141.body
|
|
|
|
{
|
|
|
|
expr=express;
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.get_Expr.26144.definition
|
|
|
|
public Expr get_Expr()
|
|
|
|
// ino.end
|
|
|
|
// ino.method.get_Expr.26144.body
|
|
|
|
{
|
|
|
|
return expr;
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
|
|
|
// ino.method.toString.26147.defdescription type=javadoc
|
|
|
|
/**
|
2015-05-12 17:49:27 +00:00
|
|
|
* <br/>Author: Martin Pl�micke
|
2013-10-18 11:33:46 +00:00
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
// ino.end
|
|
|
|
// ino.method.toString.26147.definition
|
|
|
|
public String toString()
|
|
|
|
// ino.end
|
|
|
|
// ino.method.toString.26147.body
|
|
|
|
{
|
|
|
|
return expr.toString();
|
|
|
|
}
|
|
|
|
// ino.end
|
|
|
|
|
2015-09-23 15:22:01 +00:00
|
|
|
/*
|
2015-08-27 14:36:19 +00:00
|
|
|
public void setClass(Class cl){
|
|
|
|
this.receiverClass = cl;
|
|
|
|
}
|
2015-09-23 15:22:01 +00:00
|
|
|
*/
|
2015-08-27 14:36:19 +00:00
|
|
|
|
2015-11-27 15:10:35 +00:00
|
|
|
public Class getReceiverClass(ClassGenerator cg, TypeinferenceResultSet rs){
|
2015-09-23 15:22:01 +00:00
|
|
|
de.dhbwstuttgart.syntaxtree.type.Type receiverType = this.get_Expr().getType();
|
|
|
|
if(receiverType instanceof TypePlaceholder){
|
2015-11-27 15:10:35 +00:00
|
|
|
receiverType = rs.getTypeOfPlaceholder((TypePlaceholder)receiverType);
|
2015-09-23 15:22:01 +00:00
|
|
|
}
|
|
|
|
if(!(receiverType instanceof RefType)){
|
|
|
|
throw new TypeinferenceException("Typ des Receivers nicht eindeutig",this.get_Expr());
|
|
|
|
}
|
|
|
|
ClassAssumption receiverClassAssumption = typeAssumptions.getClassAssumptionFor((RefType)receiverType);
|
|
|
|
de.dhbwstuttgart.syntaxtree.Class receiverCl = receiverClassAssumption.getAssumedClass();
|
|
|
|
return receiverCl;
|
2015-08-27 14:36:19 +00:00
|
|
|
}
|
2015-09-23 15:22:01 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Setzt die TypeAssumptions für diesen Receiver.
|
|
|
|
* Das ist notwendig für die Bytecodegenerierung
|
|
|
|
* @param ass
|
|
|
|
*/
|
|
|
|
public void setAssumptions(TypeAssumptions ass){
|
|
|
|
this.typeAssumptions = ass;
|
|
|
|
}
|
|
|
|
|
2013-10-18 11:33:46 +00:00
|
|
|
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
|
|
|
return new JavaCodeResult().attach(this.get_Expr().printJavaCode(resultSet));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// ino.end
|