public override Tuple<ABT.Env, ABT.Stmt> GetStmt(ABT.Env env) {
ABT.Expr expr = this.Expr.GetExpr(env);
env = expr.Env;
expr = ABT.TypeCast.MakeCast(expr, new ABT.LongType());
if (!expr.IsConstExpr) {
throw new InvalidOperationException("case Expr not const");
}
Int32 value = ((ABT.ConstLong)expr).Value;
Tuple<ABT.Env, ABT.Stmt> r_stmt = this.Stmt.GetStmt(env);
env = r_stmt.Item1;
return new Tuple<ABT.Env, ABT.Stmt>(env, new ABT.CaseStmt(value, r_stmt.Item2));
}
}