Skip to content

Commit 2f8cd66

Browse files
committed
Auto merge of rust-lang#14810 - Veykril:inline-module, r=Veykril
internal: Inline handlers module
2 parents 9eb26a9 + 9e80c85 commit 2f8cd66

File tree

4 files changed

+58
-59
lines changed

4 files changed

+58
-59
lines changed

crates/hir-ty/src/layout/adt.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -38,18 +38,18 @@ pub fn layout_of_adt_query(
3838
.map(|(fd, _)| layout_of_ty(db, &field_ty(db, def, fd, &subst), cx.krate))
3939
.collect::<Result<Vec<_>, _>>()
4040
};
41-
let (variants, is_enum, is_union, repr) = match def {
41+
let (variants, repr) = match def {
4242
AdtId::StructId(s) => {
4343
let data = db.struct_data(s);
4444
let mut r = SmallVec::<[_; 1]>::new();
4545
r.push(handle_variant(s.into(), &data.variant_data)?);
46-
(r, false, false, data.repr.unwrap_or_default())
46+
(r, data.repr.unwrap_or_default())
4747
}
4848
AdtId::UnionId(id) => {
4949
let data = db.union_data(id);
5050
let mut r = SmallVec::new();
5151
r.push(handle_variant(id.into(), &data.variant_data)?);
52-
(r, false, true, data.repr.unwrap_or_default())
52+
(r, data.repr.unwrap_or_default())
5353
}
5454
AdtId::EnumId(e) => {
5555
let data = db.enum_data(e);
@@ -63,19 +63,19 @@ pub fn layout_of_adt_query(
6363
)
6464
})
6565
.collect::<Result<SmallVec<_>, _>>()?;
66-
(r, true, false, data.repr.unwrap_or_default())
66+
(r, data.repr.unwrap_or_default())
6767
}
6868
};
6969
let variants =
7070
variants.iter().map(|x| x.iter().collect::<Vec<_>>()).collect::<SmallVec<[_; 1]>>();
7171
let variants = variants.iter().map(|x| x.iter().collect()).collect();
72-
if is_union {
72+
if matches!(def, AdtId::UnionId(..)) {
7373
cx.layout_of_union(&repr, &variants).ok_or(LayoutError::Unknown)
7474
} else {
7575
cx.layout_of_struct_or_enum(
7676
&repr,
7777
&variants,
78-
is_enum,
78+
matches!(def, AdtId::EnumId(..)),
7979
is_unsafe_cell(db, def),
8080
layout_scalar_valid_range(db, def),
8181
|min, max| repr_discr(&dl, &repr, min, max).unwrap_or((Integer::I8, false)),
@@ -95,7 +95,7 @@ pub fn layout_of_adt_query(
9595
// .iter_enumerated()
9696
// .any(|(i, v)| v.discr != ty::VariantDiscr::Relative(i.as_u32()))
9797
repr.inhibit_enum_layout_opt(),
98-
!is_enum
98+
!matches!(def, AdtId::EnumId(..))
9999
&& variants
100100
.iter()
101101
.next()

crates/rust-analyzer/src/handlers.rs

-45
This file was deleted.

crates/rust-analyzer/src/lib.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ mod diff;
2525
mod dispatch;
2626
mod from_proto;
2727
mod global_state;
28-
mod handlers;
2928
mod line_index;
3029
mod lsp_utils;
3130
mod main_loop;
@@ -38,6 +37,11 @@ mod task_pool;
3837
mod to_proto;
3938
mod version;
4039

40+
mod handlers {
41+
pub(crate) mod notification;
42+
pub(crate) mod request;
43+
}
44+
4145
pub mod config;
4246
pub mod lsp_ext;
4347

crates/rust-analyzer/src/main_loop.rs

+46-6
Original file line numberDiff line numberDiff line change
@@ -764,15 +764,55 @@ impl GlobalState {
764764

765765
let snapshot = self.snapshot();
766766
self.task_pool.handle.spawn(move || {
767+
let _p = profile::span("publish_diagnostics");
767768
let diagnostics = subscriptions
768769
.into_iter()
769770
.filter_map(|file_id| {
770-
crate::handlers::publish_diagnostics(&snapshot, file_id)
771-
.ok()
772-
.map(|diags| (file_id, diags))
771+
let line_index = snapshot.file_line_index(file_id).ok()?;
772+
Some((
773+
file_id,
774+
line_index,
775+
snapshot
776+
.analysis
777+
.diagnostics(
778+
&snapshot.config.diagnostics(),
779+
ide::AssistResolveStrategy::None,
780+
file_id,
781+
)
782+
.ok()?,
783+
))
773784
})
774-
.collect::<Vec<_>>();
775-
Task::Diagnostics(diagnostics)
776-
})
785+
.map(|(file_id, line_index, it)| {
786+
(
787+
file_id,
788+
it.into_iter()
789+
.map(move |d| lsp_types::Diagnostic {
790+
range: crate::to_proto::range(&line_index, d.range),
791+
severity: Some(crate::to_proto::diagnostic_severity(d.severity)),
792+
code: Some(lsp_types::NumberOrString::String(
793+
d.code.as_str().to_string(),
794+
)),
795+
code_description: Some(lsp_types::CodeDescription {
796+
href: lsp_types::Url::parse(&format!(
797+
"https://rust-analyzer.github.io/manual.html#{}",
798+
d.code.as_str()
799+
))
800+
.unwrap(),
801+
}),
802+
source: Some("rust-analyzer".to_string()),
803+
message: d.message,
804+
related_information: None,
805+
tags: if d.unused {
806+
Some(vec![lsp_types::DiagnosticTag::UNNECESSARY])
807+
} else {
808+
None
809+
},
810+
data: None,
811+
})
812+
.collect::<Vec<_>>(),
813+
)
814+
});
815+
Task::Diagnostics(diagnostics.collect())
816+
});
777817
}
778818
}

0 commit comments

Comments
 (0)