diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-05-06 23:28:35 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2021-05-06 23:28:35 +0100 |
commit | a8da2ca3a189a3f9a422c38d0a26298dc0a9ce6f (patch) | |
tree | 9a5af005c063062dc7b5ff27c9729830626be73d /crates/ide/src | |
parent | 0ee945e289c438e87d4701401059e8c407710e7b (diff) | |
parent | d97a4b8e49df118a13a122225474bcbd011c0ea1 (diff) |
Merge #8745
8745: Support goto_type_definition for types r=matklad a=Veykril
I'm unsure if the approach of lowering an `ast::Type` to a `hir::Type` is a good idea, it seems fine to me at least.
Fixes #2882
Co-authored-by: Lukas Tobias Wirth <[email protected]>
Diffstat (limited to 'crates/ide/src')
-rw-r--r-- | crates/ide/src/goto_type_definition.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ide/src/goto_type_definition.rs b/crates/ide/src/goto_type_definition.rs index 9d34b109b..f3284bb96 100644 --- a/crates/ide/src/goto_type_definition.rs +++ b/crates/ide/src/goto_type_definition.rs | |||
@@ -30,6 +30,7 @@ pub(crate) fn goto_type_definition( | |||
30 | ast::Expr(it) => sema.type_of_expr(&it)?, | 30 | ast::Expr(it) => sema.type_of_expr(&it)?, |
31 | ast::Pat(it) => sema.type_of_pat(&it)?, | 31 | ast::Pat(it) => sema.type_of_pat(&it)?, |
32 | ast::SelfParam(it) => sema.type_of_self(&it)?, | 32 | ast::SelfParam(it) => sema.type_of_self(&it)?, |
33 | ast::Type(it) => sema.resolve_type(&it)?, | ||
33 | _ => return None, | 34 | _ => return None, |
34 | } | 35 | } |
35 | }; | 36 | }; |
@@ -149,4 +150,15 @@ impl Foo { | |||
149 | "#, | 150 | "#, |
150 | ) | 151 | ) |
151 | } | 152 | } |
153 | |||
154 | #[test] | ||
155 | fn goto_def_for_type_fallback() { | ||
156 | check( | ||
157 | r#" | ||
158 | struct Foo; | ||
159 | //^^^ | ||
160 | impl Foo$0 {} | ||
161 | "#, | ||
162 | ) | ||
163 | } | ||
152 | } | 164 | } |