From fc055281a5c1c81a6df0e4c10cde71e4799bd329 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 12 Nov 2019 11:48:34 +0300 Subject: Minor cleanup --- crates/ra_hir/src/code_model.rs | 10 +++--- crates/ra_hir/src/db.rs | 12 +++---- crates/ra_hir/src/expr.rs | 61 ++++++++++++++++++------------------ crates/ra_hir/src/expr/scope.rs | 2 +- crates/ra_hir/src/ty/traits/chalk.rs | 2 +- 5 files changed, 42 insertions(+), 45 deletions(-) (limited to 'crates/ra_hir/src') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 5a0bd0c19..2fd4ccb10 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -550,7 +550,7 @@ where } fn body(self, db: &impl HirDatabase) -> Arc { - db.body_hir(self.into()) + db.body(self.into()) } fn body_source_map(self, db: &impl HirDatabase) -> Arc { @@ -564,7 +564,7 @@ impl HasBody for DefWithBody { } fn body(self, db: &impl HirDatabase) -> Arc { - db.body_hir(self) + db.body(self) } fn body_source_map(self, db: &impl HirDatabase) -> Arc { @@ -666,7 +666,7 @@ impl Function { } pub fn body(self, db: &impl HirDatabase) -> Arc { - db.body_hir(self.into()) + db.body(self.into()) } pub fn ty(self, db: &impl HirDatabase) -> Ty { @@ -1079,7 +1079,7 @@ pub struct Local { impl Local { pub fn name(self, db: &impl HirDatabase) -> Option { - let body = db.body_hir(self.parent); + let body = db.body(self.parent); match &body[self.pat_id] { Pat::Bind { name, .. } => Some(name.clone()), _ => None, @@ -1091,7 +1091,7 @@ impl Local { } pub fn is_mut(self, db: &impl HirDatabase) -> bool { - let body = db.body_hir(self.parent); + let body = db.body(self.parent); match &body[self.pat_id] { Pat::Bind { mode, .. } => match mode { BindingAnnotation::Mutable | BindingAnnotation::RefMut => true, diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index 75c322c99..abf4ae402 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs @@ -8,6 +8,7 @@ use ra_syntax::SmolStr; use crate::{ debug::HirDebugDatabase, + expr::{Body, BodySourceMap}, generics::{GenericDef, GenericParams}, ids, impl_block::{ImplBlock, ImplSourceMap, ModuleImplBlocks}, @@ -112,14 +113,11 @@ pub trait HirDatabase: DefDatabase + AstDatabase { #[salsa::invoke(crate::ty::generic_defaults_query)] fn generic_defaults(&self, def: GenericDef) -> Substs; - #[salsa::invoke(crate::expr::body_with_source_map_query)] - fn body_with_source_map( - &self, - def: DefWithBody, - ) -> (Arc, Arc); + #[salsa::invoke(Body::body_with_source_map_query)] + fn body_with_source_map(&self, def: DefWithBody) -> (Arc, Arc); - #[salsa::invoke(crate::expr::body_hir_query)] - fn body_hir(&self, def: DefWithBody) -> Arc; + #[salsa::invoke(Body::body_query)] + fn body(&self, def: DefWithBody) -> Arc; #[salsa::invoke(crate::ty::method_resolution::CrateImplBlocks::impls_in_crate_query)] fn impls_in_crate(&self, krate: Crate) -> Arc; diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs index 6e23197a4..53da7f0bf 100644 --- a/crates/ra_hir/src/expr.rs +++ b/crates/ra_hir/src/expr.rs @@ -75,6 +75,36 @@ pub struct BodySourceMap { } impl Body { + pub(crate) fn body_with_source_map_query( + db: &impl HirDatabase, + def: DefWithBody, + ) -> (Arc, Arc) { + let mut params = None; + + let (file_id, body) = match def { + DefWithBody::Function(f) => { + let src = f.source(db); + params = src.ast.param_list(); + (src.file_id, src.ast.body().map(ast::Expr::from)) + } + DefWithBody::Const(c) => { + let src = c.source(db); + (src.file_id, src.ast.body()) + } + DefWithBody::Static(s) => { + let src = s.source(db); + (src.file_id, src.ast.body()) + } + }; + + let (body, source_map) = lower::lower(db, def.resolver(db), file_id, def, params, body); + (Arc::new(body), Arc::new(source_map)) + } + + pub(crate) fn body_query(db: &impl HirDatabase, def: DefWithBody) -> Arc { + db.body_with_source_map(def).0 + } + pub fn params(&self) -> &[PatId] { &self.params } @@ -542,34 +572,3 @@ impl Pat { } } } - -// Queries -pub(crate) fn body_with_source_map_query( - db: &impl HirDatabase, - def: DefWithBody, -) -> (Arc, Arc) { - let mut params = None; - - let (file_id, body) = match def { - DefWithBody::Function(f) => { - let src = f.source(db); - params = src.ast.param_list(); - (src.file_id, src.ast.body().map(ast::Expr::from)) - } - DefWithBody::Const(c) => { - let src = c.source(db); - (src.file_id, src.ast.body()) - } - DefWithBody::Static(s) => { - let src = s.source(db); - (src.file_id, src.ast.body()) - } - }; - - let (body, source_map) = lower::lower(db, def.resolver(db), file_id, def, params, body); - (Arc::new(body), Arc::new(source_map)) -} - -pub(crate) fn body_hir_query(db: &impl HirDatabase, def: DefWithBody) -> Arc { - db.body_with_source_map(def).0 -} diff --git a/crates/ra_hir/src/expr/scope.rs b/crates/ra_hir/src/expr/scope.rs index daf8d8d07..0e49a28d6 100644 --- a/crates/ra_hir/src/expr/scope.rs +++ b/crates/ra_hir/src/expr/scope.rs @@ -46,7 +46,7 @@ pub(crate) struct ScopeData { impl ExprScopes { pub(crate) fn expr_scopes_query(db: &impl HirDatabase, def: DefWithBody) -> Arc { - let body = db.body_hir(def); + let body = db.body(def); let res = ExprScopes::new(body); Arc::new(res) } diff --git a/crates/ra_hir/src/ty/traits/chalk.rs b/crates/ra_hir/src/ty/traits/chalk.rs index 14c54b9fb..de322dd52 100644 --- a/crates/ra_hir/src/ty/traits/chalk.rs +++ b/crates/ra_hir/src/ty/traits/chalk.rs @@ -714,7 +714,7 @@ fn closure_fn_trait_impl_datum( let fn_once_trait = get_fn_trait(db, krate, super::FnTrait::FnOnce)?; let trait_ = get_fn_trait(db, krate, data.fn_trait)?; // get corresponding fn trait - let num_args: u16 = match &db.body_hir(data.def)[data.expr] { + let num_args: u16 = match &db.body(data.def)[data.expr] { crate::expr::Expr::Lambda { args, .. } => args.len() as u16, _ => { log::warn!("closure for closure type {:?} not found", data); -- cgit v1.2.3