Skip to content

Commit 9939de2

Browse files
committed
Correct passing of generic_args to create_substs_for_generic_args
1 parent d232acd commit 9939de2

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/librustc_typeck/astconv.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,14 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
693693
self_ty.is_some(),
694694
self_ty,
695695
// Provide the generic args, and whether types should be inferred.
696-
|_| (Some(generic_args), infer_args),
696+
|did| {
697+
if did == def_id {
698+
(Some(generic_args), infer_args)
699+
} else {
700+
// The last component of this tuple is unimportant.
701+
(None, false)
702+
}
703+
},
697704
// Provide substitutions for parameters for which (valid) arguments have been provided.
698705
|param, arg| match (&param.kind, arg) {
699706
(GenericParamDefKind::Lifetime, GenericArg::Lifetime(lt)) => {

src/librustc_typeck/check/method/confirm.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,14 @@ impl<'a, 'tcx> ConfirmContext<'a, 'tcx> {
314314
false,
315315
None,
316316
// Provide the generic args, and whether types should be inferred.
317-
|_| {
318-
// The last argument of the returned tuple here is unimportant.
319-
if let Some(ref data) = seg.args { (Some(data), false) } else { (None, false) }
317+
|def_id| {
318+
// The last component of the returned tuple here is unimportant.
319+
if def_id == pick.item.def_id {
320+
if let Some(ref data) = seg.args {
321+
return (Some(data), false);
322+
}
323+
}
324+
(None, false)
320325
},
321326
// Provide substitutions for parameters for which (valid) arguments have been provided.
322327
|param, arg| match (&param.kind, arg) {

0 commit comments

Comments
 (0)