forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#126570 - nnethercote:fix-126385, r=lcnr Convert a `span_bug` to a `span_delayed_bug`. PR rust-lang#121208 converted this from a `span_delayed_bug` to a `span_bug` because nothing in the test suite caused execution to hit this path. But now fuzzing has found a test case that does hit it. So this commit converts it back to `span_delayed_bug` and adds the relevant test. Fixes rust-lang#126385. r? `@lcnr`
- Loading branch information
Showing
4 changed files
with
49 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
14 changes: 14 additions & 0 deletions
14
tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
// This test was triggering a `span_bug` crash, which was then fixed by | ||
// downgrading it to a `span_delayed_bug`. | ||
|
||
pub struct MyStruct<'field> { | ||
field: &'field [u32], | ||
} | ||
|
||
impl MyStruct<'_> { | ||
pub fn f(field: &[u32]) -> Self<u32> { //~ ERROR type arguments are not allowed on self type | ||
Self { field } //~ ERROR lifetime may not live long enough | ||
} | ||
} | ||
|
||
fn main() {} |
34 changes: 34 additions & 0 deletions
34
tests/ui/borrowck/unmatched-arg-and-hir-arg-issue-126385.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
error[E0109]: type arguments are not allowed on self type | ||
--> $DIR/unmatched-arg-and-hir-arg-issue-126385.rs:9:37 | ||
| | ||
LL | pub fn f(field: &[u32]) -> Self<u32> { | ||
| ---- ^^^ type argument not allowed | ||
| | | ||
| not allowed on self type | ||
| | ||
note: `Self` is of type `MyStruct<'_>` | ||
--> $DIR/unmatched-arg-and-hir-arg-issue-126385.rs:4:12 | ||
| | ||
LL | pub struct MyStruct<'field> { | ||
| ^^^^^^^^ `Self` corresponds to this type | ||
... | ||
LL | impl MyStruct<'_> { | ||
| ----------------- `Self` is on type `MyStruct` in this `impl` | ||
help: the `Self` type doesn't accept type parameters, use the concrete type's name `MyStruct` instead if you want to specify its type parameters | ||
| | ||
LL | pub fn f(field: &[u32]) -> MyStruct<u32> { | ||
| ~~~~~~~~ | ||
|
||
error: lifetime may not live long enough | ||
--> $DIR/unmatched-arg-and-hir-arg-issue-126385.rs:10:9 | ||
| | ||
LL | pub fn f(field: &[u32]) -> Self<u32> { | ||
| - --------- return type is MyStruct<'2> | ||
| | | ||
| let's call the lifetime of this reference `'1` | ||
LL | Self { field } | ||
| ^^^^^^^^^^^^^^ associated function was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1` | ||
|
||
error: aborting due to 2 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0109`. |