-
Couldn't load subscription status.
- Fork 183
Open
Labels
C-chalk-recursiveIssues related to the chalk-recursive crateIssues related to the chalk-recursive crate
Description
In rust-lang/rust-analyzer#9990 we've found this failing test:
test!(
program {
#[upstream] #[non_enumerable] #[lang(sized)]
trait Sized {}
#[non_enumerable] #[object_safe]
trait Database {}
#[non_enumerable]
trait QueryGroup
where
Self: Sized,
{
type DynDb: Database + HasQueryGroup<Self>;
}
#[non_enumerable] #[object_safe]
trait HasQueryGroup<G>
where
Self: Database,
G: QueryGroup,
G: Sized,
{ }
#[non_enumerable] #[object_safe]
trait HelloWorld
where
Self: HasQueryGroup<HelloWorldStorage>,
{ }
struct HelloWorldStorage {}
impl QueryGroup for HelloWorldStorage {
type DynDb = dyn HelloWorld + 'static;
}
impl<DB> HelloWorld for DB
where
DB: Database,
DB: HasQueryGroup<HelloWorldStorage>,
DB: Sized,
{ }
}
goal {
forall<T> {
if (FromEnv(T: Database); FromEnv(T: HasQueryGroup<HelloWorldStorage>); FromEnv(T: Sized)) {
T: HelloWorld
}
}
} yields[SolverChoice::slg_default()] { // ok
"Unique"
} yields[SolverChoice::recursive_default()] { // fails: "Ambiguous; no inference guidance"
"Unique"
}
);Removing DB: Database bound and FromEnv(T: Database) makes the test pass.
Metadata
Metadata
Assignees
Labels
C-chalk-recursiveIssues related to the chalk-recursive crateIssues related to the chalk-recursive crate