mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-12 20:16:49 +00:00
Format type casts
This commit is contained in:
parent
fff0be2f82
commit
603f2034a5
38
src/expr.rs
38
src/expr.rs
@ -177,12 +177,14 @@ impl Rewrite for ast::Expr {
|
||||
rewrite_unary_prefix(context, "box ", expr, width, offset)
|
||||
}
|
||||
ast::Expr_::ExprAddrOf(mutability, ref expr) => {
|
||||
rewrite_expr_addrof(context, mutability, &expr, width, offset)
|
||||
rewrite_expr_addrof(context, mutability, expr, width, offset)
|
||||
}
|
||||
ast::Expr_::ExprCast(ref expr, ref ty) => {
|
||||
rewrite_cast(expr, ty, context, width, offset)
|
||||
}
|
||||
// We do not format these expressions yet, but they should still
|
||||
// satisfy our width restrictions.
|
||||
ast::Expr_::ExprInPlace(..) |
|
||||
ast::Expr_::ExprCast(..) |
|
||||
ast::Expr_::ExprIndex(..) |
|
||||
ast::Expr_::ExprInlineAsm(..) |
|
||||
ast::Expr_::ExprRepeat(..) => {
|
||||
@ -195,6 +197,38 @@ impl Rewrite for ast::Expr {
|
||||
}
|
||||
}
|
||||
|
||||
fn rewrite_cast(expr: &ast::Expr,
|
||||
ty: &ast::Ty,
|
||||
context: &RewriteContext,
|
||||
width: usize,
|
||||
offset: Indent)
|
||||
-> Option<String> {
|
||||
let max_width = try_opt!(width.checked_sub(" as ".len()));
|
||||
|
||||
binary_search(1,
|
||||
max_width,
|
||||
|expr_budget| {
|
||||
let expr_str = match expr.rewrite(context, expr_budget, offset) {
|
||||
Some(result) => result,
|
||||
None => return Err(Ordering::Greater),
|
||||
};
|
||||
|
||||
let last_line_width = last_line_width(&expr_str);
|
||||
let ty_budget = match max_width.checked_sub(last_line_width) {
|
||||
Some(b) => b,
|
||||
None => return Err(Ordering::Less),
|
||||
};
|
||||
let ty_indent = offset + last_line_width;
|
||||
|
||||
let ty_str = match ty.rewrite(context, ty_budget, ty_indent) {
|
||||
Some(result) => result,
|
||||
None => return Err(Ordering::Less),
|
||||
};
|
||||
|
||||
Ok(format!("{} as {}", expr_str, ty_str))
|
||||
})
|
||||
}
|
||||
|
||||
pub fn rewrite_array<'a, I>(expr_iter: I,
|
||||
span: Span,
|
||||
context: &RewriteContext,
|
||||
|
@ -184,3 +184,16 @@ fn addrof() {
|
||||
& mut(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
|
||||
& (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa+bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
|
||||
}
|
||||
|
||||
fn casts() {
|
||||
fn unpack(packed: u32) -> [u16; 2] {
|
||||
[
|
||||
(packed >> 16) as u16,
|
||||
(packed >> 0) as u16,
|
||||
]
|
||||
}
|
||||
|
||||
let some_trait_xxx = xxxxxxxxxxx + xxxxxxxxxxxxx
|
||||
as SomeTraitXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
|
||||
let slightly_longer_trait = yyyyyyyyy + yyyyyyyyyyy as SomeTraitYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY;
|
||||
}
|
||||
|
@ -198,3 +198,13 @@ fn addrof() {
|
||||
&(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
|
||||
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb);
|
||||
}
|
||||
|
||||
fn casts() {
|
||||
fn unpack(packed: u32) -> [u16; 2] {
|
||||
[(packed >> 16) as u16, (packed >> 0) as u16]
|
||||
}
|
||||
|
||||
let some_trait_xxx = xxxxxxxxxxx + xxxxxxxxxxxxx as SomeTraitXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
|
||||
let slightly_longer_trait = yyyyyyyyy +
|
||||
yyyyyyyyyyy as SomeTraitYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user