2019-01-08 23:47:12 +00:00
//! HIR (previously known as descriptors) provides a high-level object oriented
//! access to Rust code.
2018-11-28 00:42:26 +00:00
//!
//! The principal difference between HIR and syntax trees is that HIR is bound
//! to a particular crate instance. That is, it has cfg flags and features
2019-01-08 23:47:12 +00:00
//! applied. So, the relation between syntax and HIR is many-to-one.
2018-11-28 00:42:26 +00:00
2019-09-30 08:58:53 +00:00
#![ recursion_limit = " 512 " ]
2019-01-24 16:12:11 +00:00
macro_rules ! impl_froms {
2020-01-14 14:27:05 +00:00
( $e :ident : $( $v :ident $( ( $( $sv :ident ) , * ) ) ? ) , * $(, ) ? ) = > {
2019-01-24 16:12:11 +00:00
$(
impl From < $v > for $e {
fn from ( it : $v ) -> $e {
$e ::$v ( it )
}
}
2019-09-12 21:31:04 +00:00
$( $(
impl From < $sv > for $e {
fn from ( it : $sv ) -> $e {
$e ::$v ( $v ::$sv ( it ) )
}
}
) * ) ?
2019-01-24 16:12:11 +00:00
) *
}
}
2018-11-28 01:09:44 +00:00
pub mod db ;
2020-01-14 09:59:36 +00:00
pub mod source_analyzer ;
2020-01-14 14:27:05 +00:00
pub mod source_binder ;
2018-11-28 00:42:26 +00:00
2019-03-21 19:13:11 +00:00
pub mod diagnostics ;
2018-12-08 20:40:55 +00:00
2019-10-31 15:45:10 +00:00
mod from_id ;
2019-05-23 18:14:19 +00:00
mod code_model ;
2019-01-04 21:02:05 +00:00
2019-12-08 11:57:13 +00:00
mod has_source ;
2019-09-16 10:48:54 +00:00
2019-10-29 12:53:25 +00:00
pub use crate ::{
2019-10-30 15:50:10 +00:00
code_model ::{
2019-12-19 17:07:39 +00:00
Adt , AssocItem , AttrDef , Const , Crate , CrateDependency , DefWithBody , Docs , Enum ,
2019-12-24 20:45:58 +00:00
EnumVariant , FieldSource , Function , GenericDef , HasAttrs , HasVisibility , ImplBlock , Local ,
MacroDef , Module , ModuleDef , ScopeDef , Static , Struct , StructField , Trait , Type , TypeAlias ,
2019-12-08 11:57:13 +00:00
TypeParam , Union , VariantDef ,
2019-10-30 15:50:10 +00:00
} ,
2019-12-08 11:57:13 +00:00
has_source ::HasSource ,
2020-01-14 09:59:36 +00:00
source_analyzer ::{ PathResolution , ScopeEntryWithSyntax , SourceAnalyzer } ,
2020-01-14 15:55:35 +00:00
source_binder ::SourceBinder ,
2018-11-28 00:42:26 +00:00
} ;
2019-10-30 14:24:36 +00:00
pub use hir_def ::{
2019-11-27 14:46:02 +00:00
body ::scope ::ExprScopes ,
2019-10-31 07:51:54 +00:00
builtin_type ::BuiltinType ,
2019-11-23 11:43:38 +00:00
docs ::Documentation ,
2019-12-03 20:24:02 +00:00
nameres ::ModuleSource ,
2019-12-13 11:12:36 +00:00
path ::{ ModPath , Path , PathKind } ,
2019-10-30 14:28:30 +00:00
type_ref ::Mutability ,
2020-01-27 12:42:45 +00:00
ModuleDefId , // FIXME this is exposed and should be used for implementing the `TestImportsLocator` in `ra_assists` only, should be removed later along with the trait and the implementation.
2019-10-30 14:24:36 +00:00
} ;
2019-11-24 11:02:08 +00:00
pub use hir_expand ::{
2020-02-02 12:06:51 +00:00
name ::{ known , Name } ,
HirFileId , InFile , MacroCallId , MacroCallLoc , MacroDefId , MacroFile , Origin ,
2019-11-24 11:02:08 +00:00
} ;
2019-12-08 11:44:14 +00:00
pub use hir_ty ::{ display ::HirDisplay , CallableDef } ;