mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 12:33:33 +00:00
Minor rename
This commit is contained in:
parent
0ec5d4f55c
commit
5d401092f0
3 changed files with 49 additions and 49 deletions
|
@ -10,7 +10,6 @@ use std::{
|
|||
time::Instant,
|
||||
};
|
||||
|
||||
use cargo_metadata::Message;
|
||||
use crossbeam_channel::{never, select, unbounded, Receiver, RecvError, Sender};
|
||||
|
||||
pub use cargo_metadata::diagnostic::{
|
||||
|
@ -51,12 +50,12 @@ impl fmt::Display for FlycheckConfig {
|
|||
pub struct FlycheckHandle {
|
||||
// XXX: drop order is significant
|
||||
cmd_send: Sender<CheckCommand>,
|
||||
handle: jod_thread::JoinHandle<()>,
|
||||
handle: jod_thread::JoinHandle,
|
||||
}
|
||||
|
||||
impl FlycheckHandle {
|
||||
pub fn spawn(
|
||||
sender: Box<dyn Fn(CheckTask) + Send>,
|
||||
sender: Box<dyn Fn(Message) + Send>,
|
||||
config: FlycheckConfig,
|
||||
workspace_root: PathBuf,
|
||||
) -> FlycheckHandle {
|
||||
|
@ -74,7 +73,7 @@ impl FlycheckHandle {
|
|||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum CheckTask {
|
||||
pub enum Message {
|
||||
/// Request a clearing of all cached diagnostics from the check watcher
|
||||
ClearDiagnostics,
|
||||
|
||||
|
@ -82,23 +81,23 @@ pub enum CheckTask {
|
|||
AddDiagnostic { workspace_root: PathBuf, diagnostic: Diagnostic },
|
||||
|
||||
/// Request check progress notification to client
|
||||
Status(Status),
|
||||
Progress(Progress),
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Status {
|
||||
pub enum Progress {
|
||||
Being,
|
||||
Progress(String),
|
||||
DidCheckCrate(String),
|
||||
End,
|
||||
}
|
||||
|
||||
pub enum CheckCommand {
|
||||
enum CheckCommand {
|
||||
/// Request re-start of check thread
|
||||
Update,
|
||||
}
|
||||
|
||||
struct FlycheckActor {
|
||||
sender: Box<dyn Fn(CheckTask) + Send>,
|
||||
sender: Box<dyn Fn(Message) + Send>,
|
||||
config: FlycheckConfig,
|
||||
workspace_root: PathBuf,
|
||||
last_update_req: Option<Instant>,
|
||||
|
@ -109,12 +108,12 @@ struct FlycheckActor {
|
|||
/// doesn't provide a way to read sub-process output without blocking, so we
|
||||
/// have to wrap sub-processes output handling in a thread and pass messages
|
||||
/// back over a channel.
|
||||
check_process: Option<jod_thread::JoinHandle<()>>,
|
||||
check_process: Option<jod_thread::JoinHandle>,
|
||||
}
|
||||
|
||||
impl FlycheckActor {
|
||||
fn new(
|
||||
sender: Box<dyn Fn(CheckTask) + Send>,
|
||||
sender: Box<dyn Fn(Message) + Send>,
|
||||
config: FlycheckConfig,
|
||||
workspace_root: PathBuf,
|
||||
) -> FlycheckActor {
|
||||
|
@ -154,15 +153,15 @@ impl FlycheckActor {
|
|||
|
||||
if self.should_recheck() {
|
||||
self.last_update_req = None;
|
||||
self.send(CheckTask::ClearDiagnostics);
|
||||
self.send(Message::ClearDiagnostics);
|
||||
self.restart_check_process();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn clean_previous_results(&self) {
|
||||
self.send(CheckTask::ClearDiagnostics);
|
||||
self.send(CheckTask::Status(Status::End));
|
||||
self.send(Message::ClearDiagnostics);
|
||||
self.send(Message::Progress(Progress::End));
|
||||
}
|
||||
|
||||
fn should_recheck(&mut self) -> bool {
|
||||
|
@ -184,28 +183,28 @@ impl FlycheckActor {
|
|||
fn handle_message(&self, msg: CheckEvent) {
|
||||
match msg {
|
||||
CheckEvent::Begin => {
|
||||
self.send(CheckTask::Status(Status::Being));
|
||||
self.send(Message::Progress(Progress::Being));
|
||||
}
|
||||
|
||||
CheckEvent::End => {
|
||||
self.send(CheckTask::Status(Status::End));
|
||||
self.send(Message::Progress(Progress::End));
|
||||
}
|
||||
|
||||
CheckEvent::Msg(Message::CompilerArtifact(msg)) => {
|
||||
self.send(CheckTask::Status(Status::Progress(msg.target.name)));
|
||||
CheckEvent::Msg(cargo_metadata::Message::CompilerArtifact(msg)) => {
|
||||
self.send(Message::Progress(Progress::DidCheckCrate(msg.target.name)));
|
||||
}
|
||||
|
||||
CheckEvent::Msg(Message::CompilerMessage(msg)) => {
|
||||
self.send(CheckTask::AddDiagnostic {
|
||||
CheckEvent::Msg(cargo_metadata::Message::CompilerMessage(msg)) => {
|
||||
self.send(Message::AddDiagnostic {
|
||||
workspace_root: self.workspace_root.clone(),
|
||||
diagnostic: msg.message,
|
||||
});
|
||||
}
|
||||
|
||||
CheckEvent::Msg(Message::BuildScriptExecuted(_msg)) => {}
|
||||
CheckEvent::Msg(Message::BuildFinished(_)) => {}
|
||||
CheckEvent::Msg(Message::TextLine(_)) => {}
|
||||
CheckEvent::Msg(Message::Unknown) => {}
|
||||
CheckEvent::Msg(cargo_metadata::Message::BuildScriptExecuted(_))
|
||||
| CheckEvent::Msg(cargo_metadata::Message::BuildFinished(_))
|
||||
| CheckEvent::Msg(cargo_metadata::Message::TextLine(_))
|
||||
| CheckEvent::Msg(cargo_metadata::Message::Unknown) => {}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,9 +255,11 @@ impl FlycheckActor {
|
|||
let res = run_cargo(cmd, &mut |message| {
|
||||
// Skip certain kinds of messages to only spend time on what's useful
|
||||
match &message {
|
||||
Message::CompilerArtifact(artifact) if artifact.fresh => return true,
|
||||
Message::BuildScriptExecuted(_) => return true,
|
||||
Message::Unknown => return true,
|
||||
cargo_metadata::Message::CompilerArtifact(artifact) if artifact.fresh => {
|
||||
return true
|
||||
}
|
||||
cargo_metadata::Message::BuildScriptExecuted(_)
|
||||
| cargo_metadata::Message::Unknown => return true,
|
||||
_ => {}
|
||||
}
|
||||
|
||||
|
@ -278,7 +279,7 @@ impl FlycheckActor {
|
|||
}))
|
||||
}
|
||||
|
||||
fn send(&self, check_task: CheckTask) {
|
||||
fn send(&self, check_task: Message) {
|
||||
(self.sender)(check_task)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
use std::{convert::TryFrom, sync::Arc};
|
||||
|
||||
use crossbeam_channel::{unbounded, Receiver};
|
||||
use flycheck::{CheckTask, FlycheckConfig, FlycheckHandle};
|
||||
use flycheck::{FlycheckConfig, FlycheckHandle};
|
||||
use lsp_types::Url;
|
||||
use parking_lot::RwLock;
|
||||
use ra_db::{CrateId, SourceRoot, VfsPath};
|
||||
|
@ -30,7 +30,7 @@ use rustc_hash::{FxHashMap, FxHashSet};
|
|||
fn create_flycheck(
|
||||
workspaces: &[ProjectWorkspace],
|
||||
config: &FlycheckConfig,
|
||||
) -> Option<(FlycheckHandle, Receiver<CheckTask>)> {
|
||||
) -> Option<(FlycheckHandle, Receiver<flycheck::Message>)> {
|
||||
// FIXME: Figure out the multi-workspace situation
|
||||
workspaces.iter().find_map(move |w| match w {
|
||||
ProjectWorkspace::Cargo { cargo, .. } => {
|
||||
|
@ -69,7 +69,7 @@ pub(crate) struct GlobalState {
|
|||
pub(crate) analysis_host: AnalysisHost,
|
||||
pub(crate) loader: Box<dyn vfs::loader::Handle>,
|
||||
pub(crate) task_receiver: Receiver<vfs::loader::Message>,
|
||||
pub(crate) flycheck: Option<(FlycheckHandle, Receiver<CheckTask>)>,
|
||||
pub(crate) flycheck: Option<(FlycheckHandle, Receiver<flycheck::Message>)>,
|
||||
pub(crate) diagnostics: DiagnosticCollection,
|
||||
pub(crate) mem_docs: FxHashSet<VfsPath>,
|
||||
pub(crate) vfs: Arc<RwLock<(vfs::Vfs, FxHashMap<FileId, LineEndings>)>>,
|
||||
|
|
|
@ -9,7 +9,6 @@ use std::{
|
|||
};
|
||||
|
||||
use crossbeam_channel::{never, select, unbounded, RecvError, Sender};
|
||||
use flycheck::CheckTask;
|
||||
use lsp_server::{Connection, ErrorCode, Message, Notification, Request, RequestId, Response};
|
||||
use lsp_types::{request::Request as _, NumberOrString, TextDocumentContentChangeEvent};
|
||||
use ra_db::VfsPath;
|
||||
|
@ -176,7 +175,7 @@ enum Event {
|
|||
Msg(Message),
|
||||
Task(Task),
|
||||
Vfs(vfs::loader::Message),
|
||||
CheckWatcher(CheckTask),
|
||||
CheckWatcher(flycheck::Message),
|
||||
}
|
||||
|
||||
impl fmt::Debug for Event {
|
||||
|
@ -250,14 +249,14 @@ fn loop_turn(
|
|||
}
|
||||
vfs::loader::Message::Progress { n_total, n_done } => {
|
||||
let state = if n_done == 0 {
|
||||
ProgressState::Start
|
||||
Progress::Begin
|
||||
} else if n_done < n_total {
|
||||
ProgressState::Report
|
||||
Progress::Report
|
||||
} else {
|
||||
assert_eq!(n_done, n_total);
|
||||
global_state.status = Status::Ready;
|
||||
became_ready = true;
|
||||
ProgressState::End
|
||||
Progress::End
|
||||
};
|
||||
report_progress(
|
||||
global_state,
|
||||
|
@ -593,17 +592,17 @@ fn apply_document_changes(
|
|||
}
|
||||
|
||||
fn on_check_task(
|
||||
task: CheckTask,
|
||||
task: flycheck::Message,
|
||||
global_state: &mut GlobalState,
|
||||
task_sender: &Sender<Task>,
|
||||
msg_sender: &Sender<Message>,
|
||||
) -> Result<()> {
|
||||
match task {
|
||||
CheckTask::ClearDiagnostics => {
|
||||
flycheck::Message::ClearDiagnostics => {
|
||||
task_sender.send(Task::Diagnostic(DiagnosticTask::ClearCheck))?;
|
||||
}
|
||||
|
||||
CheckTask::AddDiagnostic { workspace_root, diagnostic } => {
|
||||
flycheck::Message::AddDiagnostic { workspace_root, diagnostic } => {
|
||||
let diagnostics = crate::diagnostics::to_proto::map_rust_diagnostic_to_lsp(
|
||||
&global_state.config.diagnostics,
|
||||
&diagnostic,
|
||||
|
@ -627,11 +626,11 @@ fn on_check_task(
|
|||
}
|
||||
}
|
||||
|
||||
CheckTask::Status(status) => {
|
||||
flycheck::Message::Progress(status) => {
|
||||
let (state, message) = match status {
|
||||
flycheck::Status::Being => (ProgressState::Start, None),
|
||||
flycheck::Status::Progress(target) => (ProgressState::Report, Some(target)),
|
||||
flycheck::Status::End => (ProgressState::End, None),
|
||||
flycheck::Progress::Being => (Progress::Begin, None),
|
||||
flycheck::Progress::DidCheckCrate(target) => (Progress::Report, Some(target)),
|
||||
flycheck::Progress::End => (Progress::End, None),
|
||||
};
|
||||
|
||||
report_progress(global_state, msg_sender, "cargo check", state, message, None);
|
||||
|
@ -654,8 +653,8 @@ fn on_diagnostic_task(task: DiagnosticTask, msg_sender: &Sender<Message>, state:
|
|||
}
|
||||
|
||||
#[derive(Eq, PartialEq)]
|
||||
enum ProgressState {
|
||||
Start,
|
||||
enum Progress {
|
||||
Begin,
|
||||
Report,
|
||||
End,
|
||||
}
|
||||
|
@ -668,7 +667,7 @@ fn report_progress(
|
|||
global_state: &mut GlobalState,
|
||||
sender: &Sender<Message>,
|
||||
title: &str,
|
||||
state: ProgressState,
|
||||
state: Progress,
|
||||
message: Option<String>,
|
||||
percentage: Option<f64>,
|
||||
) {
|
||||
|
@ -677,7 +676,7 @@ fn report_progress(
|
|||
}
|
||||
let token = lsp_types::ProgressToken::String(format!("rustAnalyzer/{}", title));
|
||||
let work_done_progress = match state {
|
||||
ProgressState::Start => {
|
||||
Progress::Begin => {
|
||||
let work_done_progress_create = global_state.req_queue.outgoing.register(
|
||||
lsp_types::request::WorkDoneProgressCreate::METHOD.to_string(),
|
||||
lsp_types::WorkDoneProgressCreateParams { token: token.clone() },
|
||||
|
@ -692,14 +691,14 @@ fn report_progress(
|
|||
percentage,
|
||||
})
|
||||
}
|
||||
ProgressState::Report => {
|
||||
Progress::Report => {
|
||||
lsp_types::WorkDoneProgress::Report(lsp_types::WorkDoneProgressReport {
|
||||
cancellable: None,
|
||||
message,
|
||||
percentage,
|
||||
})
|
||||
}
|
||||
ProgressState::End => {
|
||||
Progress::End => {
|
||||
lsp_types::WorkDoneProgress::End(lsp_types::WorkDoneProgressEnd { message })
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue