}
}
-/// Returns a string like "the block at 27:31" that attempts to explain a
-/// lifetime in a way it might plausibly be understood.
-pub fn explain_region(cx: &ctxt, region: ty::Region) -> ~str {
- let (res, _) = explain_region_and_span(cx, region);
- return res;
-}
-
-
pub fn explain_region_and_span(cx: &ctxt, region: ty::Region)
-> (~str, Option<Span>) {
return match region {
}
}
-pub fn ReScope_id_to_str(cx: &ctxt, node_id: ast::NodeId) -> ~str {
- match cx.map.find(node_id) {
- Some(ast_map::NodeBlock(ref blk)) => {
- format!("<block at {}>",
- cx.sess.codemap().span_to_str(blk.span))
- }
- Some(ast_map::NodeExpr(expr)) => {
- match expr.node {
- ast::ExprCall(..) => {
- format!("<call at {}>",
- cx.sess.codemap().span_to_str(expr.span))
- }
- ast::ExprMatch(..) => {
- format!("<match at {}>",
- cx.sess.codemap().span_to_str(expr.span))
- }
- ast::ExprAssignOp(..) |
- ast::ExprUnary(..) |
- ast::ExprBinary(..) |
- ast::ExprIndex(..) => {
- format!("<method at {}>",
- cx.sess.codemap().span_to_str(expr.span))
- }
- _ => {
- format!("<expression at {}>",
- cx.sess.codemap().span_to_str(expr.span))
- }
- }
- }
- None => {
- format!("<unknown-{}>", node_id)
- }
- _ => cx.sess.bug(format!("ReScope refers to {}", cx.map.node_to_str(node_id)))
- }
-}
-
// In general, if you are giving a region error message,
// you should use `explain_region()` or, better yet,
// `note_and_explain_region()`
format!("[{}]", tstrs.connect(", "))
}
-pub fn tys_to_str(cx: &ctxt, ts: &[t]) -> ~str {
- vec_map_to_str(ts, |t| ty_to_str(cx, *t))
-}
-
pub fn fn_sig_to_str(cx: &ctxt, typ: &ty::FnSig) -> ~str {
format!("fn{}{} -> {}",
typ.binder_id,