]> git.lizzy.rs Git - rust.git/blobdiff - crates/ra_hir/src/lib.rs
Hover for associated items in patterns
[rust.git] / crates / ra_hir / src / lib.rs
index d600b91df3184a1974fb4a9414d25b519b0ec9b6..74c718e724fd2367a974a614fb1c6b6931db15a5 100644 (file)
@@ -1,64 +1,76 @@
-//! HIR (previsouly known as descriptors) provides a high-level OO acess to Rust
-//! code.
+//! HIR (previously known as descriptors) provides a high-level object oriented
+//! access to Rust code.
 //!
 //! 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
-//! applied. So, there relation between syntax and HIR is many-to-one.
+//! applied. So, the relation between syntax and HIR is many-to-one.
 
-macro_rules! ctry {
-    ($expr:expr) => {
-        match $expr {
-            None => return Ok(None),
-            Some(it) => it,
-        }
-    };
+macro_rules! impl_froms {
+    ($e:ident: $($v:ident), *) => {
+        $(
+            impl From<$v> for $e {
+                fn from(it: $v) -> $e {
+                    $e::$v(it)
+                }
+            }
+        )*
+    }
 }
 
 pub mod db;
-#[cfg(test)]
-mod mock;
-mod query_definitions;
+#[macro_use]
+pub mod mock;
 mod path;
 pub mod source_binder;
 
 mod ids;
 mod macros;
 mod name;
-// can't use `crate` or `r#crate` here :(
-mod krate;
-mod module;
-mod function;
+mod module_tree;
+mod nameres;
 mod adt;
+mod type_alias;
 mod type_ref;
 mod ty;
 mod impl_block;
 mod expr;
+mod generics;
+mod docs;
+mod resolve;
+
+mod code_model_api;
+mod code_model_impl;
+
+#[cfg(test)]
+mod marks;
 
 use crate::{
-    db::HirDatabase,
+    db::{HirDatabase, PersistentHirDatabase},
     name::{AsName, KnownName},
-    ids::{DefKind, SourceItemId, SourceFileItemId, SourceFileItems},
+    ids::{SourceItemId, SourceFileItems},
 };
 
 pub use self::{
     path::{Path, PathKind},
     name::Name,
-    krate::Crate,
-    ids::{HirFileId, DefId, DefLoc, MacroCallId, MacroCallLoc},
+    ids::{HirFileId, MacroCallId, MacroCallLoc, HirInterner},
     macros::{MacroDef, MacroInput, MacroExpansion},
-    module::{Module, ModuleId, Problem, nameres::{ItemMap, PerNs, Namespace}, ModuleScope, Resolution},
-    function::{Function, FnSignature, FnScopes, ScopesWithSyntaxMapping},
-    adt::{Struct, Enum},
-    ty::Ty,
+    nameres::{ItemMap, PerNs, Namespace},
+    ty::{Ty, Substs},
     impl_block::{ImplBlock, ImplItem},
+    docs::{Docs, Documentation},
+    adt::AdtDef,
+    expr::{ExprScopes, ScopesWithSourceMap, ScopeEntryWithSyntax, Pat},
+    resolve::{Resolver, Resolution},
 };
 
-pub use self::function::FnSignatureInfo;
-
-pub enum Def {
-    Module(Module),
-    Function(Function),
-    Struct(Struct),
-    Enum(Enum),
-    Item,
-}
+pub use self::code_model_api::{
+    Crate, CrateDependency,
+    Def,
+    Module, ModuleDef, ModuleSource, Problem,
+    Struct, Enum, EnumVariant,
+    Function, FnSignature,
+    StructField, FieldSource,
+    Static, Const, ConstSignature,
+    Trait, TypeAlias,
+};