diff options
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r-- | crates/hir/src/lib.rs | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index dd5515c2b..2468c0dc6 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs | |||
@@ -27,6 +27,7 @@ mod attrs; | |||
27 | mod has_source; | 27 | mod has_source; |
28 | 28 | ||
29 | pub mod diagnostics; | 29 | pub mod diagnostics; |
30 | pub mod diagnostics_sink; | ||
30 | pub mod db; | 31 | pub mod db; |
31 | 32 | ||
32 | mod display; | 33 | mod display; |
@@ -35,13 +36,6 @@ use std::{iter, sync::Arc}; | |||
35 | 36 | ||
36 | use arrayvec::ArrayVec; | 37 | use arrayvec::ArrayVec; |
37 | use base_db::{CrateDisplayName, CrateId, Edition, FileId}; | 38 | use base_db::{CrateDisplayName, CrateId, Edition, FileId}; |
38 | use diagnostics::{ | ||
39 | BreakOutsideOfLoop, InactiveCode, InternalBailedOut, MacroError, MismatchedArgCount, | ||
40 | MissingFields, MissingOkOrSomeInTailExpr, MissingPatFields, MissingUnsafe, NoSuchField, | ||
41 | RemoveThisSemicolon, ReplaceFilterMapNextWithFindMap, UnimplementedBuiltinMacro, | ||
42 | UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, UnresolvedModule, | ||
43 | UnresolvedProcMacro, | ||
44 | }; | ||
45 | use either::Either; | 39 | use either::Either; |
46 | use hir_def::{ | 40 | use hir_def::{ |
47 | adt::{ReprKind, VariantData}, | 41 | adt::{ReprKind, VariantData}, |
@@ -64,8 +58,7 @@ use hir_ty::{ | |||
64 | consteval::ConstExt, | 58 | consteval::ConstExt, |
65 | could_unify, | 59 | could_unify, |
66 | diagnostics::BodyValidationDiagnostic, | 60 | diagnostics::BodyValidationDiagnostic, |
67 | diagnostics_sink::DiagnosticSink, | 61 | method_resolution::{self, TyFingerprint}, |
68 | method_resolution::{self, def_crates, TyFingerprint}, | ||
69 | primitive::UintTy, | 62 | primitive::UintTy, |
70 | subst_prefix, | 63 | subst_prefix, |
71 | traits::FnTrait, | 64 | traits::FnTrait, |
@@ -87,7 +80,14 @@ use tt::{Ident, Leaf, Literal, TokenTree}; | |||
87 | 80 | ||
88 | use crate::{ | 81 | use crate::{ |
89 | db::{DefDatabase, HirDatabase}, | 82 | db::{DefDatabase, HirDatabase}, |
90 | diagnostics::MissingMatchArms, | 83 | diagnostics::{ |
84 | BreakOutsideOfLoop, InactiveCode, InternalBailedOut, MacroError, MismatchedArgCount, | ||
85 | MissingFields, MissingMatchArms, MissingOkOrSomeInTailExpr, MissingPatFields, | ||
86 | MissingUnsafe, NoSuchField, RemoveThisSemicolon, ReplaceFilterMapNextWithFindMap, | ||
87 | UnimplementedBuiltinMacro, UnresolvedExternCrate, UnresolvedImport, UnresolvedMacroCall, | ||
88 | UnresolvedModule, UnresolvedProcMacro, | ||
89 | }, | ||
90 | diagnostics_sink::DiagnosticSink, | ||
91 | }; | 91 | }; |
92 | 92 | ||
93 | pub use crate::{ | 93 | pub use crate::{ |
@@ -361,7 +361,9 @@ impl ModuleDef { | |||
361 | None => return, | 361 | None => return, |
362 | }; | 362 | }; |
363 | 363 | ||
364 | hir_ty::diagnostics::validate_module_item(db, module.id.krate(), id, sink) | 364 | for diag in hir_ty::diagnostics::validate_module_item(db, module.id.krate(), id) { |
365 | sink.push(diag) | ||
366 | } | ||
365 | } | 367 | } |
366 | } | 368 | } |
367 | 369 | ||
@@ -1225,7 +1227,9 @@ impl Function { | |||
1225 | } | 1227 | } |
1226 | } | 1228 | } |
1227 | 1229 | ||
1228 | hir_ty::diagnostics::validate_module_item(db, krate, self.id.into(), sink); | 1230 | for diag in hir_ty::diagnostics::validate_module_item(db, krate, self.id.into()) { |
1231 | sink.push(diag) | ||
1232 | } | ||
1229 | } | 1233 | } |
1230 | 1234 | ||
1231 | /// Whether this function declaration has a definition. | 1235 | /// Whether this function declaration has a definition. |
@@ -1944,7 +1948,7 @@ impl Impl { | |||
1944 | } | 1948 | } |
1945 | 1949 | ||
1946 | pub fn all_for_type(db: &dyn HirDatabase, Type { krate, ty, .. }: Type) -> Vec<Impl> { | 1950 | pub fn all_for_type(db: &dyn HirDatabase, Type { krate, ty, .. }: Type) -> Vec<Impl> { |
1947 | let def_crates = match def_crates(db, &ty, krate) { | 1951 | let def_crates = match method_resolution::def_crates(db, &ty, krate) { |
1948 | Some(def_crates) => def_crates, | 1952 | Some(def_crates) => def_crates, |
1949 | None => return Vec::new(), | 1953 | None => return Vec::new(), |
1950 | }; | 1954 | }; |
@@ -2350,7 +2354,7 @@ impl Type { | |||
2350 | krate: Crate, | 2354 | krate: Crate, |
2351 | mut callback: impl FnMut(AssocItem) -> Option<T>, | 2355 | mut callback: impl FnMut(AssocItem) -> Option<T>, |
2352 | ) -> Option<T> { | 2356 | ) -> Option<T> { |
2353 | for krate in def_crates(db, &self.ty, krate.id)? { | 2357 | for krate in method_resolution::def_crates(db, &self.ty, krate.id)? { |
2354 | let impls = db.inherent_impls_in_crate(krate); | 2358 | let impls = db.inherent_impls_in_crate(krate); |
2355 | 2359 | ||
2356 | for impl_def in impls.for_self_ty(&self.ty) { | 2360 | for impl_def in impls.for_self_ty(&self.ty) { |