aboutsummaryrefslogtreecommitdiff
path: root/src/comp/util/common.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/util/common.rs')
-rw-r--r--src/comp/util/common.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/comp/util/common.rs b/src/comp/util/common.rs
index 68d518da..58109126 100644
--- a/src/comp/util/common.rs
+++ b/src/comp/util/common.rs
@@ -1,8 +1,17 @@
import std._uint;
import std._int;
import std._vec;
+import std.option.none;
import front.ast;
+import util.typestate_ann.ts_ann;
+import std.io.stdout;
+import std.io.str_writer;
+import std.io.string_writer;
+import pretty.pprust.print_block;
+import pretty.pprust.print_expr;
+import pretty.pprust.print_decl;
+import pretty.pp.mkstate;
type filename = str;
type span = rec(uint lo, uint hi);
@@ -94,6 +103,40 @@ fn elt_exprs(vec[ast.elt] elts) -> vec[@ast.expr] {
be _vec.map[ast.elt, @ast.expr](f, elts);
}
+fn field_expr(&ast.field f) -> @ast.expr { ret f.expr; }
+
+fn field_exprs(vec[ast.field] fields) -> vec [@ast.expr] {
+ auto f = field_expr;
+ ret _vec.map[ast.field, @ast.expr](f, fields);
+}
+
+fn plain_ann() -> ast.ann {
+ ret ast.ann_type(middle.ty.plain_ty(middle.ty.ty_nil),
+ none[vec[@middle.ty.t]], none[@ts_ann]);
+}
+
+fn log_expr(@ast.expr e) -> () {
+ let str_writer s = string_writer();
+ auto out_ = mkstate(s.get_writer(), 80u);
+ auto out = @rec(s=out_,
+ comments=none[vec[front.lexer.cmnt]],
+ mutable cur_cmnt=0u);
+
+ print_expr(out, e);
+ log(s.get_str());
+}
+
+fn log_block(&ast.block b) -> () {
+ let str_writer s = string_writer();
+ auto out_ = mkstate(s.get_writer(), 80u);
+ auto out = @rec(s=out_,
+ comments=none[vec[front.lexer.cmnt]],
+ mutable cur_cmnt=0u);
+
+ print_block(out, b);
+ log(s.get_str());
+}
+
//
// Local Variables:
// mode: rust