fix a ICE #102768
This commit is contained in:
parent
5854680388
commit
fa767868df
@ -493,8 +493,10 @@ pub(super) fn type_of(tcx: TyCtxt<'_>, def_id: DefId) -> Ty<'_> {
|
|||||||
},
|
},
|
||||||
def_id.to_def_id(),
|
def_id.to_def_id(),
|
||||||
);
|
);
|
||||||
if let Some(assoc_item) = assoc_item {
|
if let Some(param)
|
||||||
tcx.type_of(tcx.generics_of(assoc_item.def_id).params[idx].def_id)
|
= assoc_item.map(|item| &tcx.generics_of(item.def_id).params[idx]).filter(|param| param.kind.is_ty_or_const())
|
||||||
|
{
|
||||||
|
tcx.type_of(param.def_id)
|
||||||
} else {
|
} else {
|
||||||
// FIXME(associated_const_equality): add a useful error message here.
|
// FIXME(associated_const_equality): add a useful error message here.
|
||||||
tcx.ty_error_with_message(
|
tcx.ty_error_with_message(
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
#![feature(generic_const_exprs)]
|
||||||
|
#![allow(incomplete_features)]
|
||||||
|
|
||||||
|
trait X {
|
||||||
|
type Y<'a>;
|
||||||
|
}
|
||||||
|
|
||||||
|
const _: () = {
|
||||||
|
fn f2<'a>(arg: Box<dyn X<Y<1> = &'a ()>>) {}
|
||||||
|
//~^ ERROR this associated type takes 1 lifetime argument but 0 lifetime arguments
|
||||||
|
//~| ERROR this associated type takes 0 generic arguments but 1 generic argument
|
||||||
|
};
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,33 @@
|
|||||||
|
error[E0107]: this associated type takes 1 lifetime argument but 0 lifetime arguments were supplied
|
||||||
|
--> $DIR/issue-102768.rs:9:30
|
||||||
|
|
|
||||||
|
LL | fn f2<'a>(arg: Box<dyn X<Y<1> = &'a ()>>) {}
|
||||||
|
| ^ expected 1 lifetime argument
|
||||||
|
|
|
||||||
|
note: associated type defined here, with 1 lifetime parameter: `'a`
|
||||||
|
--> $DIR/issue-102768.rs:5:10
|
||||||
|
|
|
||||||
|
LL | type Y<'a>;
|
||||||
|
| ^ --
|
||||||
|
help: add missing lifetime argument
|
||||||
|
|
|
||||||
|
LL | fn f2<'a>(arg: Box<dyn X<Y<'a, 1> = &'a ()>>) {}
|
||||||
|
| +++
|
||||||
|
|
||||||
|
error[E0107]: this associated type takes 0 generic arguments but 1 generic argument was supplied
|
||||||
|
--> $DIR/issue-102768.rs:9:30
|
||||||
|
|
|
||||||
|
LL | fn f2<'a>(arg: Box<dyn X<Y<1> = &'a ()>>) {}
|
||||||
|
| ^--- help: remove these generics
|
||||||
|
| |
|
||||||
|
| expected 0 generic arguments
|
||||||
|
|
|
||||||
|
note: associated type defined here, with 0 generic parameters
|
||||||
|
--> $DIR/issue-102768.rs:5:10
|
||||||
|
|
|
||||||
|
LL | type Y<'a>;
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0107`.
|
Loading…
Reference in New Issue
Block a user