Fehler in LocalVarAssumption behoben
This commit is contained in:
parent
8d26f06092
commit
e31725f255
@ -14,6 +14,7 @@ import mycompiler.mytypereconstruction.replacementlistener.CReplaceTypeEvent;
|
||||
import typinferenz.ConstraintsSet;
|
||||
import typinferenz.JavaCodeResult;
|
||||
import typinferenz.ResultSet;
|
||||
import typinferenz.SingleConstraint;
|
||||
import typinferenz.assumptions.TypeAssumptions;
|
||||
|
||||
public class Constructor extends Method {
|
||||
@ -222,10 +223,11 @@ public class Constructor extends Method {
|
||||
this.methode.set_Method_Name(string);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConstraintsSet TYPE(TypeAssumptions ass) {
|
||||
|
||||
return this.methode.TYPE(ass);
|
||||
ConstraintsSet ret = new ConstraintsSet();
|
||||
|
||||
ret.add(this.methode.get_Block().TYPEStmt(ass));
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -203,9 +203,6 @@ public class Method extends Field implements ITypeReplacementListener, IItemWith
|
||||
((TypePlaceholder)type).addReplacementListener(this);
|
||||
}
|
||||
// this.returntype = type; //auskommentiert von Andreas Stadelmeier (a10023)
|
||||
//Der ReturnType der Methode ist der Returntype des Methodenblocks:
|
||||
if(block!=null)
|
||||
this.block.setType(type);
|
||||
this.returntype = type;
|
||||
}
|
||||
// ino.end
|
||||
@ -314,8 +311,7 @@ public class Method extends Field implements ITypeReplacementListener, IItemWith
|
||||
// ino.end
|
||||
// ino.method.getReturnType.23569.body
|
||||
{
|
||||
return this.block.getType();
|
||||
//return this.returntype; //auskommentiert von Andreas Stadelmeier (a10023)
|
||||
return this.returntype; //auskommentiert von Andreas Stadelmeier (a10023)
|
||||
}
|
||||
// ino.end
|
||||
|
||||
@ -688,7 +684,7 @@ public class Method extends Field implements ITypeReplacementListener, IItemWith
|
||||
@Override
|
||||
public Type getType(){
|
||||
//Methode und Block teilen sich einen ReturnType:
|
||||
return this.block.getType();
|
||||
return this.returntype;
|
||||
}
|
||||
|
||||
public static Method createEmptyMethod(String withSignature, Class parent){
|
||||
|
@ -1,9 +1,19 @@
|
||||
package typinferenz.assumptions;
|
||||
|
||||
import mycompiler.mytype.Type;
|
||||
|
||||
import mycompiler.mystatement.LocalVarDecl;
|
||||
|
||||
public class LocalVarAssumption extends Assumption {
|
||||
private LocalVarDecl localVar;
|
||||
|
||||
public LocalVarAssumption(LocalVarDecl localVar){
|
||||
super(localVar);
|
||||
this.localVar = localVar;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type getAssumedType() {
|
||||
return this.localVar.getDeclType();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
Class DEBUG [Typeinference] Erstellte Assumptions: this: WhileTestMethod Assumptions:
|
||||
[typinferenz.assumptions.MethodAssumption@757828eb, typinferenz.assumptions.MethodAssumption@23c6988d]
|
||||
[typinferenz.assumptions.MethodAssumption@33e8c1e4, typinferenz.assumptions.MethodAssumption@76117a5b]
|
||||
FieldVar Assumptions:
|
||||
[]
|
||||
LocalVar Assumptions:
|
||||
@ -8,19 +8,34 @@ Parameter Assumptions:
|
||||
[]
|
||||
|
||||
Block DEBUG [Typeinference] Prozessing statement: no type [var]
|
||||
Block DEBUG [Typeinference] Prozessing statement: WHILE null { [(var = mycompiler.mystatement.StringLiteral@7bec09b0)]
|
||||
Block DEBUG [Typeinference] Prozessing statement: (var = mycompiler.mystatement.StringLiteral@7bec09b0)
|
||||
Block DEBUG [Typeinference] Prozessing statement: void(var: void = mycompiler.mystatement.StringLiteral@7bec09b0)
|
||||
Block DEBUG [Typeinference] Prozessing statement: WHILE void { [void(var: void = mycompiler.mystatement.StringLiteral@7bec09b0)]
|
||||
Block DEBUG [Typeinference] Prozessing statement: WHILE null { [(var = mycompiler.mystatement.StringLiteral@25cc8345)]
|
||||
Block DEBUG [Typeinference] Prozessing statement: (var = mycompiler.mystatement.StringLiteral@25cc8345)
|
||||
Block DEBUG [Typeinference] Prozessing statement: void(var: TPH C = mycompiler.mystatement.StringLiteral@25cc8345)
|
||||
Block DEBUG [Typeinference] Prozessing statement: WHILE void { [void(var: TPH C = mycompiler.mystatement.StringLiteral@25cc8345)]
|
||||
Block DEBUG [Typeinference] Prozessing statement: TPH C [var]
|
||||
Class DEBUG [Typeinference] Erstellte Constraints: boolean < boolean
|
||||
String < void
|
||||
void < TPH D
|
||||
String < TPH C
|
||||
TPH C < TPH D
|
||||
void < TPH A
|
||||
void < TPH B
|
||||
|
||||
SourceFile DEBUG [Typeinference] Karthesisches Produkt der Constraints: [[(boolean <. boolean), (String <. void), (void <. TPH D), (void <. TPH A), (void <. TPH B)]]
|
||||
SourceFile DEBUG [Typeinference] Unifiziertes Ergebnis: []
|
||||
SourceFile DEBUG [Typeinference] Karthesisches Produkt der Constraints: [[(boolean <. boolean), (String <. TPH C), (TPH C <. TPH D), (void <. TPH A)]]
|
||||
SourceFile DEBUG [Typeinference] Unifiziertes Ergebnis: [[(TPH D = String), (TPH C = String), (TPH A = void)]]
|
||||
SourceFile DEBUG [Typeinference]
|
||||
JavaFiles:
|
||||
|
||||
SourceFile DEBUG [Typeinference] JavaFile für ResultSet Unified Constraints: [(TPH D = String), (TPH C = String), (TPH A = void)]
|
||||
|
||||
SourceFile DEBUG [Typeinference] class <B>WhileTest extends Object
|
||||
{
|
||||
void method()
|
||||
{
|
||||
String var;
|
||||
while(true){
|
||||
var = "String";
|
||||
}
|
||||
}
|
||||
B WhileTest()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user