use std::cmp::min;
use config::lists::*;
-use syntax::codemap::{BytePos, CodeMap, Span};
use syntax::parse::token::DelimToken;
+use syntax::source_map::{BytePos, SourceMap, Span};
use syntax::{ast, ptr};
use chains::rewrite_chain;
use closures;
-use codemap::{LineRangeUtils, SpanUtils};
use comment::{
combine_strs_with_missing_comments, contains_comment, recover_comment_removed, rewrite_comment,
rewrite_missing_comment, CharClasses, FindUncommented,
use patterns::{can_be_overflowed_pat, is_short_pattern, TuplePatField};
use rewrite::{Rewrite, RewriteContext};
use shape::{Indent, Shape};
+use source_map::{LineRangeUtils, SpanUtils};
use spanned::Spanned;
use string::{rewrite_string, StringFormat};
use types::{can_be_overflowed_type, rewrite_path, PathContext};
// We do not format these expressions yet, but they should still
// satisfy our width restrictions.
ast::ExprKind::InlineAsm(..) => Some(context.snippet(expr.span).to_owned()),
- ast::ExprKind::Catch(ref block) => {
- if let rw @ Some(_) = rewrite_single_line_block(
- context,
- "do catch ",
- block,
- Some(&expr.attrs),
- None,
- shape,
- ) {
+ ast::ExprKind::TryBlock(ref block) => {
+ if let rw @ Some(_) =
+ rewrite_single_line_block(context, "try ", block, Some(&expr.attrs), None, shape)
+ {
rw
} else {
- // 9 = `do catch `
+ // 9 = `try `
let budget = shape.width.saturating_sub(9);
Some(format!(
"{}{}",
- "do catch ",
+ "try ",
rewrite_block(
block,
Some(&expr.attrs),
))
}
}
- // FIXME(#2743)
- ast::ExprKind::ObsoleteInPlace(..) => unimplemented!(),
+ ast::ExprKind::ObsoleteInPlace(ref lhs, ref rhs) => lhs
+ .rewrite(context, shape)
+ .map(|s| s + " <-")
+ .and_then(|lhs| rewrite_assign_rhs(context, lhs, &**rhs, shape)),
ast::ExprKind::Async(capture_by, _node_id, ref block) => {
let mover = if capture_by == ast::CaptureBy::Value {
"move "
return None;
}
- if block.stmts.is_empty() && !block_contains_comment(block, context.codemap) && shape.width >= 2
+ if block.stmts.is_empty()
+ && !block_contains_comment(block, context.source_map)
+ && shape.width >= 2
{
return Some(format!("{}{}{{}}", prefix, label_str));
}
label: Option<ast::Label>,
shape: Shape,
) -> Option<String> {
- if is_simple_block(block, attrs, context.codemap) {
+ if is_simple_block(block, attrs, context.source_map) {
let expr_shape = shape.offset_left(last_line_width(prefix))?;
let expr_str = block.stmts[0].rewrite(context, expr_shape)?;
let label_str = rewrite_label(label);
let fixed_cost = self.keyword.len() + " { } else { }".len();
if let ast::ExprKind::Block(ref else_node, _) = else_block.node {
- if !is_simple_block(self.block, None, context.codemap)
- || !is_simple_block(else_node, None, context.codemap)
+ if !is_simple_block(self.block, None, context.source_map)
+ || !is_simple_block(else_node, None, context.source_map)
|| pat_expr_str.contains('\n')
{
return None;
}
}
-pub fn block_contains_comment(block: &ast::Block, codemap: &CodeMap) -> bool {
- let snippet = codemap.span_to_snippet(block.span).unwrap();
+pub fn block_contains_comment(block: &ast::Block, source_map: &SourceMap) -> bool {
+ let snippet = source_map.span_to_snippet(block.span).unwrap();
contains_comment(&snippet)
}
pub fn is_simple_block(
block: &ast::Block,
attrs: Option<&[ast::Attribute]>,
- codemap: &CodeMap,
+ source_map: &SourceMap,
) -> bool {
(block.stmts.len() == 1
&& stmt_is_expr(&block.stmts[0])
- && !block_contains_comment(block, codemap)
+ && !block_contains_comment(block, source_map)
&& attrs.map_or(true, |a| a.is_empty()))
}
pub fn is_simple_block_stmt(
block: &ast::Block,
attrs: Option<&[ast::Attribute]>,
- codemap: &CodeMap,
+ source_map: &SourceMap,
) -> bool {
block.stmts.len() <= 1
- && !block_contains_comment(block, codemap)
+ && !block_contains_comment(block, source_map)
&& attrs.map_or(true, |a| a.is_empty())
}
pub fn is_empty_block(
block: &ast::Block,
attrs: Option<&[ast::Attribute]>,
- codemap: &CodeMap,
+ source_map: &SourceMap,
) -> bool {
block.stmts.is_empty()
- && !block_contains_comment(block, codemap)
+ && !block_contains_comment(block, source_map)
&& attrs.map_or(true, |a| inner_attributes(a).is_empty())
}