diff options
| author | SpanishPear <shrey.somaiya@gmail.com> | 2023-01-31 21:44:11 +1100 |
|---|---|---|
| committer | SpanishPear <shrey.somaiya@gmail.com> | 2023-01-31 21:44:11 +1100 |
| commit | 70bfcc2518dc431cf20cd7d088b954fa348f17d9 (patch) | |
| tree | b21a45478c9e14cf425bd824d0f31f4d893b5d2c | |
| parent | 8292d07cc4c9a070a9de808620bb79bab6935f70 (diff) | |
| download | rust-70bfcc2518dc431cf20cd7d088b954fa348f17d9.tar.gz rust-70bfcc2518dc431cf20cd7d088b954fa348f17d9.zip | |
move to multipart spans
7 files changed, 24 insertions, 17 deletions
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs index 9ac3bb946dc..1740f2c2c84 100644 --- a/compiler/rustc_parse/src/parser/diagnostics.rs +++ b/compiler/rustc_parse/src/parser/diagnostics.rs @@ -352,12 +352,13 @@ impl<'a> Parser<'a> { // if there is a `<` after the fn name, then don't show a suggestion, show help if !self.look_ahead(1, |t| *t == token::Lt) && - let Ok(snippet) = self.sess.source_map().span_to_snippet(generic.span) && - let Ok(ident) = self.sess.source_map().span_to_snippet(self.token.span) { - err.span_suggestion_verbose( - generic.span.to(self.token.span), + let Ok(snippet) = self.sess.source_map().span_to_snippet(generic.span) { + err.multipart_suggestion_verbose( format!("place the generic parameter name after the {ident_name} name"), - format!(" {ident}{snippet}"), + vec![ + (self.token.span.shrink_to_hi(), snippet), + (generic.span, String::new()) + ], Applicability::MaybeIncorrect, ); } else { diff --git a/tests/ui/parser/suggest_misplaced_generics/enum.stderr b/tests/ui/parser/suggest_misplaced_generics/enum.stderr index 521cee4f728..5f5947627ee 100644 --- a/tests/ui/parser/suggest_misplaced_generics/enum.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/enum.stderr @@ -6,8 +6,9 @@ LL | enum<T> Foo { Variant(T) } | help: place the generic parameter name after the enum name | -LL | enum Foo<T> { Variant(T) } - | ~~~~~~ +LL - enum<T> Foo { Variant(T) } +LL + enum Foo<T> { Variant(T) } + | error: aborting due to previous error diff --git a/tests/ui/parser/suggest_misplaced_generics/fn-complex-generics.stderr b/tests/ui/parser/suggest_misplaced_generics/fn-complex-generics.stderr index 7d1b44c4494..061d0910a74 100644 --- a/tests/ui/parser/suggest_misplaced_generics/fn-complex-generics.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/fn-complex-generics.stderr @@ -6,8 +6,9 @@ LL | fn<'a, B: 'a + std::ops::Add<Output = u32>> f(_x: B) { } | help: place the generic parameter name after the fn name | -LL | fn f<'a, B: 'a + std::ops::Add<Output = u32>>(_x: B) { } - | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +LL - fn<'a, B: 'a + std::ops::Add<Output = u32>> f(_x: B) { } +LL + fn f<'a, B: 'a + std::ops::Add<Output = u32>>(_x: B) { } + | error: aborting due to previous error diff --git a/tests/ui/parser/suggest_misplaced_generics/fn-simple.stderr b/tests/ui/parser/suggest_misplaced_generics/fn-simple.stderr index 40c4581e513..e749f1a0d00 100644 --- a/tests/ui/parser/suggest_misplaced_generics/fn-simple.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/fn-simple.stderr @@ -6,8 +6,9 @@ LL | fn<T> id(x: T) -> T { x } | help: place the generic parameter name after the fn name | -LL | fn id<T>(x: T) -> T { x } - | ~~~~~ +LL - fn<T> id(x: T) -> T { x } +LL + fn id<T>(x: T) -> T { x } + | error: aborting due to previous error diff --git a/tests/ui/parser/suggest_misplaced_generics/struct.stderr b/tests/ui/parser/suggest_misplaced_generics/struct.stderr index ab17ee57e0b..2b650907092 100644 --- a/tests/ui/parser/suggest_misplaced_generics/struct.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/struct.stderr @@ -6,8 +6,9 @@ LL | struct<T> Foo { x: T } | help: place the generic parameter name after the struct name | -LL | struct Foo<T> { x: T } - | ~~~~~~ +LL - struct<T> Foo { x: T } +LL + struct Foo<T> { x: T } + | error: aborting due to previous error diff --git a/tests/ui/parser/suggest_misplaced_generics/trait.stderr b/tests/ui/parser/suggest_misplaced_generics/trait.stderr index 069683bda1b..ac86cfa4697 100644 --- a/tests/ui/parser/suggest_misplaced_generics/trait.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/trait.stderr @@ -6,8 +6,9 @@ LL | trait<T> Foo { | help: place the generic parameter name after the trait name | -LL | trait Foo<T> { - | ~~~~~~ +LL - trait<T> Foo { +LL + trait Foo<T> { + | error: aborting due to previous error diff --git a/tests/ui/parser/suggest_misplaced_generics/type.stderr b/tests/ui/parser/suggest_misplaced_generics/type.stderr index a2832965c6d..22744f6cf37 100644 --- a/tests/ui/parser/suggest_misplaced_generics/type.stderr +++ b/tests/ui/parser/suggest_misplaced_generics/type.stderr @@ -6,8 +6,9 @@ LL | type<T> Foo = T; | help: place the generic parameter name after the type name | -LL | type Foo<T> = T; - | ~~~~~~ +LL - type<T> Foo = T; +LL + type Foo<T> = T; + | error: aborting due to previous error |
