mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-02 11:44:28 +00:00
Add spaces between consecutive ..
..=
This commit is contained in:
parent
cef31b2841
commit
61d29eb70c
33
src/expr.rs
33
src/expr.rs
@ -248,14 +248,37 @@ pub fn format_expr(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn needs_space_after_range(rhs: &ast::Expr) -> bool {
|
||||||
|
match rhs.node {
|
||||||
|
// Don't format `.. ..` into `....`, which is invalid.
|
||||||
|
//
|
||||||
|
// This check is unnecessary for `lhs`, because a range
|
||||||
|
// starting from another range needs parentheses as `(x ..) ..`
|
||||||
|
// (`x .. ..` is a range from `x` to `..`).
|
||||||
|
ast::ExprKind::Range(None, _, _) => true,
|
||||||
|
_ => false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let default_sp_delim = |lhs: Option<&ast::Expr>, rhs: Option<&ast::Expr>| {
|
||||||
|
let space_if = |b: bool| if b { " " } else { "" };
|
||||||
|
|
||||||
|
format!(
|
||||||
|
"{}{}{}",
|
||||||
|
lhs.map(|lhs| space_if(needs_space_before_range(context, lhs)))
|
||||||
|
.unwrap_or(""),
|
||||||
|
delim,
|
||||||
|
rhs.map(|rhs| space_if(needs_space_after_range(rhs)))
|
||||||
|
.unwrap_or(""),
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
match (lhs.as_ref().map(|x| &**x), rhs.as_ref().map(|x| &**x)) {
|
match (lhs.as_ref().map(|x| &**x), rhs.as_ref().map(|x| &**x)) {
|
||||||
(Some(lhs), Some(rhs)) => {
|
(Some(lhs), Some(rhs)) => {
|
||||||
let sp_delim = if context.config.spaces_around_ranges() {
|
let sp_delim = if context.config.spaces_around_ranges() {
|
||||||
format!(" {} ", delim)
|
format!(" {} ", delim)
|
||||||
} else if needs_space_before_range(context, lhs) {
|
|
||||||
format!(" {}", delim)
|
|
||||||
} else {
|
} else {
|
||||||
delim.to_owned()
|
default_sp_delim(Some(lhs), Some(rhs))
|
||||||
};
|
};
|
||||||
rewrite_pair(
|
rewrite_pair(
|
||||||
&*lhs,
|
&*lhs,
|
||||||
@ -270,7 +293,7 @@ pub fn format_expr(
|
|||||||
let sp_delim = if context.config.spaces_around_ranges() {
|
let sp_delim = if context.config.spaces_around_ranges() {
|
||||||
format!("{} ", delim)
|
format!("{} ", delim)
|
||||||
} else {
|
} else {
|
||||||
delim.to_owned()
|
default_sp_delim(None, Some(rhs))
|
||||||
};
|
};
|
||||||
rewrite_unary_prefix(context, &sp_delim, &*rhs, shape)
|
rewrite_unary_prefix(context, &sp_delim, &*rhs, shape)
|
||||||
}
|
}
|
||||||
@ -278,7 +301,7 @@ pub fn format_expr(
|
|||||||
let sp_delim = if context.config.spaces_around_ranges() {
|
let sp_delim = if context.config.spaces_around_ranges() {
|
||||||
format!(" {}", delim)
|
format!(" {}", delim)
|
||||||
} else {
|
} else {
|
||||||
delim.to_owned()
|
default_sp_delim(Some(lhs), None)
|
||||||
};
|
};
|
||||||
rewrite_unary_suffix(context, &sp_delim, &*lhs, shape)
|
rewrite_unary_suffix(context, &sp_delim, &*lhs, shape)
|
||||||
}
|
}
|
||||||
|
@ -384,3 +384,9 @@ fn bar(&self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn dots() {
|
||||||
|
.. .. ..; // (.. (.. (..)))
|
||||||
|
..= ..= ..;
|
||||||
|
(..) .. ..; // ((..) .. (..))
|
||||||
|
}
|
||||||
|
@ -409,3 +409,9 @@ impl Foo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn dots() {
|
||||||
|
.. .. ..; // (.. (.. (..)))
|
||||||
|
..= ..= ..;
|
||||||
|
(..).. ..; // ((..) .. (..))
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user