From 78f3b0627cf4a5d34aaf63c7b5a2e1b744a11b14 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 22 Nov 2019 17:10:51 +0300 Subject: Move FunctionData to hir_def --- crates/ra_hir/src/ty/infer.rs | 13 +++++++------ crates/ra_hir/src/ty/lower.rs | 6 +++--- crates/ra_hir/src/ty/method_resolution.rs | 6 +++--- 3 files changed, 13 insertions(+), 12 deletions(-) (limited to 'crates/ra_hir/src/ty') diff --git a/crates/ra_hir/src/ty/infer.rs b/crates/ra_hir/src/ty/infer.rs index 69b13baef..41a51283d 100644 --- a/crates/ra_hir/src/ty/infer.rs +++ b/crates/ra_hir/src/ty/infer.rs @@ -22,6 +22,7 @@ use ena::unify::{InPlaceUnificationTable, NoError, UnifyKey, UnifyValue}; use rustc_hash::FxHashMap; use hir_def::{ + function::FunctionData, path::known, resolver::{HasResolver, Resolver, TypeNs}, type_ref::{Mutability, TypeRef}, @@ -43,8 +44,8 @@ use crate::{ db::HirDatabase, expr::{BindingAnnotation, Body, ExprId, PatId}, ty::infer::diagnostics::InferenceDiagnostic, - Adt, AssocItem, ConstData, DefWithBody, FloatTy, FnData, Function, HasBody, IntTy, Path, - StructField, Trait, VariantDef, + Adt, AssocItem, ConstData, DefWithBody, FloatTy, Function, HasBody, IntTy, Path, StructField, + Trait, VariantDef, }; macro_rules! ty_app { @@ -70,7 +71,7 @@ pub fn infer_query(db: &impl HirDatabase, def: DefWithBody) -> Arc ctx.collect_const(&c.data(db)), - DefWithBody::Function(ref f) => ctx.collect_fn(&f.data(db)), + DefWithBody::Function(ref f) => ctx.collect_fn(&db.function_data(f.id)), DefWithBody::Static(ref s) => ctx.collect_const(&s.data(db)), } @@ -562,14 +563,14 @@ impl<'a, D: HirDatabase> InferenceContext<'a, D> { self.return_ty = self.make_ty(data.type_ref()); } - fn collect_fn(&mut self, data: &FnData) { + fn collect_fn(&mut self, data: &FunctionData) { let body = Arc::clone(&self.body); // avoid borrow checker problem - for (type_ref, pat) in data.params().iter().zip(body.params()) { + for (type_ref, pat) in data.params.iter().zip(body.params()) { let ty = self.make_ty(type_ref); self.infer_pat(*pat, &ty, BindingMode::default()); } - self.return_ty = self.make_ty(data.ret_type()); + self.return_ty = self.make_ty(&data.ret_type); } fn infer_body(&mut self) { diff --git a/crates/ra_hir/src/ty/lower.rs b/crates/ra_hir/src/ty/lower.rs index 75c552569..42daa9cb9 100644 --- a/crates/ra_hir/src/ty/lower.rs +++ b/crates/ra_hir/src/ty/lower.rs @@ -622,10 +622,10 @@ pub(crate) fn generic_defaults_query(db: &impl HirDatabase, def: GenericDef) -> } fn fn_sig_for_fn(db: &impl HirDatabase, def: Function) -> FnSig { - let data = def.data(db); + let data = db.function_data(def.id); let resolver = def.id.resolver(db); - let params = data.params().iter().map(|tr| Ty::from_hir(db, &resolver, tr)).collect::>(); - let ret = Ty::from_hir(db, &resolver, data.ret_type()); + let params = data.params.iter().map(|tr| Ty::from_hir(db, &resolver, tr)).collect::>(); + let ret = Ty::from_hir(db, &resolver, &data.ret_type); FnSig::from_params_and_return(params, ret) } diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs index 64adb814d..f84aae26e 100644 --- a/crates/ra_hir/src/ty/method_resolution.rs +++ b/crates/ra_hir/src/ty/method_resolution.rs @@ -291,9 +291,9 @@ fn is_valid_candidate( ) -> bool { match item { AssocItem::Function(m) => { - let data = m.data(db); - name.map_or(true, |name| data.name() == name) - && (data.has_self_param() || mode == LookupMode::Path) + let data = db.function_data(m.id); + name.map_or(true, |name| data.name == *name) + && (data.has_self_param || mode == LookupMode::Path) } AssocItem::Const(c) => { name.map_or(true, |name| Some(name) == c.name(db).as_ref()) -- cgit v1.2.3