cx: &EarlyContext,
value: &ast::Expr,
msg: &str,
- struct_lit_needs_parens: bool) {
+ followed_by_block: bool) {
if let ast::ExprKind::Paren(ref inner) = value.node {
- let necessary = struct_lit_needs_parens &&
- parser::contains_exterior_struct_lit(&inner);
+ let necessary = followed_by_block && if let ast::ExprKind::Ret(_) = inner.node {
+ true
+ } else {
+ parser::contains_exterior_struct_lit(&inner)
+ };
if !necessary {
- let pattern = pprust::expr_to_string(value);
- Self::remove_outer_parens(cx, value.span, &pattern, msg);
+ let expr_text = if let Ok(snippet) = cx.sess().source_map()
+ .span_to_snippet(value.span) {
+ snippet
+ } else {
+ pprust::expr_to_string(value)
+ };
+ Self::remove_outer_parens(cx, value.span, &expr_text, msg);
}
}
}