aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty.rs')
-rw-r--r--crates/ra_hir/src/ty.rs15
1 files changed, 10 insertions, 5 deletions
diff --git a/crates/ra_hir/src/ty.rs b/crates/ra_hir/src/ty.rs
index f28a7e731..db0a20514 100644
--- a/crates/ra_hir/src/ty.rs
+++ b/crates/ra_hir/src/ty.rs
@@ -421,7 +421,8 @@ impl Ty {
421 (var.parent_enum(db).generic_params(db), segment) 421 (var.parent_enum(db).generic_params(db), segment)
422 } 422 }
423 }; 423 };
424 // substs_from_path 424 let parent_param_count = def_generics.count_parent_params();
425 substs.extend((0..parent_param_count).map(|_| Ty::Unknown));
425 if let Some(generic_args) = &segment.args_and_bindings { 426 if let Some(generic_args) = &segment.args_and_bindings {
426 // if args are provided, it should be all of them, but we can't rely on that 427 // if args are provided, it should be all of them, but we can't rely on that
427 let param_count = def_generics.params.len(); 428 let param_count = def_generics.params.len();
@@ -436,9 +437,8 @@ impl Ty {
436 } 437 }
437 // add placeholders for args that were not provided 438 // add placeholders for args that were not provided
438 // TODO: handle defaults 439 // TODO: handle defaults
439 let supplied_params = 440 let supplied_params = substs.len();
440 segment.args_and_bindings.as_ref().map(|ga| ga.args.len()).unwrap_or(0); 441 for _ in supplied_params..def_generics.count_params_including_parent() {
441 for _ in supplied_params..def_generics.params.len() {
442 substs.push(Ty::Unknown); 442 substs.push(Ty::Unknown);
443 } 443 }
444 assert_eq!(substs.len(), def_generics.params.len()); 444 assert_eq!(substs.len(), def_generics.params.len());
@@ -666,7 +666,12 @@ fn type_for_fn(db: &impl HirDatabase, def: Function) -> Ty {
666} 666}
667 667
668fn make_substs(generics: &GenericParams) -> Substs { 668fn make_substs(generics: &GenericParams) -> Substs {
669 Substs(generics.params.iter().map(|_p| Ty::Unknown).collect::<Vec<_>>().into()) 669 Substs(
670 (0..generics.count_params_including_parent())
671 .map(|_p| Ty::Unknown)
672 .collect::<Vec<_>>()
673 .into(),
674 )
670} 675}
671 676
672fn type_for_struct(db: &impl HirDatabase, s: Struct) -> Ty { 677fn type_for_struct(db: &impl HirDatabase, s: Struct) -> Ty {