/**
 * eg:
 * 
 * this Seq (id=20) stmt1 Assign (id=26) name Name (id=30) value Int (id=32)
 * stmt2 Seq (id=38) stmt1 Call (id=40) args Argument (id=42) op Name (id=44)
 * stmt2 Seq (id=41) stmt1 Return (id=45) opexpr Name (id=49) stmt2 Null (id=47)
 * 
 * @author lunatic
 */
public class Seq extends Stmt {

	private Stmt stmt1;
	private Stmt stmt2;

	public Seq(Stmt stmt1, Stmt stmt2) {
		super();
		this.stmt1 = stmt1;
		this.stmt2 = stmt2;
	}

	@Override
	public Value interp(Scope s) {
		stmt1.interp(s);
		stmt2.interp(s);
		return Value.VOID;
//		Value v1 = stmt1.interp(s);
////		if (stmt1 instanceof Return)
////			//return v1;
////			throw new Return
// 		if (stmt2 == Stmt.Null)
// 			return v1;
	//	return stmt2.interp(s);
	}

	@Override
	public Value typecheck(Scope s) {
//		Value t1 = stmt1.typecheck(s);
//		if (stmt1 instanceof Return)
//			return t1;
//		if (stmt2 == Stmt.Null)
//			return t1;
//		return stmt1.typecheck(s);
		return Value.VOID;
	}

	@Override
	public String toString() {

		return U.join(" ", stmt1, stmt2);
	}

}

@@ -549,193 +549,30 @@
 OID;
-%0A//%09%09Value v1 = stmt1.interp(s);%0A////%09%09if (stmt1 instanceof Return)%0A////%09%09%09//return v1;%0A////%09%09%09throw new Return%0A// %09%09if (stmt2 == Stmt.Null)%0A// %09%09%09return v1;%0A%09//%09return stmt2.interp(s);
+ //%E6%B2%A1%E6%9C%89return%E8%AF%AD%E5%8F%A5%E5%88%99%E9%BB%98%E8%AE%A4%E8%BF%94%E5%9B%9Evoid
 %0A%09%7D%0A
@@ -622,23 +622,10 @@
 ) %7B%0A
-//%09%09Value t1 = 
+%09%09
 stmt
@@ -644,112 +644,10 @@
 s);%0A
-//%09%09if (stmt1 instanceof Return)%0A//%09%09%09return t1;%0A//%09%09if (stmt2 == Stmt.Null)%0A//%09%09%09return t1;%0A//%09%09return 
+%09%09
 stmt

return void