about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVeera <sveera.2001@gmail.com>2024-06-05 19:11:40 -0400
committerVeera <sveera.2001@gmail.com>2024-06-05 20:08:00 -0400
commit6d19ac36b904155ca0f3f89e6a6361d56a46551d (patch)
tree32a411d71deb39d981ab2f1da91faad45d51573d
parent7ebd2bdbf6d798e6e711a0100981b0ff029abf5f (diff)
downloadrust-6d19ac36b904155ca0f3f89e6a6361d56a46551d.tar.gz
rust-6d19ac36b904155ca0f3f89e6a6361d56a46551d.zip
Update Tests
-rw-r--r--tests/ui/associated-type-bounds/no-gat-position.rs1
-rw-r--r--tests/ui/associated-type-bounds/no-gat-position.stderr5
-rw-r--r--tests/ui/associated-types/associated-types-eq-2.rs2
-rw-r--r--tests/ui/associated-types/associated-types-eq-2.stderr62
-rw-r--r--tests/ui/async-await/return-type-notation/rtn-in-impl-signature.stderr5
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs3
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr22
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013.rs1
-rw-r--r--tests/ui/const-generics/parser-error-recovery/issue-89013.stderr22
-rw-r--r--tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.rs33
-rw-r--r--tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.stderr96
11 files changed, 161 insertions, 91 deletions
diff --git a/tests/ui/associated-type-bounds/no-gat-position.rs b/tests/ui/associated-type-bounds/no-gat-position.rs
index cb62c882468..249812ebbff 100644
--- a/tests/ui/associated-type-bounds/no-gat-position.rs
+++ b/tests/ui/associated-type-bounds/no-gat-position.rs
@@ -5,6 +5,7 @@ pub trait Iter {
 
     fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
     //~^ ERROR associated item constraints are not allowed here
+    //~| HELP consider removing this associated item binding
 }
 
 impl Iter for () {
diff --git a/tests/ui/associated-type-bounds/no-gat-position.stderr b/tests/ui/associated-type-bounds/no-gat-position.stderr
index e167ac1fda4..b8e466b8d84 100644
--- a/tests/ui/associated-type-bounds/no-gat-position.stderr
+++ b/tests/ui/associated-type-bounds/no-gat-position.stderr
@@ -3,6 +3,11 @@ error[E0229]: associated item constraints are not allowed here
    |
 LL |     fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
    |                                                        ^^^^^^^^^ associated item constraint not allowed here
+   |
+help: consider removing this associated item binding
+   |
+LL |     fn next<'a>(&'a mut self) -> Option<Self::Item<'a, As1: Copy>>;
+   |                                                      ~~~~~~~~~~~
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/associated-types/associated-types-eq-2.rs b/tests/ui/associated-types/associated-types-eq-2.rs
index f0a7d1e46b1..88eb2981061 100644
--- a/tests/ui/associated-types/associated-types-eq-2.rs
+++ b/tests/ui/associated-types/associated-types-eq-2.rs
@@ -76,7 +76,6 @@ trait Tr3<const N: i32, T2, T3> {
 impl Tr3<N
 //~^ ERROR associated item constraints are not allowed here
 //~| ERROR associated const equality is incomplete
-//~| ERROR trait takes 3 generic arguments but 0 generic arguments were supplied
 = 42, T2 = Qux, T3 = usize> for Bar {
 }
 
@@ -92,7 +91,6 @@ impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
 // matches the const param ident but the constraint is a type arg
 impl Tr3<N = u32, T2 = Qux, T3 = usize> for Bar {
 //~^ ERROR associated item constraints are not allowed here
-//~| ERROR trait takes 3 generic arguments but 0 generic arguments were supplied
 }
 
 // Test for when equality constraint's ident
diff --git a/tests/ui/associated-types/associated-types-eq-2.stderr b/tests/ui/associated-types/associated-types-eq-2.stderr
index 53e4e59128e..69b1b533450 100644
--- a/tests/ui/associated-types/associated-types-eq-2.stderr
+++ b/tests/ui/associated-types/associated-types-eq-2.stderr
@@ -5,7 +5,6 @@ LL |   impl Tr3<N
    |  __________^
 LL | |
 LL | |
-LL | |
 LL | | = 42, T2 = Qux, T3 = usize> for Bar {
    | |____^
    |
@@ -14,7 +13,7 @@ LL | | = 42, T2 = Qux, T3 = usize> for Bar {
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error[E0658]: associated const equality is incomplete
-  --> $DIR/associated-types-eq-2.rs:85:10
+  --> $DIR/associated-types-eq-2.rs:84:10
    |
 LL | impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
    |          ^^^^^^
@@ -24,7 +23,7 @@ LL | impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error[E0658]: associated const equality is incomplete
-  --> $DIR/associated-types-eq-2.rs:100:14
+  --> $DIR/associated-types-eq-2.rs:98:14
    |
 LL | impl Tr3<42, T2 = 42, T3 = usize> for Bar {
    |              ^^^^^^^
@@ -34,7 +33,7 @@ LL | impl Tr3<42, T2 = 42, T3 = usize> for Bar {
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error[E0658]: associated const equality is incomplete
-  --> $DIR/associated-types-eq-2.rs:108:10
+  --> $DIR/associated-types-eq-2.rs:106:10
    |
 LL | impl Tr3<X = 42, Y = Qux, Z = usize> for Bar {
    |          ^^^^^^
@@ -190,22 +189,6 @@ help: to use `GenericTerm<i32>` as a generic argument specify it directly
 LL | impl Tr2<i32, Qux, GenericTerm<i32>> for Bar {
    |                    ~~~~~~~~~~~~~~~~
 
-error[E0107]: trait takes 3 generic arguments but 0 generic arguments were supplied
-  --> $DIR/associated-types-eq-2.rs:76:6
-   |
-LL | impl Tr3<N
-   |      ^^^ expected 3 generic arguments
-   |
-note: trait defined here, with 3 generic parameters: `N`, `T2`, `T3`
-  --> $DIR/associated-types-eq-2.rs:69:7
-   |
-LL | trait Tr3<const N: i32, T2, T3> {
-   |       ^^^ ------------  --  --
-help: add missing generic arguments
-   |
-LL | impl Tr3<N, T2, T3, N
-   |          ++++++++++
-
 error[E0229]: associated item constraints are not allowed here
   --> $DIR/associated-types-eq-2.rs:76:10
    |
@@ -213,7 +196,6 @@ LL |   impl Tr3<N
    |  __________^
 LL | |
 LL | |
-LL | |
 LL | | = 42, T2 = Qux, T3 = usize> for Bar {
    | |____^ associated item constraint not allowed here
    |
@@ -223,7 +205,7 @@ LL | impl Tr3<42, T2 = Qux, T3 = usize> for Bar {
    |          ~~
 
 error[E0107]: trait takes 3 generic arguments but 0 generic arguments were supplied
-  --> $DIR/associated-types-eq-2.rs:85:6
+  --> $DIR/associated-types-eq-2.rs:84:6
    |
 LL | impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
    |      ^^^ expected 3 generic arguments
@@ -239,7 +221,7 @@ LL | impl Tr3<N, T2, T3, n = 42, T2 = Qux, T3 = usize> for Qux {
    |          ++++++++++
 
 error[E0229]: associated item constraints are not allowed here
-  --> $DIR/associated-types-eq-2.rs:85:10
+  --> $DIR/associated-types-eq-2.rs:84:10
    |
 LL | impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
    |          ^^^^^^ associated item constraint not allowed here
@@ -249,24 +231,8 @@ help: consider removing this associated item binding
 LL | impl Tr3<n = 42, T2 = Qux, T3 = usize> for Qux {
    |          ~~~~~~~
 
-error[E0107]: trait takes 3 generic arguments but 0 generic arguments were supplied
-  --> $DIR/associated-types-eq-2.rs:93:6
-   |
-LL | impl Tr3<N = u32, T2 = Qux, T3 = usize> for Bar {
-   |      ^^^ expected 3 generic arguments
-   |
-note: trait defined here, with 3 generic parameters: `N`, `T2`, `T3`
-  --> $DIR/associated-types-eq-2.rs:69:7
-   |
-LL | trait Tr3<const N: i32, T2, T3> {
-   |       ^^^ ------------  --  --
-help: add missing generic arguments
-   |
-LL | impl Tr3<N, T2, T3, N = u32, T2 = Qux, T3 = usize> for Bar {
-   |          ++++++++++
-
 error[E0229]: associated item constraints are not allowed here
-  --> $DIR/associated-types-eq-2.rs:93:10
+  --> $DIR/associated-types-eq-2.rs:92:10
    |
 LL | impl Tr3<N = u32, T2 = Qux, T3 = usize> for Bar {
    |          ^^^^^^^ associated item constraint not allowed here
@@ -277,7 +243,7 @@ LL | impl Tr3<N = u32, T2 = Qux, T3 = usize> for Bar {
    |          ~~~~~~~~
 
 error[E0107]: trait takes 3 generic arguments but 1 generic argument was supplied
-  --> $DIR/associated-types-eq-2.rs:100:6
+  --> $DIR/associated-types-eq-2.rs:98:6
    |
 LL | impl Tr3<42, T2 = 42, T3 = usize> for Bar {
    |      ^^^ -- supplied 1 generic argument
@@ -295,7 +261,7 @@ LL | impl Tr3<42, T2, T3, T2 = 42, T3 = usize> for Bar {
    |            ++++++++
 
 error[E0229]: associated item constraints are not allowed here
-  --> $DIR/associated-types-eq-2.rs:100:14
+  --> $DIR/associated-types-eq-2.rs:98:14
    |
 LL | impl Tr3<42, T2 = 42, T3 = usize> for Bar {
    |              ^^^^^^^ associated item constraint not allowed here
@@ -306,7 +272,7 @@ LL | impl Tr3<42, T2 = 42, T3 = usize> for Bar {
    |            ~~~~~~~~~
 
 error[E0107]: trait takes 3 generic arguments but 0 generic arguments were supplied
-  --> $DIR/associated-types-eq-2.rs:108:6
+  --> $DIR/associated-types-eq-2.rs:106:6
    |
 LL | impl Tr3<X = 42, Y = Qux, Z = usize> for Bar {
    |      ^^^ expected 3 generic arguments
@@ -322,7 +288,7 @@ LL | impl Tr3<N, T2, T3, X = 42, Y = Qux, Z = usize> for Bar {
    |          ++++++++++
 
 error[E0229]: associated item constraints are not allowed here
-  --> $DIR/associated-types-eq-2.rs:108:10
+  --> $DIR/associated-types-eq-2.rs:106:10
    |
 LL | impl Tr3<X = 42, Y = Qux, Z = usize> for Bar {
    |          ^^^^^^ associated item constraint not allowed here
@@ -333,13 +299,13 @@ LL | impl Tr3<X = 42, Y = Qux, Z = usize> for Bar {
    |          ~~~~~~~
 
 error[E0107]: struct takes 1 generic argument but 0 generic arguments were supplied
-  --> $DIR/associated-types-eq-2.rs:119:13
+  --> $DIR/associated-types-eq-2.rs:117:13
    |
 LL | impl<'a, T> St<'a , T = Qux> {
    |             ^^ expected 1 generic argument
    |
 note: struct defined here, with 1 generic parameter: `T`
-  --> $DIR/associated-types-eq-2.rs:117:8
+  --> $DIR/associated-types-eq-2.rs:115:8
    |
 LL | struct St<'a, T> { v: &'a T }
    |        ^^     -
@@ -349,7 +315,7 @@ LL | impl<'a, T> St<'a, T , T = Qux> {
    |                  +++
 
 error[E0229]: associated item constraints are not allowed here
-  --> $DIR/associated-types-eq-2.rs:119:21
+  --> $DIR/associated-types-eq-2.rs:117:21
    |
 LL | impl<'a, T> St<'a , T = Qux> {
    |                     ^^^^^^^ associated item constraint not allowed here
@@ -359,7 +325,7 @@ help: to use `Qux` as a generic argument specify it directly
 LL | impl<'a, T> St<'a , Qux> {
    |                     ~~~
 
-error: aborting due to 27 previous errors
+error: aborting due to 25 previous errors
 
 Some errors have detailed explanations: E0046, E0107, E0229, E0658.
 For more information about an error, try `rustc --explain E0046`.
diff --git a/tests/ui/async-await/return-type-notation/rtn-in-impl-signature.stderr b/tests/ui/async-await/return-type-notation/rtn-in-impl-signature.stderr
index b07c5735dff..b0c89b05925 100644
--- a/tests/ui/async-await/return-type-notation/rtn-in-impl-signature.stderr
+++ b/tests/ui/async-await/return-type-notation/rtn-in-impl-signature.stderr
@@ -12,6 +12,11 @@ error[E0229]: associated item constraints are not allowed here
    |
 LL | impl Super1<'_, bar(): Send> for () {}
    |                 ^^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: consider removing this associated item binding
+   |
+LL | impl Super1<'_, bar(): Send> for () {}
+   |               ~~~~~~~~~~~~~
 
 error[E0046]: not all trait items implemented, missing: `bar`
   --> $DIR/rtn-in-impl-signature.rs:10:1
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs
index fbf1553c182..c15482f92dc 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.rs
@@ -7,8 +7,7 @@ struct Bar;
 const T: usize = 42;
 
 impl Foo<N = 3> for Bar {
-//~^ ERROR trait takes 1 generic argument but 0 generic arguments were supplied
-//~| ERROR associated item constraints are not allowed here
+//~^ ERROR associated item constraints are not allowed here
 //~| ERROR associated const equality is incomplete
     fn do_x(&self) -> [u8; 3] {
         [0u8; 3]
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
index a132859b412..78cddcc234c 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013-no-kw.stderr
@@ -8,22 +8,6 @@ LL | impl Foo<N = 3> for Bar {
    = help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0107]: trait takes 1 generic argument but 0 generic arguments were supplied
-  --> $DIR/issue-89013-no-kw.rs:9:6
-   |
-LL | impl Foo<N = 3> for Bar {
-   |      ^^^ expected 1 generic argument
-   |
-note: trait defined here, with 1 generic parameter: `N`
-  --> $DIR/issue-89013-no-kw.rs:1:7
-   |
-LL | trait Foo<const N: usize> {
-   |       ^^^ --------------
-help: add missing generic argument
-   |
-LL | impl Foo<N, N = 3> for Bar {
-   |          ++
-
 error[E0229]: associated item constraints are not allowed here
   --> $DIR/issue-89013-no-kw.rs:9:10
    |
@@ -35,7 +19,7 @@ help: to use `3` as a generic argument specify it directly
 LL | impl Foo<3> for Bar {
    |          ~
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0107, E0229, E0658.
-For more information about an error, try `rustc --explain E0107`.
+Some errors have detailed explanations: E0229, E0658.
+For more information about an error, try `rustc --explain E0229`.
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013.rs b/tests/ui/const-generics/parser-error-recovery/issue-89013.rs
index c9c7ff3a170..6302f7f2ad5 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013.rs
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013.rs
@@ -8,7 +8,6 @@ const T: usize = 42;
 
 impl Foo<N = const 3> for Bar {
 //~^ ERROR expected lifetime, type, or constant, found keyword `const`
-//~| ERROR trait takes 1 generic
 //~| ERROR associated item constraints are not allowed here
 //~| ERROR associated const equality is incomplete
     fn do_x(&self) -> [u8; 3] {
diff --git a/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr b/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
index 2fdd1208565..387eb226e70 100644
--- a/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
+++ b/tests/ui/const-generics/parser-error-recovery/issue-89013.stderr
@@ -20,22 +20,6 @@ LL | impl Foo<N = const 3> for Bar {
    = help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0107]: trait takes 1 generic argument but 0 generic arguments were supplied
-  --> $DIR/issue-89013.rs:9:6
-   |
-LL | impl Foo<N = const 3> for Bar {
-   |      ^^^ expected 1 generic argument
-   |
-note: trait defined here, with 1 generic parameter: `N`
-  --> $DIR/issue-89013.rs:1:7
-   |
-LL | trait Foo<const N: usize> {
-   |       ^^^ --------------
-help: add missing generic argument
-   |
-LL | impl Foo<N, N = const 3> for Bar {
-   |          ++
-
 error[E0229]: associated item constraints are not allowed here
   --> $DIR/issue-89013.rs:9:10
    |
@@ -47,7 +31,7 @@ help: to use `3` as a generic argument specify it directly
 LL | impl Foo<3> for Bar {
    |          ~
 
-error: aborting due to 4 previous errors
+error: aborting due to 3 previous errors
 
-Some errors have detailed explanations: E0107, E0229, E0658.
-For more information about an error, try `rustc --explain E0107`.
+Some errors have detailed explanations: E0229, E0658.
+For more information about an error, try `rustc --explain E0229`.
diff --git a/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.rs b/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.rs
new file mode 100644
index 00000000000..3a5b60e5763
--- /dev/null
+++ b/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.rs
@@ -0,0 +1,33 @@
+trait Foo<T> {}
+
+impl Foo<T: Default> for String {}
+//~^ ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+
+impl Foo<T: 'a + Default> for u8 {}
+//~^ ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+//~| ERROR use of undeclared lifetime name `'a`
+//~| HELP consider introducing lifetime `'a` here
+
+impl<T> Foo<T: Default> for u16 {}
+//~^ ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+
+impl<'a> Foo<T: 'a + Default> for u32 {}
+//~^ ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+
+trait Bar<T, K> {}
+
+impl Bar<T: Default, K: Default> for String {}
+//~^ ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+
+impl<T> Bar<T, K: Default> for u8 {}
+//~^ ERROR trait takes 2 generic arguments but 1 generic argument was supplied
+//~| HELP add missing generic argument
+//~| ERROR associated item constraints are not allowed here
+//~| HELP declare the type parameter right after the `impl` keyword
+
+fn main() {}
diff --git a/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.stderr b/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.stderr
new file mode 100644
index 00000000000..dfc6761e17e
--- /dev/null
+++ b/tests/ui/generics/impl-block-params-declared-in-wrong-spot-issue-113073.stderr
@@ -0,0 +1,96 @@
+error[E0261]: use of undeclared lifetime name `'a`
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:7:13
+   |
+LL | impl Foo<T: 'a + Default> for u8 {}
+   |     -       ^^ undeclared lifetime
+   |     |
+   |     help: consider introducing lifetime `'a` here: `<'a>`
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:3:10
+   |
+LL | impl Foo<T: Default> for String {}
+   |          ^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<T: Default> Foo<T> for String {}
+   |     ++++++++++++     ~
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:7:10
+   |
+LL | impl Foo<T: 'a + Default> for u8 {}
+   |          ^^^^^^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<'a, T: 'a + Default> Foo<T> for u8 {}
+   |     +++++++++++++++++++++     ~
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:13:13
+   |
+LL | impl<T> Foo<T: Default> for u16 {}
+   |             ^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<T, T: Default> Foo<T> for u16 {}
+   |       ++++++++++++      ~
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:17:14
+   |
+LL | impl<'a> Foo<T: 'a + Default> for u32 {}
+   |              ^^^^^^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<'a, 'a, T: 'a + Default> Foo<T> for u32 {}
+   |        +++++++++++++++++++++      ~
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:23:10
+   |
+LL | impl Bar<T: Default, K: Default> for String {}
+   |          ^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<T: Default> Bar<T, K: Default> for String {}
+   |     ++++++++++++     ~
+
+error[E0107]: trait takes 2 generic arguments but 1 generic argument was supplied
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:27:9
+   |
+LL | impl<T> Bar<T, K: Default> for u8 {}
+   |         ^^^ - supplied 1 generic argument
+   |         |
+   |         expected 2 generic arguments
+   |
+note: trait defined here, with 2 generic parameters: `T`, `K`
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:21:7
+   |
+LL | trait Bar<T, K> {}
+   |       ^^^ -  -
+help: add missing generic argument
+   |
+LL | impl<T> Bar<T, K, K: Default> for u8 {}
+   |              +++
+
+error[E0229]: associated item constraints are not allowed here
+  --> $DIR/impl-block-params-declared-in-wrong-spot-issue-113073.rs:27:16
+   |
+LL | impl<T> Bar<T, K: Default> for u8 {}
+   |                ^^^^^^^^^^ associated item constraint not allowed here
+   |
+help: declare the type parameter right after the `impl` keyword
+   |
+LL | impl<T, K: Default> Bar<T, K> for u8 {}
+   |       ++++++++++++         ~
+
+error: aborting due to 8 previous errors
+
+Some errors have detailed explanations: E0107, E0229, E0261.
+For more information about an error, try `rustc --explain E0107`.