mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-13 04:26:48 +00:00
review comments: account for generics
This commit is contained in:
parent
147c9bf4d5
commit
c6f322bf30
@ -2147,8 +2147,12 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
||||
.is_accessible_from(self.item_def_id(), tcx)
|
||||
&& tcx.all_impls(*trait_def_id)
|
||||
.any(|impl_def_id| {
|
||||
let trait_ref = tcx.impl_trait_ref(impl_def_id);
|
||||
trait_ref.map_or(false, |impl_| {
|
||||
let trait_ref = tcx.bound_impl_trait_ref(impl_def_id);
|
||||
trait_ref.map_or(false, |trait_ref| {
|
||||
let impl_ = trait_ref.subst(
|
||||
tcx,
|
||||
infcx.fresh_substs_for_item(span, impl_def_id),
|
||||
);
|
||||
infcx
|
||||
.can_eq(
|
||||
param_env,
|
||||
|
@ -0,0 +1,14 @@
|
||||
// run-rustfix
|
||||
trait Trait<A> {}
|
||||
|
||||
trait Assoc {
|
||||
type Ty;
|
||||
}
|
||||
|
||||
impl<A> Assoc for dyn Trait<A> {
|
||||
type Ty = i32;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _x: <dyn Trait<i32> as Assoc>::Ty; //~ ERROR ambiguous associated type
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
// run-rustfix
|
||||
trait Trait<A> {}
|
||||
|
||||
trait Assoc {
|
||||
type Ty;
|
||||
}
|
||||
|
||||
impl<A> Assoc for dyn Trait<A> {
|
||||
type Ty = i32;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let _x: <dyn Trait<i32>>::Ty; //~ ERROR ambiguous associated type
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
error[E0223]: ambiguous associated type
|
||||
--> $DIR/ambiguous-associated-type-with-generics.rs:13:13
|
||||
|
|
||||
LL | let _x: <dyn Trait<i32>>::Ty;
|
||||
| ^^^^^^^^^^^^^^^^^^^^ help: use the fully-qualified path: `<dyn Trait<i32> as Assoc>::Ty`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0223`.
|
@ -147,12 +147,7 @@ error[E0223]: ambiguous associated type
|
||||
--> $DIR/bad-assoc-ty.rs:33:10
|
||||
|
|
||||
LL | type H = Fn(u8) -> (u8)::Output;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
help: if there were a trait named `Example` with associated type `Output` implemented for `(dyn Fn(u8) -> u8 + 'static)`, you could use the fully-qualified path
|
||||
|
|
||||
LL | type H = <(dyn Fn(u8) -> u8 + 'static) as Example>::Output;
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: use the fully-qualified path: `<(dyn Fn(u8) -> u8 + 'static) as IntoFuture>::Output`
|
||||
|
||||
error[E0223]: ambiguous associated type
|
||||
--> $DIR/bad-assoc-ty.rs:39:19
|
||||
|
Loading…
Reference in New Issue
Block a user