aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/ty/tests.rs')
-rw-r--r--crates/ra_hir/src/ty/tests.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/ra_hir/src/ty/tests.rs b/crates/ra_hir/src/ty/tests.rs
index 594e82af2..7340bb9bd 100644
--- a/crates/ra_hir/src/ty/tests.rs
+++ b/crates/ra_hir/src/ty/tests.rs
@@ -3010,6 +3010,25 @@ fn test<T>(t: T) { t.foo()<|>; }
3010 assert_eq!(t, "{unknown}"); 3010 assert_eq!(t, "{unknown}");
3011} 3011}
3012 3012
3013#[test]
3014fn generic_param_env_deref() {
3015 let t = type_at(
3016 r#"
3017//- /main.rs
3018#[lang = "deref"]
3019trait Deref {
3020 type Target;
3021}
3022trait Trait {}
3023impl<T> Deref for T where T: Trait {
3024 type Target = i128;
3025}
3026fn test<T: Trait>(t: T) { (*t)<|>; }
3027"#,
3028 );
3029 assert_eq!(t, "i128");
3030}
3031
3013fn type_at_pos(db: &MockDatabase, pos: FilePosition) -> String { 3032fn type_at_pos(db: &MockDatabase, pos: FilePosition) -> String {
3014 let file = db.parse(pos.file_id).ok().unwrap(); 3033 let file = db.parse(pos.file_id).ok().unwrap();
3015 let expr = algo::find_node_at_offset::<ast::Expr>(file.syntax(), pos.offset).unwrap(); 3034 let expr = algo::find_node_at_offset::<ast::Expr>(file.syntax(), pos.offset).unwrap();