use config::{Config, IndentStyle};
use rewrite::RewriteContext;
use shape::{Indent, Shape};
-use utils::{first_line_width, last_line_width, mk_sp};
+use utils::{first_line_width, last_line_width, mk_sp, starts_with_newline};
/// Formatting tactic for lists. This will be cast down to a
/// `DefinitiveListTactic` depending on the number and length of the items and
let indent_str = &formatting.shape.indent.to_string(formatting.config);
while let Some((i, item)) = iter.next() {
let item = item.as_ref();
- let inner_item = try_opt!(item.item.as_ref());
+ let inner_item = item.item.as_ref()?;
let first = i == 0;
let last = iter.peek().is_none();
let mut separate = !last || trailing_separator;
// Block style in non-vertical mode.
let block_mode = tactic != DefinitiveListTactic::Vertical;
// Width restriction is only relevant in vertical mode.
- let comment = try_opt!(rewrite_comment(
- comment,
- block_mode,
- formatting.shape,
- formatting.config,
- ));
+ let comment =
+ rewrite_comment(comment, block_mode, formatting.shape, formatting.config)?;
result.push_str(&comment);
if tactic == DefinitiveListTactic::Vertical {
// Post-comments
if tactic != DefinitiveListTactic::Vertical && item.post_comment.is_some() {
let comment = item.post_comment.as_ref().unwrap();
- let formatted_comment = try_opt!(rewrite_comment(
+ let formatted_comment = rewrite_comment(
comment,
true,
Shape::legacy(formatting.shape.width, Indent::empty()),
formatting.config,
- ));
+ )?;
result.push(' ');
result.push_str(&formatted_comment);
rewrite_comment(comment, block_style, comment_shape, formatting.config)
};
- let mut formatted_comment = try_opt!(rewrite_post_comment(&mut item_max_width));
+ let mut formatted_comment = rewrite_post_comment(&mut item_max_width)?;
- if !formatted_comment.starts_with('\n') {
+ if !starts_with_newline(&formatted_comment) {
let mut comment_alignment =
post_comment_alignment(item_max_width, inner_item.len());
if first_line_width(&formatted_comment) + last_line_width(&result)
+ comment_alignment + 1 > formatting.config.max_width()
{
item_max_width = None;
- formatted_comment = try_opt!(rewrite_post_comment(&mut item_max_width));
+ formatted_comment = rewrite_post_comment(&mut item_max_width)?;
comment_alignment = post_comment_alignment(item_max_width, inner_item.len());
}
for _ in 0..(comment_alignment + 1) {
let comment_end = match self.inner.peek() {
Some(..) => {
let mut block_open_index = post_snippet.find("/*");
- // check if it realy is a block comment (and not //*)
+ // check if it really is a block comment (and not //*)
if let Some(i) = block_open_index {
if i > 0 && &post_snippet[i - 1..i] == "/" {
block_open_index = None;
prefix_width: usize,
suffix_width: usize,
) -> Option<(Option<Shape>, Shape)> {
- let v_shape = match context.config.struct_lit_style() {
- IndentStyle::Visual => try_opt!(
- try_opt!(shape.visual_indent(0).shrink_left(prefix_width)).sub_width(suffix_width)
- ),
+ let v_shape = match context.config.struct_lit_indent() {
+ IndentStyle::Visual => shape
+ .visual_indent(0)
+ .shrink_left(prefix_width)?
+ .sub_width(suffix_width)?,
IndentStyle::Block => {
let shape = shape.block_indent(context.config.tab_spaces());
Shape {
items: &[ListItem],
) -> DefinitiveListTactic {
if let Some(h_shape) = h_shape {
- let prelim_tactic = match (context.config.struct_lit_style(), items.len()) {
+ let prelim_tactic = match (context.config.struct_lit_indent(), items.len()) {
(IndentStyle::Visual, 1) => ListTactic::HorizontalVertical,
_ => context.config.struct_lit_multiline_style().to_list_tactic(),
};
context: &'a RewriteContext,
force_no_trailing_comma: bool,
) -> ListFormatting<'a> {
- let ends_with_newline = context.config.struct_lit_style() != IndentStyle::Visual
+ let ends_with_newline = context.config.struct_lit_indent() != IndentStyle::Visual
&& tactic == DefinitiveListTactic::Vertical;
ListFormatting {
tactic: tactic,