forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
287c77e
commit 7079adb
Showing
4 changed files
with
97 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
// Related to Bevy regression #118553 | ||
|
||
pub trait WorldQuery {} | ||
impl WorldQuery for &u8 {} | ||
|
||
pub struct Query<Q: WorldQuery>(Q); | ||
|
||
pub trait SystemParam { | ||
type State; | ||
} | ||
impl<Q: WorldQuery + 'static> SystemParam for Query<Q> { | ||
type State = (); | ||
// `Q: 'static` is required because we need the TypeId of Q ... | ||
} | ||
|
||
pub struct ParamSet<T: SystemParam>(T) | ||
where | ||
T::State: Sized; |
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,11 @@ | ||
// aux-crate:bevy_ecs=bevy_ecs.rs | ||
// check-pass | ||
// Related to Bevy regression #118553 | ||
|
||
extern crate bevy_ecs; | ||
|
||
use bevy_ecs::*; | ||
|
||
fn handler<'a>(_: ParamSet<Query<&'a u8>>) {} | ||
|
||
fn main() {} |
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,31 @@ | ||
// check-pass | ||
// Related to Bevy regression #118553 | ||
|
||
pub trait QueryBase { | ||
type Db; | ||
} | ||
|
||
pub trait AsyncQueryFunction<'f>: // 'f is important | ||
QueryBase<Db = <Self as AsyncQueryFunction<'f>>::SendDb> // bound is important | ||
{ | ||
type SendDb; | ||
} | ||
|
||
pub struct QueryTable<'me, Q, DB> { | ||
_q: Option<Q>, | ||
_db: Option<DB>, | ||
_marker: Option<&'me ()>, | ||
} | ||
|
||
impl<'me, Q> QueryTable<'me, Q, <Q as QueryBase>::Db> | ||
// projection is important | ||
// ^^^ removing 'me (and in QueryTable) gives a different error | ||
where | ||
Q: for<'f> AsyncQueryFunction<'f>, | ||
{ | ||
pub fn get_async<'a>(&'a mut self) { | ||
panic!(); | ||
} | ||
} | ||
|
||
fn main() {} |
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,37 @@ | ||
// check-pass | ||
// Related to crater regressions on #118553 | ||
|
||
pub trait Debug {} | ||
|
||
pub trait Service { | ||
type Input; | ||
type Output; | ||
type Error; | ||
} | ||
|
||
pub struct ServiceChain<P, S> { | ||
prev: P, | ||
service: S, | ||
} | ||
impl<P: Service, S: Service<Input = P::Output>> Service for ServiceChain<P, S> | ||
where | ||
P::Error: 'static, | ||
S::Error: 'static, | ||
{ | ||
type Input = P::Input; | ||
type Output = S::Output; | ||
type Error = (); | ||
} | ||
|
||
pub struct ServiceChainBuilder<P: Service, S: Service<Input = P::Output>> { | ||
chain: ServiceChain<P, S>, | ||
} | ||
impl<P: Service, S: Service<Input = P::Output>> ServiceChainBuilder<P, S> { | ||
pub fn next<NS: Service<Input = S::Output>>( | ||
self, | ||
) -> ServiceChainBuilder<ServiceChain<P, S>, NS> { | ||
panic!(); | ||
} | ||
} | ||
|
||
fn main() {} |