rustc_typeck: correctly compute Substs for Res::SelfCtor.
This commit is contained in:
parent
374c63e0fc
commit
dedf2eda8f
7 changed files with 109 additions and 53 deletions
|
|
@ -3,6 +3,7 @@ pub struct Gcm<E>(E);
|
|||
impl<E> Gcm<E> {
|
||||
pub fn crash(e: E) -> Self {
|
||||
Self::<E>(e)
|
||||
//~^ ERROR type arguments are not allowed for this type
|
||||
}
|
||||
}
|
||||
|
||||
9
src/test/ui/issues/issue-57924.stderr
Normal file
9
src/test/ui/issues/issue-57924.stderr
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
error[E0109]: type arguments are not allowed for this type
|
||||
--> $DIR/issue-57924.rs:5:16
|
||||
|
|
||||
LL | Self::<E>(e)
|
||||
| ^ type argument not allowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0109`.
|
||||
11
src/test/ui/issues/issue-61882-2.rs
Normal file
11
src/test/ui/issues/issue-61882-2.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
struct A<T>(T);
|
||||
|
||||
impl A<&'static u8> {
|
||||
fn f() {
|
||||
let x = 0;
|
||||
Self(&x);
|
||||
//~^ ERROR `x` does not live long enough
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
15
src/test/ui/issues/issue-61882-2.stderr
Normal file
15
src/test/ui/issues/issue-61882-2.stderr
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
error[E0597]: `x` does not live long enough
|
||||
--> $DIR/issue-61882-2.rs:6:14
|
||||
|
|
||||
LL | Self(&x);
|
||||
| ^^
|
||||
| |
|
||||
| borrowed value does not live long enough
|
||||
| requires that `x` is borrowed for `'static`
|
||||
LL |
|
||||
LL | }
|
||||
| - `x` dropped here while still borrowed
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0597`.
|
||||
9
src/test/ui/issues/issue-61882.rs
Normal file
9
src/test/ui/issues/issue-61882.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
struct A<T>(T);
|
||||
|
||||
impl A<bool> {
|
||||
const B: A<u8> = Self(0);
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR mismatched types
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
21
src/test/ui/issues/issue-61882.stderr
Normal file
21
src/test/ui/issues/issue-61882.stderr
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-61882.rs:4:27
|
||||
|
|
||||
LL | const B: A<u8> = Self(0);
|
||||
| ^ expected bool, found integer
|
||||
|
|
||||
= note: expected type `bool`
|
||||
found type `{integer}`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-61882.rs:4:22
|
||||
|
|
||||
LL | const B: A<u8> = Self(0);
|
||||
| ^^^^^^^ expected u8, found bool
|
||||
|
|
||||
= note: expected type `A<u8>`
|
||||
found type `A<bool>`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue