aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/lib.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-06-12 20:05:23 +0100
committerAleksey Kladov <[email protected]>2021-06-12 20:05:23 +0100
commit7731714578d4ae6eb7a54ead2e51ae032e9a700a (patch)
treef8dc2d68cfc72c1fcb839ec85093fb49f479663d /crates/hir/src/lib.rs
parent6940cfed1e24a67e816e69e1093e04c0eb73e070 (diff)
internal: move diagnostics infra to hir
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r--crates/hir/src/lib.rs32
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;
27mod has_source; 27mod has_source;
28 28
29pub mod diagnostics; 29pub mod diagnostics;
30pub mod diagnostics_sink;
30pub mod db; 31pub mod db;
31 32
32mod display; 33mod display;
@@ -35,13 +36,6 @@ use std::{iter, sync::Arc};
35 36
36use arrayvec::ArrayVec; 37use arrayvec::ArrayVec;
37use base_db::{CrateDisplayName, CrateId, Edition, FileId}; 38use base_db::{CrateDisplayName, CrateId, Edition, FileId};
38use 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};
45use either::Either; 39use either::Either;
46use hir_def::{ 40use 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
88use crate::{ 81use 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
93pub use crate::{ 93pub 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) {