Simplify rewrite_explicit_self
· rust-lang/rust@50d0f99 (original) (raw)
`@@ -2359,6 +2359,21 @@ impl Rewrite for ast::Param {
`
2359
2359
`}
`
2360
2360
`}
`
2361
2361
``
``
2362
`+
fn rewrite_opt_lifetime(
`
``
2363
`+
context: &RewriteContext<'_>,
`
``
2364
`+
lifetime: Optionast::Lifetime,
`
``
2365
`+
) -> RewriteResult {
`
``
2366
`+
let Some(l) = lifetime else {
`
``
2367
`+
return Ok(String::new());
`
``
2368
`+
};
`
``
2369
`+
let mut result = l.rewrite_result(
`
``
2370
`+
context,
`
``
2371
`+
Shape::legacy(context.config.max_width(), Indent::empty()),
`
``
2372
`+
)?;
`
``
2373
`+
result.push(' ');
`
``
2374
`+
Ok(result)
`
``
2375
`+
}
`
``
2376
+
2362
2377
`fn rewrite_explicit_self(
`
2363
2378
`context: &RewriteContext<'_>,
`
2364
2379
`explicit_self: &ast::ExplicitSelf,
`
`@@ -2367,85 +2382,34 @@ fn rewrite_explicit_self(
`
2367
2382
`shape: Shape,
`
2368
2383
`has_multiple_attr_lines: bool,
`
2369
2384
`) -> RewriteResult {
`
2370
``
`-
match explicit_self.node {
`
``
2385
`+
let self_str = match explicit_self.node {
`
2371
2386
` ast::SelfKind::Region(lt, m) => {
`
2372
2387
`let mut_str = format_mutability(m);
`
2373
``
`-
match lt {
`
2374
``
`-
Some(ref l) => {
`
2375
``
`-
let lifetime_str = l.rewrite_result(
`
2376
``
`-
context,
`
2377
``
`-
Shape::legacy(context.config.max_width(), Indent::empty()),
`
2378
``
`-
)?;
`
2379
``
`-
Ok(combine_strs_with_missing_comments(
`
2380
``
`-
context,
`
2381
``
`-
param_attrs,
`
2382
``
`-
&format!("&{lifetime_str} {mut_str}self"),
`
2383
``
`-
span,
`
2384
``
`-
shape,
`
2385
``
`-
!has_multiple_attr_lines,
`
2386
``
`-
)?)
`
2387
``
`-
}
`
2388
``
`-
None => Ok(combine_strs_with_missing_comments(
`
2389
``
`-
context,
`
2390
``
`-
param_attrs,
`
2391
``
`-
&format!("&{mut_str}self"),
`
2392
``
`-
span,
`
2393
``
`-
shape,
`
2394
``
`-
!has_multiple_attr_lines,
`
2395
``
`-
)?),
`
2396
``
`-
}
`
``
2388
`+
let lifetime_str = rewrite_opt_lifetime(context, lt)?;
`
``
2389
`+
format!("&{lifetime_str}{mut_str}self")
`
2397
2390
`}
`
2398
2391
` ast::SelfKind::Pinned(lt, m) => {
`
2399
2392
`let mut_str = m.ptr_str();
`
2400
``
`-
match lt {
`
2401
``
`-
Some(ref l) => {
`
2402
``
`-
let lifetime_str = l.rewrite_result(
`
2403
``
`-
context,
`
2404
``
`-
Shape::legacy(context.config.max_width(), Indent::empty()),
`
2405
``
`-
)?;
`
2406
``
`-
Ok(combine_strs_with_missing_comments(
`
2407
``
`-
context,
`
2408
``
`-
param_attrs,
`
2409
``
`-
&format!("&{lifetime_str} pin {mut_str} self"),
`
2410
``
`-
span,
`
2411
``
`-
shape,
`
2412
``
`-
!has_multiple_attr_lines,
`
2413
``
`-
)?)
`
2414
``
`-
}
`
2415
``
`-
None => Ok(combine_strs_with_missing_comments(
`
2416
``
`-
context,
`
2417
``
`-
param_attrs,
`
2418
``
`-
&format!("&pin {mut_str} self"),
`
2419
``
`-
span,
`
2420
``
`-
shape,
`
2421
``
`-
!has_multiple_attr_lines,
`
2422
``
`-
)?),
`
2423
``
`-
}
`
``
2393
`+
let lifetime_str = rewrite_opt_lifetime(context, lt)?;
`
``
2394
`+
format!("&{lifetime_str}pin {mut_str} self")
`
2424
2395
`}
`
2425
2396
` ast::SelfKind::Explicit(ref ty, mutability) => {
`
2426
2397
`let type_str = ty.rewrite_result(
`
2427
2398
` context,
`
2428
2399
`Shape::legacy(context.config.max_width(), Indent::empty()),
`
2429
2400
`)?;
`
2430
``
-
2431
``
`-
Ok(combine_strs_with_missing_comments(
`
2432
``
`-
context,
`
2433
``
`-
param_attrs,
`
2434
``
`-
&format!("{}self: {}", format_mutability(mutability), type_str),
`
2435
``
`-
span,
`
2436
``
`-
shape,
`
2437
``
`-
!has_multiple_attr_lines,
`
2438
``
`-
)?)
`
``
2401
`+
format!("{}self: {}", format_mutability(mutability), type_str)
`
2439
2402
`}
`
2440
``
`-
ast::SelfKind::Value(mutability) => Ok(combine_strs_with_missing_comments(
`
2441
``
`-
context,
`
2442
``
`-
param_attrs,
`
2443
``
`-
&format!("{}self", format_mutability(mutability)),
`
2444
``
`-
span,
`
2445
``
`-
shape,
`
2446
``
`-
!has_multiple_attr_lines,
`
2447
``
`-
)?),
`
2448
``
`-
}
`
``
2403
`+
ast::SelfKind::Value(mutability) => format!("{}self", format_mutability(mutability)),
`
``
2404
`+
};
`
``
2405
`+
Ok(combine_strs_with_missing_comments(
`
``
2406
`+
context,
`
``
2407
`+
param_attrs,
`
``
2408
`+
&self_str,
`
``
2409
`+
span,
`
``
2410
`+
shape,
`
``
2411
`+
!has_multiple_attr_lines,
`
``
2412
`+
)?)
`
2449
2413
`}
`
2450
2414
``
2451
2415
`pub(crate) fn span_lo_for_param(param: &ast::Param) -> BytePos {
`