File tree 3 files changed +36
-4
lines changed
compiler/rustc_errors/src
3 files changed +36
-4
lines changed Original file line number Diff line number Diff line change @@ -591,17 +591,18 @@ impl Diagnostic {
591
591
pub fn multipart_suggestion_with_style (
592
592
& mut self ,
593
593
msg : impl Into < SubdiagnosticMessage > ,
594
- suggestion : Vec < ( Span , String ) > ,
594
+ mut suggestion : Vec < ( Span , String ) > ,
595
595
applicability : Applicability ,
596
596
style : SuggestionStyle ,
597
597
) -> & mut Self {
598
- let mut parts = suggestion
598
+ suggestion. sort_unstable ( ) ;
599
+ suggestion. dedup ( ) ;
600
+
601
+ let parts = suggestion
599
602
. into_iter ( )
600
603
. map ( |( span, snippet) | SubstitutionPart { snippet, span } )
601
604
. collect :: < Vec < _ > > ( ) ;
602
605
603
- parts. sort_unstable_by_key ( |part| part. span ) ;
604
-
605
606
assert ! ( !parts. is_empty( ) ) ;
606
607
debug_assert_eq ! (
607
608
parts. iter( ) . find( |part| part. span. is_empty( ) && part. snippet. is_empty( ) ) ,
Original file line number Diff line number Diff line change
1
+ macro_rules! foo {
2
+ ( $ty: ty) => {
3
+ fn foo( _: $ty, _: $ty) { }
4
+ }
5
+ }
6
+
7
+ foo ! ( _) ;
8
+ //~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
9
+
10
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
2
+ --> $DIR/issue-118048.rs:7:6
3
+ |
4
+ LL | foo!(_);
5
+ | ^
6
+ | |
7
+ | not allowed in type signatures
8
+ | not allowed in type signatures
9
+ |
10
+ help: use type parameters instead
11
+ |
12
+ LL ~ fn foo<T>(_: $ty, _: $ty) {}
13
+ LL | }
14
+ LL | }
15
+ LL |
16
+ LL ~ foo!(T);
17
+ |
18
+
19
+ error: aborting due to 1 previous error
20
+
21
+ For more information about this error, try `rustc --explain E0121`.
You can’t perform that action at this time.
0 commit comments