]> 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 eb19d8be159938da214d4eac6b622668cb5ac763..74c718e724fd2367a974a614fb1c6b6931db15a5 100644 (file)
@@ -1,23 +1,25 @@
-//! 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.
-
-macro_rules! ctry {
-    ($expr:expr) => {
-        match $expr {
-            None => return Ok(None),
-            Some(it) => it,
-        }
-    };
+//! applied. So, the relation between syntax and HIR is many-to-one.
+
+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;
 
@@ -27,35 +29,48 @@ macro_rules! ctry {
 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,
-    ids::{HirFileId, DefId, DefLoc, MacroCallId, MacroCallLoc},
+    ids::{HirFileId, MacroCallId, MacroCallLoc, HirInterner},
     macros::{MacroDef, MacroInput, MacroExpansion},
-    nameres::{ItemMap, PerNs, Namespace, Resolution},
-    ty::Ty,
+    nameres::{ItemMap, PerNs, Namespace},
+    ty::{Ty, Substs},
     impl_block::{ImplBlock, ImplItem},
-    code_model_impl::function::{FnScopes, ScopesWithSyntaxMapping},
+    docs::{Docs, Documentation},
+    adt::AdtDef,
+    expr::{ExprScopes, ScopesWithSourceMap, ScopeEntryWithSyntax, Pat},
+    resolve::{Resolver, Resolution},
 };
 
 pub use self::code_model_api::{
     Crate, CrateDependency,
     Def,
-    Module, ModuleSource, Problem,
-    Struct, Enum, VariantData, StructField,
+    Module, ModuleDef, ModuleSource, Problem,
+    Struct, Enum, EnumVariant,
     Function, FnSignature,
+    StructField, FieldSource,
+    Static, Const, ConstSignature,
+    Trait, TypeAlias,
 };