X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairCompiler%2FMCC%2FIR%2FVarExpr.java;fp=Repair%2FRepairCompiler%2FMCC%2FIR%2FVarExpr.java;h=e62335ed3aa1bbd2c1eab8ea5b075d6fa757cde6;hp=64587da2c10eb1eed74c12e5fc351f754262e038;hb=bf67a0718614f4872c339e72708974a4229722a1;hpb=d89dccabf218b5dafbec5d44318c2edb2dd49822 diff --git a/Repair/RepairCompiler/MCC/IR/VarExpr.java b/Repair/RepairCompiler/MCC/IR/VarExpr.java index 64587da..e62335e 100755 --- a/Repair/RepairCompiler/MCC/IR/VarExpr.java +++ b/Repair/RepairCompiler/MCC/IR/VarExpr.java @@ -6,6 +6,7 @@ public class VarExpr extends Expr { String varname; VarDescriptor vd = null; + boolean typechecked = false; public VarExpr(String varname) { this.varname = varname; @@ -16,8 +17,16 @@ public class VarExpr extends Expr { } public void generate(CodeWriter writer, VarDescriptor dest) { + + // #TBD#: bit of a hack, really should have been type checked properly + + vd = (VarDescriptor) writer.getSymbolTable().get(varname); + assert vd != null; + assert vd.getType() != null; + this.td = vd.getType(); + writer.outputline(vd.getType().getGenerateType().getSafeSymbol() + " " + dest.getSafeSymbol() + - " = (" + vd.getType().getGenerateType().getSafeSymbol() + ") " + vd.getSafeSymbol() + ";"); + " = (" + vd.getType().getGenerateType().getSafeSymbol() + ") " + vd.getSafeSymbol() + "; //varexpr"); } public void prettyPrint(PrettyPrinter pp) { @@ -25,6 +34,7 @@ public class VarExpr extends Expr { } public TypeDescriptor typecheck(SemanticAnalyzer sa) { + typechecked = true; vd = (VarDescriptor) sa.getSymbolTable().get(varname); if (vd == null) {