about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSpanishPear <shrey.somaiya@gmail.com>2023-01-31 21:44:11 +1100
committerSpanishPear <shrey.somaiya@gmail.com>2023-01-31 21:44:11 +1100
commit70bfcc2518dc431cf20cd7d088b954fa348f17d9 (patch)
treeb21a45478c9e14cf425bd824d0f31f4d893b5d2c
parent8292d07cc4c9a070a9de808620bb79bab6935f70 (diff)
downloadrust-70bfcc2518dc431cf20cd7d088b954fa348f17d9.tar.gz
rust-70bfcc2518dc431cf20cd7d088b954fa348f17d9.zip
move to multipart spans
-rw-r--r--compiler/rustc_parse/src/parser/diagnostics.rs11
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/enum.stderr5
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/fn-complex-generics.stderr5
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/fn-simple.stderr5
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/struct.stderr5
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/trait.stderr5
-rw-r--r--tests/ui/parser/suggest_misplaced_generics/type.stderr5
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