From 0e57d58dd086e2d114ccc82261b5396a5f828901 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Thu, 23 May 2019 21:13:22 +0300 Subject: kill code_model_impl --- crates/ra_hir/src/code_model_api.rs | 66 ++++++++++++++++++++++++++- crates/ra_hir/src/code_model_impl.rs | 2 - crates/ra_hir/src/code_model_impl/function.rs | 50 -------------------- crates/ra_hir/src/code_model_impl/konst.rs | 34 -------------- crates/ra_hir/src/lib.rs | 1 - 5 files changed, 64 insertions(+), 89 deletions(-) delete mode 100644 crates/ra_hir/src/code_model_impl.rs delete mode 100644 crates/ra_hir/src/code_model_impl/function.rs delete mode 100644 crates/ra_hir/src/code_model_impl/konst.rs diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs index b6834bc25..49030ce67 100644 --- a/crates/ra_hir/src/code_model_api.rs +++ b/crates/ra_hir/src/code_model_api.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use ra_db::{CrateId, SourceRootId, Edition, FileId}; -use ra_syntax::{ast::self, TreeArc}; +use ra_syntax::{ast::{self, NameOwner, TypeAscriptionOwner}, TreeArc}; use crate::{ Name, AsName, AstId, Ty, HirFileId, Either, @@ -9,7 +9,7 @@ use crate::{ type_ref::TypeRef, nameres::{ModuleScope, Namespace, ImportId, CrateModuleId}, expr::{Body, BodySourceMap, validation::ExprValidator}, - ty::{ TraitRef, InferenceResult}, + ty::{TraitRef, InferenceResult}, adt::{EnumVariantId, StructFieldId, VariantDef}, generics::HasGenericParams, docs::{Documentation, Docs, docs_from_ast}, @@ -18,6 +18,7 @@ use crate::{ resolve::Resolver, diagnostics::{DiagnosticSink}, traits::{TraitItem, TraitData}, + type_ref::Mutability, }; /// hir::Crate describes a single crate. It's the main interface with which @@ -572,6 +573,44 @@ pub struct FnSignature { } impl FnSignature { + pub(crate) fn fn_signature_query(db: &impl DefDatabase, func: Function) -> Arc { + let (_, node) = func.source(db); + let name = node.name().map(|n| n.as_name()).unwrap_or_else(Name::missing); + let mut params = Vec::new(); + let mut has_self_param = false; + if let Some(param_list) = node.param_list() { + if let Some(self_param) = param_list.self_param() { + let self_type = if let Some(type_ref) = self_param.ascribed_type() { + TypeRef::from_ast(type_ref) + } else { + let self_type = TypeRef::Path(Name::self_type().into()); + match self_param.kind() { + ast::SelfParamKind::Owned => self_type, + ast::SelfParamKind::Ref => { + TypeRef::Reference(Box::new(self_type), Mutability::Shared) + } + ast::SelfParamKind::MutRef => { + TypeRef::Reference(Box::new(self_type), Mutability::Mut) + } + } + }; + params.push(self_type); + has_self_param = true; + } + for param in param_list.params() { + let type_ref = TypeRef::from_ast_opt(param.ascribed_type()); + params.push(type_ref); + } + } + let ret_type = if let Some(type_ref) = node.ret_type().and_then(|rt| rt.type_ref()) { + TypeRef::from_ast(type_ref) + } else { + TypeRef::unit() + }; + + let sig = FnSignature { name, params, ret_type, has_self_param }; + Arc::new(sig) + } pub fn name(&self) -> &Name { &self.name } @@ -731,6 +770,29 @@ impl ConstSignature { pub fn type_ref(&self) -> &TypeRef { &self.type_ref } + + pub(crate) fn const_signature_query( + db: &impl DefDatabase, + konst: Const, + ) -> Arc { + let (_, node) = konst.source(db); + const_signature_for(&*node) + } + + pub(crate) fn static_signature_query( + db: &impl DefDatabase, + konst: Static, + ) -> Arc { + let (_, node) = konst.source(db); + const_signature_for(&*node) + } +} + +fn const_signature_for(node: &N) -> Arc { + let name = node.name().map(|n| n.as_name()).unwrap_or_else(Name::missing); + let type_ref = TypeRef::from_ast_opt(node.ascribed_type()); + let sig = ConstSignature { name, type_ref }; + Arc::new(sig) } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] diff --git a/crates/ra_hir/src/code_model_impl.rs b/crates/ra_hir/src/code_model_impl.rs deleted file mode 100644 index 7bdd86eae..000000000 --- a/crates/ra_hir/src/code_model_impl.rs +++ /dev/null @@ -1,2 +0,0 @@ -mod konst; // `const` is invalid ident :( -pub(crate) mod function; diff --git a/crates/ra_hir/src/code_model_impl/function.rs b/crates/ra_hir/src/code_model_impl/function.rs deleted file mode 100644 index f8bd0f784..000000000 --- a/crates/ra_hir/src/code_model_impl/function.rs +++ /dev/null @@ -1,50 +0,0 @@ -use std::sync::Arc; - -use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; - -use crate::{ - Name, AsName, Function, FnSignature, - type_ref::{TypeRef, Mutability}, - DefDatabase, -}; - -impl FnSignature { - pub(crate) fn fn_signature_query(db: &impl DefDatabase, func: Function) -> Arc { - let (_, node) = func.source(db); - let name = node.name().map(|n| n.as_name()).unwrap_or_else(Name::missing); - let mut params = Vec::new(); - let mut has_self_param = false; - if let Some(param_list) = node.param_list() { - if let Some(self_param) = param_list.self_param() { - let self_type = if let Some(type_ref) = self_param.ascribed_type() { - TypeRef::from_ast(type_ref) - } else { - let self_type = TypeRef::Path(Name::self_type().into()); - match self_param.kind() { - ast::SelfParamKind::Owned => self_type, - ast::SelfParamKind::Ref => { - TypeRef::Reference(Box::new(self_type), Mutability::Shared) - } - ast::SelfParamKind::MutRef => { - TypeRef::Reference(Box::new(self_type), Mutability::Mut) - } - } - }; - params.push(self_type); - has_self_param = true; - } - for param in param_list.params() { - let type_ref = TypeRef::from_ast_opt(param.ascribed_type()); - params.push(type_ref); - } - } - let ret_type = if let Some(type_ref) = node.ret_type().and_then(|rt| rt.type_ref()) { - TypeRef::from_ast(type_ref) - } else { - TypeRef::unit() - }; - - let sig = FnSignature { name, params, ret_type, has_self_param }; - Arc::new(sig) - } -} diff --git a/crates/ra_hir/src/code_model_impl/konst.rs b/crates/ra_hir/src/code_model_impl/konst.rs deleted file mode 100644 index db4e5ce5c..000000000 --- a/crates/ra_hir/src/code_model_impl/konst.rs +++ /dev/null @@ -1,34 +0,0 @@ -use std::sync::Arc; - -use ra_syntax::ast::{NameOwner, TypeAscriptionOwner}; - -use crate::{ - Name, AsName, Const, ConstSignature, Static, - type_ref::{TypeRef}, - DefDatabase, -}; - -fn const_signature_for(node: &N) -> Arc { - let name = node.name().map(|n| n.as_name()).unwrap_or_else(Name::missing); - let type_ref = TypeRef::from_ast_opt(node.ascribed_type()); - let sig = ConstSignature { name, type_ref }; - Arc::new(sig) -} - -impl ConstSignature { - pub(crate) fn const_signature_query( - db: &impl DefDatabase, - konst: Const, - ) -> Arc { - let (_, node) = konst.source(db); - const_signature_for(&*node) - } - - pub(crate) fn static_signature_query( - db: &impl DefDatabase, - konst: Static, - ) -> Arc { - let (_, node) = konst.source(db); - const_signature_for(&*node) - } -} diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 0135644db..556828946 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs @@ -43,7 +43,6 @@ mod resolve; pub mod diagnostics; mod code_model_api; -mod code_model_impl; #[cfg(test)] mod marks; -- cgit v1.2.3