diff options
| author | Michael Goulet <michael@errs.io> | 2024-06-28 14:18:36 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-06-28 14:20:44 -0400 |
| commit | 88f98c2929eebf2c4547dc5adbdaaf3ec651906a (patch) | |
| tree | 6d4540aab62d4cdcd6022d7d0cedfc8b3016344a | |
| parent | 51df533d06286cf509dd76b4a604db09fbc85c41 (diff) | |
| download | rust-88f98c2929eebf2c4547dc5adbdaaf3ec651906a.tar.gz rust-88f98c2929eebf2c4547dc5adbdaaf3ec651906a.zip | |
Implement RTN support in rustfmt
| -rw-r--r-- | src/types.rs | 34 | ||||
| -rw-r--r-- | tests/target/return-type-notation.rs | 10 |
2 files changed, 29 insertions, 15 deletions
diff --git a/src/types.rs b/src/types.rs index c0bf9482b11..c826547e9d0 100644 --- a/src/types.rs +++ b/src/types.rs @@ -484,21 +484,25 @@ fn rewrite_generic_args( span: Span, ) -> Option<String> { match gen_args { - ast::GenericArgs::AngleBracketed(ref data) if !data.args.is_empty() => { - let args = data - .args - .iter() - .map(|x| match x { - ast::AngleBracketedArg::Arg(generic_arg) => { - SegmentParam::from_generic_arg(generic_arg) - } - ast::AngleBracketedArg::Constraint(constraint) => { - SegmentParam::Binding(constraint) - } - }) - .collect::<Vec<_>>(); + ast::GenericArgs::AngleBracketed(ref data) => { + if data.args.is_empty() { + Some("".to_owned()) + } else { + let args = data + .args + .iter() + .map(|x| match x { + ast::AngleBracketedArg::Arg(generic_arg) => { + SegmentParam::from_generic_arg(generic_arg) + } + ast::AngleBracketedArg::Constraint(constraint) => { + SegmentParam::Binding(constraint) + } + }) + .collect::<Vec<_>>(); - overflow::rewrite_with_angle_brackets(context, "", args.iter(), shape, span) + overflow::rewrite_with_angle_brackets(context, "", args.iter(), shape, span) + } } ast::GenericArgs::Parenthesized(ref data) => format_function_type( data.inputs.iter().map(|x| &**x), @@ -508,7 +512,7 @@ fn rewrite_generic_args( context, shape, ), - _ => Some("".to_owned()), + ast::GenericArgs::ParenthesizedElided(..) => Some("(..)".to_owned()), } } diff --git a/tests/target/return-type-notation.rs b/tests/target/return-type-notation.rs new file mode 100644 index 00000000000..0f26e7e272b --- /dev/null +++ b/tests/target/return-type-notation.rs @@ -0,0 +1,10 @@ +fn rtn() +where + T: Trait<method(..): Send + 'static>, + T::method(..): Send + 'static, +{ +} + +fn test() { + let x: T::method(..); +} |
