String varname;
VarDescriptor vd = null;
+ boolean typechecked = false;
public VarExpr(String varname) {
this.varname = varname;
}
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) {
}
public TypeDescriptor typecheck(SemanticAnalyzer sa) {
+ typechecked = true;
vd = (VarDescriptor) sa.getSymbolTable().get(varname);
if (vd == null) {