aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty')
-rw-r--r--crates/ra_hir/src/ty/lower.rs4
-rw-r--r--crates/ra_hir/src/ty/tests.rs24
2 files changed, 25 insertions, 3 deletions
diff --git a/crates/ra_hir/src/ty/lower.rs b/crates/ra_hir/src/ty/lower.rs
index de3c56097..03db38605 100644
--- a/crates/ra_hir/src/ty/lower.rs
+++ b/crates/ra_hir/src/ty/lower.rs
@@ -611,9 +611,7 @@ pub(crate) fn generic_defaults_query(db: &impl HirDatabase, def: GenericDef) ->
611 let defaults = generic_params 611 let defaults = generic_params
612 .params_including_parent() 612 .params_including_parent()
613 .into_iter() 613 .into_iter()
614 .map(|p| { 614 .map(|p| p.default.as_ref().map_or(Ty::Unknown, |t| Ty::from_hir(db, &resolver, t)))
615 p.default.as_ref().map_or(Ty::Unknown, |path| Ty::from_hir_path(db, &resolver, path))
616 })
617 .collect(); 615 .collect();
618 616
619 Substs(defaults) 617 Substs(defaults)
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index c1024d03c..abfaffb5e 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -1980,6 +1980,30 @@ fn test() {
1980} 1980}
1981 1981
1982#[test] 1982#[test]
1983fn infer_associated_method_generics_with_default_tuple_param() {
1984 let t = type_at(
1985 r#"
1986//- /main.rs
1987struct Gen<T=()> {
1988 val: T
1989}
1990
1991impl<T> Gen<T> {
1992 pub fn make() -> Gen<T> {
1993 loop { }
1994 }
1995}
1996
1997fn test() {
1998 let a = Gen::make();
1999 a.val<|>;
2000}
2001"#,
2002 );
2003 assert_eq!(t, "()");
2004}
2005
2006#[test]
1983fn infer_associated_method_generics_without_args() { 2007fn infer_associated_method_generics_without_args() {
1984 assert_snapshot!( 2008 assert_snapshot!(
1985 infer(r#" 2009 infer(r#"