mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Support goto_type_definition for types
This commit is contained in:
parent
5b663f1b07
commit
d97a4b8e49
2 changed files with 24 additions and 0 deletions
|
@ -196,6 +196,10 @@ impl<'db, DB: HirDatabase> Semantics<'db, DB> {
|
|||
self.imp.resolve_label(lifetime)
|
||||
}
|
||||
|
||||
pub fn resolve_type(&self, ty: &ast::Type) -> Option<Type> {
|
||||
self.imp.resolve_type(ty)
|
||||
}
|
||||
|
||||
pub fn type_of_expr(&self, expr: &ast::Expr) -> Option<Type> {
|
||||
self.imp.type_of_expr(expr)
|
||||
}
|
||||
|
@ -476,6 +480,14 @@ impl<'db> SemanticsImpl<'db> {
|
|||
ToDef::to_def(self, src)
|
||||
}
|
||||
|
||||
fn resolve_type(&self, ty: &ast::Type) -> Option<Type> {
|
||||
let scope = self.scope(ty.syntax());
|
||||
let ctx = body::LowerCtx::new(self.db.upcast(), scope.file_id);
|
||||
let ty = hir_ty::TyLoweringContext::new(self.db, &scope.resolver)
|
||||
.lower_ty(&crate::TypeRef::from_ast(&ctx, ty.clone()));
|
||||
Type::new_with_resolver(self.db, &scope.resolver, ty)
|
||||
}
|
||||
|
||||
fn type_of_expr(&self, expr: &ast::Expr) -> Option<Type> {
|
||||
self.analyze(expr.syntax()).type_of_expr(self.db, expr)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue