Skip to content

Commit

Permalink
fix printing closures
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Feb 9, 2019
1 parent 84d75db commit a413242
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions src/librustc_mir/util/pretty.rs
Expand Up @@ -596,13 +596,17 @@ fn write_mir_sig(

trace!("write_mir_sig: {:?}", src.instance);
let descr = tcx.describe_def(src.def_id());
let is_function = match descr {
Some(Def::Fn(_)) | Some(Def::Method(_)) | Some(Def::StructCtor(..)) => true,
_ => tcx.is_closure(src.def_id()),
};
match (descr, src.promoted) {
(_, Some(i)) => write!(w, "{:?} in ", i)?,
(Some(Def::Fn(_)), _) | (Some(Def::Method(_)), _) => write!(w, "fn ")?,
(Some(Def::StructCtor(..)), _) => write!(w, "struct ")?,
(Some(Def::Const(_)), _) => write!(w, "const ")?,
(Some(Def::Static(_, /*is_mutbl*/false)), _) => write!(w, "static ")?,
(Some(Def::Static(_, /*is_mutbl*/true)), _) => write!(w, "static mut ")?,
(_, _) if is_function => write!(w, "fn ")?,
(None, _) => {}, // things like anon const, not an item
_ => bug!("Unexpected def description {:?}", descr),
}
Expand All @@ -612,27 +616,21 @@ fn write_mir_sig(
write!(w, "{}", tcx.item_path_str(src.def_id()))
})?;

match (descr, src.promoted) {
(Some(Def::Fn(_)), None) |
(Some(Def::Method(_)), None) |
(Some(Def::StructCtor(..)), None) =>
{
write!(w, "(")?;

// fn argument types.
for (i, arg) in mir.args_iter().enumerate() {
if i != 0 {
write!(w, ", ")?;
}
write!(w, "{:?}: {}", Place::Local(arg), mir.local_decls[arg].ty)?;
}
if src.promoted.is_none() && is_function {
write!(w, "(")?;

write!(w, ") -> {}", mir.return_ty())?;
}
_ => {
assert_eq!(mir.arg_count, 0);
write!(w, ": {} =", mir.return_ty())?;
// fn argument types.
for (i, arg) in mir.args_iter().enumerate() {
if i != 0 {
write!(w, ", ")?;
}
write!(w, "{:?}: {}", Place::Local(arg), mir.local_decls[arg].ty)?;
}

write!(w, ") -> {}", mir.return_ty())?;
} else {
assert_eq!(mir.arg_count, 0);
write!(w, ": {} =", mir.return_ty())?;
}

if let Some(yield_ty) = mir.yield_ty {
Expand Down

0 comments on commit a413242

Please sign in to comment.