about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2021-06-12 01:15:56 +0900
committerGitHub <noreply@github.com>2021-06-12 01:15:56 +0900
commit3b47d337e04a24d5e8cf2d25864d7e9fa949ca0a (patch)
tree0323364d4d49b120d954bc2545b83df1716ab9a6 /src
parentdddebf94bccddaa7b8836380c1d90b34553d79d0 (diff)
parent47fe696d8f247d91c67068c25bb91767713aeb60 (diff)
downloadrust-3b47d337e04a24d5e8cf2d25864d7e9fa949ca0a.tar.gz
rust-3b47d337e04a24d5e8cf2d25864d7e9fa949ca0a.zip
Rollup merge of #85800 - BoxyUwU:const-param-default-diagnostics, r=oli-obk
Fix some diagnostic issues with const_generics_defaults feature gate

This PR makes a few changes:
- print out const param defaults in "lifetime ordering" errors rather than discarding them
- update `is_simple_text` to account for const params when checking if a type has no generics, this was causing a note to be failed to add to an error message
- fixes some diagnostic wording that incorrectly said there was ordering restrictions between type/const params despite the `const_generics_defaults` feature gate is active
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/const-generics/defaults/intermixed-lifetime.min.stderr4
-rw-r--r--src/test/ui/const-generics/defaults/mismatch.full.stderr14
-rw-r--r--src/test/ui/const-generics/defaults/mismatch.min.stderr14
-rw-r--r--src/test/ui/const-generics/defaults/mismatch.rs7
-rw-r--r--src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs5
-rw-r--r--src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr8
6 files changed, 40 insertions, 12 deletions
diff --git a/src/test/ui/const-generics/defaults/intermixed-lifetime.min.stderr b/src/test/ui/const-generics/defaults/intermixed-lifetime.min.stderr
index 985e7b655ec..29d835e36c6 100644
--- a/src/test/ui/const-generics/defaults/intermixed-lifetime.min.stderr
+++ b/src/test/ui/const-generics/defaults/intermixed-lifetime.min.stderr
@@ -2,13 +2,13 @@ error: lifetime parameters must be declared prior to const parameters
   --> $DIR/intermixed-lifetime.rs:7:28
    |
 LL | struct Foo<const N: usize, 'a, T = u32>(&'a (), T);
-   |           -----------------^^---------- help: reorder the parameters: lifetimes, then types, then consts: `<'a, const N: usize, T = u32>`
+   |           -----------------^^---------- help: reorder the parameters: lifetimes, then consts and types: `<'a, const N: usize, T = u32>`
 
 error: lifetime parameters must be declared prior to type parameters
   --> $DIR/intermixed-lifetime.rs:10:37
    |
 LL | struct Bar<const N: usize, T = u32, 'a>(&'a (), T);
-   |           --------------------------^^- help: reorder the parameters: lifetimes, then types, then consts: `<'a, const N: usize, T = u32>`
+   |           --------------------------^^- help: reorder the parameters: lifetimes, then consts and types: `<'a, const N: usize, T = u32>`
 
 error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/const-generics/defaults/mismatch.full.stderr b/src/test/ui/const-generics/defaults/mismatch.full.stderr
index be4f364d8ee..4aa8401ab22 100644
--- a/src/test/ui/const-generics/defaults/mismatch.full.stderr
+++ b/src/test/ui/const-generics/defaults/mismatch.full.stderr
@@ -5,9 +5,12 @@ LL |     let e: Example::<13> = ();
    |            -------------   ^^ expected struct `Example`, found `()`
    |            |
    |            expected due to this
+   |
+   = note: expected struct `Example`
+           found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:14:34
+  --> $DIR/mismatch.rs:15:34
    |
 LL |     let e: Example2::<u32, 13> = ();
    |            -------------------   ^^ expected struct `Example2`, found `()`
@@ -18,7 +21,7 @@ LL |     let e: Example2::<u32, 13> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:16:34
+  --> $DIR/mismatch.rs:18:34
    |
 LL |     let e: Example3::<13, u32> = ();
    |            -------------------   ^^ expected struct `Example3`, found `()`
@@ -29,7 +32,7 @@ LL |     let e: Example3::<13, u32> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:18:28
+  --> $DIR/mismatch.rs:21:28
    |
 LL |     let e: Example3::<7> = ();
    |            -------------   ^^ expected struct `Example3`, found `()`
