forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 6
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#128908 - notriddle:notriddle/self-inferred-lifetime-bounds, r=compiler-errors diagnostics: do not warn when a lifetime bound infers itself Fixes rust-lang#119228
- Loading branch information
Showing
12 changed files
with
97 additions
and
6 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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
41 changes: 41 additions & 0 deletions
41
tests/ui/rust-2018/edition-lint-inter-outlives/explicit-outlives-recursive-119228.fixed
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,41 @@ | ||
//@ run-rustfix | ||
//@ check-pass | ||
#![deny(explicit_outlives_requirements)] | ||
|
||
pub trait TypeCx { | ||
type Ty; | ||
} | ||
|
||
pub struct Pat<Cx: TypeCx> { | ||
pub ty: Cx::Ty, | ||
} | ||
|
||
// Simple recursive case: no warning | ||
pub struct MyTypeContextSimpleRecursive<'thir, 'tcx: 'thir> { | ||
pub pat: Pat<MyTypeContextSimpleRecursive<'thir, 'tcx>>, | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextSimpleRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
// Non-recursive case: we want a warning | ||
pub struct MyTypeContextNotRecursive<'thir, 'tcx: 'thir> { | ||
pub tcx: &'tcx (), | ||
pub thir: &'thir (), | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextNotRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
|
||
// Mixed-recursive case: we want a warning | ||
pub struct MyTypeContextMixedRecursive<'thir, 'tcx: 'thir> { | ||
pub pat: Pat<MyTypeContextMixedRecursive<'thir, 'tcx>>, | ||
pub tcx: &'tcx (), | ||
pub thir: &'thir (), | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextMixedRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
fn main() {} |
41 changes: 41 additions & 0 deletions
41
tests/ui/rust-2018/edition-lint-inter-outlives/explicit-outlives-recursive-119228.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,41 @@ | ||
//@ run-rustfix | ||
//@ check-pass | ||
#![deny(explicit_outlives_requirements)] | ||
|
||
pub trait TypeCx { | ||
type Ty; | ||
} | ||
|
||
pub struct Pat<Cx: TypeCx> { | ||
pub ty: Cx::Ty, | ||
} | ||
|
||
// Simple recursive case: no warning | ||
pub struct MyTypeContextSimpleRecursive<'thir, 'tcx: 'thir> { | ||
pub pat: Pat<MyTypeContextSimpleRecursive<'thir, 'tcx>>, | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextSimpleRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
// Non-recursive case: we want a warning | ||
pub struct MyTypeContextNotRecursive<'thir, 'tcx: 'thir> { | ||
pub tcx: &'tcx (), | ||
pub thir: &'thir (), | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextNotRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
|
||
// Mixed-recursive case: we want a warning | ||
pub struct MyTypeContextMixedRecursive<'thir, 'tcx: 'thir> { | ||
pub pat: Pat<MyTypeContextMixedRecursive<'thir, 'tcx>>, | ||
pub tcx: &'tcx (), | ||
pub thir: &'thir (), | ||
} | ||
impl<'thir, 'tcx: 'thir> TypeCx for MyTypeContextMixedRecursive<'thir, 'tcx> { | ||
type Ty = (); | ||
} | ||
|
||
fn main() {} |