@@ -40,12 +43,15 @@ LL |     let e: Example3::<7> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:22:28
+  --> $DIR/mismatch.rs:24:28
    |
 LL |     let e: Example4::<7> = ();
    |            -------------   ^^ expected struct `Example4`, found `()`
    |            |
    |            expected due to this
+   |
+   = note: expected struct `Example4<7_usize>`
+           found unit type `()`
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/const-generics/defaults/mismatch.min.stderr b/src/test/ui/const-generics/defaults/mismatch.min.stderr
index be4f364d8ee..4aa8401ab22 100644
--- a/src/test/ui/const-generics/defaults/mismatch.min.stderr
+++ b/src/test/ui/const-generics/defaults/mismatch.min.stderr
@@ -5,9 +5,12 @@ LL |     let e: Example::<13> = ();
    |            -------------   ^^ expected struct `Example`, found `()`
    |            |
    |            expected due to this
+   |
+   = note: expected struct `Example`
+           found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:14:34
+  --> $DIR/mismatch.rs:15:34
    |
 LL |     let e: Example2::<u32, 13> = ();
    |            -------------------   ^^ expected struct `Example2`, found `()`
@@ -18,7 +21,7 @@ LL |     let e: Example2::<u32, 13> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:16:34
+  --> $DIR/mismatch.rs:18:34
    |
 LL |     let e: Example3::<13, u32> = ();
    |            -------------------   ^^ expected struct `Example3`, found `()`
@@ -29,7 +32,7 @@ LL |     let e: Example3::<13, u32> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:18:28
+  --> $DIR/mismatch.rs:21:28
    |
 LL |     let e: Example3::<7> = ();
    |            -------------   ^^ expected struct `Example3`, found `()`
@@ -40,12 +43,15 @@ LL |     let e: Example3::<7> = ();
            found unit type `()`
 
 error[E0308]: mismatched types
-  --> $DIR/mismatch.rs:22:28
+  --> $DIR/mismatch.rs:24:28
    |
 LL |     let e: Example4::<7> = ();
    |            -------------   ^^ expected struct `Example4`, found `()`
    |            |
    |            expected due to this
+   |
+   = note: expected struct `Example4<7_usize>`
+           found unit type `()`
 
 error: aborting due to 5 previous errors
 
diff --git a/src/test/ui/const-generics/defaults/mismatch.rs b/src/test/ui/const-generics/defaults/mismatch.rs
index 68a640c0a08..9d9a8793aaa 100644
--- a/src/test/ui/const-generics/defaults/mismatch.rs
+++ b/src/test/ui/const-generics/defaults/mismatch.rs
@@ -11,14 +11,17 @@ pub struct Example4<const N: usize=13, const M: usize=4>;
 fn main() {
     let e: Example::<13> = ();
     //~^ Error: mismatched types
+    //~| expected struct `Example`
     let e: Example2::<u32, 13> = ();
     //~^ Error: mismatched types
+    //~| expected struct `Example2`
     let e: Example3::<13, u32> = ();
     //~^ Error: mismatched types
+    //~| expected struct `Example3`
     let e: Example3::<7> = ();
     //~^ Error: mismatched types
-    // FIXME(const_generics_defaults): There should be a note for the error below, but it is
-    // missing.
+    //~| expected struct `Example3<7_usize>`
     let e: Example4::<7> = ();
     //~^ Error: mismatched types
+    //~| expected struct `Example4<7_usize>`
 }
diff --git a/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs b/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs
new file mode 100644
index 00000000000..933eacb312d
--- /dev/null
+++ b/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.rs
@@ -0,0 +1,5 @@
+#![feature(const_generics_defaults)]
+struct Foo<const M: usize = 10, 'a>(&'a u32);
+//~^ Error lifetime parameters must be declared prior to const parameters
+
+fn main() {}
diff --git a/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr b/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr
new file mode 100644
index 00000000000..f50653fe9a1
--- /dev/null
+++ b/src/test/ui/const-generics/defaults/param-order-err-pretty-prints-default.stderr
@@ -0,0 +1,8 @@
+error: lifetime parameters must be declared prior to const parameters
+  --> $DIR/param-order-err-pretty-prints-default.rs:2:33
+   |
+LL | struct Foo<const M: usize = 10, 'a>(&'a u32);
+   |           ----------------------^^- help: reorder the parameters: lifetimes, then consts and types: `<'a, const M: usize = 10>`
+
+error: aborting due to previous error
+