diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-06-04 23:14:46 +0100 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-06-04 23:14:46 +0100 |
commit | 5deb907b4321d8328978d3322b0826b781814452 (patch) | |
tree | 2baa3b75b1ef62c02617c37ba9b800c41a3dd102 /crates/ra_lsp_server | |
parent | 8bd0e844247dc28d6ceb24b00f3cc3396bd5bf03 (diff) | |
parent | aa30c4909ebb1e85f1591f465c9e2875aa4d394e (diff) |
Merge #1374
1374: Implement `cargo lint` and fix some clippy errors r=alanhdu a=alanhdu
This creates a `cargo lint` command that runs clippy with certain lints disabled. I've also gone ahead and fixed some of the lint errors, although there are many more still to go.
cc #848
Co-authored-by: Alan Du <[email protected]>
Diffstat (limited to 'crates/ra_lsp_server')
-rw-r--r-- | crates/ra_lsp_server/src/cargo_target_spec.rs | 2 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main.rs | 2 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/main_loop.rs | 4 | ||||
-rw-r--r-- | crates/ra_lsp_server/src/world.rs | 29 | ||||
-rw-r--r-- | crates/ra_lsp_server/tests/heavy_tests/support.rs | 18 |
5 files changed, 22 insertions, 33 deletions
diff --git a/crates/ra_lsp_server/src/cargo_target_spec.rs b/crates/ra_lsp_server/src/cargo_target_spec.rs index 742361155..082ac8609 100644 --- a/crates/ra_lsp_server/src/cargo_target_spec.rs +++ b/crates/ra_lsp_server/src/cargo_target_spec.rs | |||
@@ -64,7 +64,7 @@ impl CargoTargetSpec { | |||
64 | None => return Ok(None), | 64 | None => return Ok(None), |
65 | }; | 65 | }; |
66 | let file_id = world.analysis().crate_root(crate_id)?; | 66 | let file_id = world.analysis().crate_root(crate_id)?; |
67 | let path = world.vfs.read().file2path(ra_vfs::VfsFile(file_id.0.into())); | 67 | let path = world.vfs.read().file2path(ra_vfs::VfsFile(file_id.0)); |
68 | let res = world.workspaces.iter().find_map(|ws| match ws { | 68 | let res = world.workspaces.iter().find_map(|ws| match ws { |
69 | project_model::ProjectWorkspace::Cargo { cargo, .. } => { | 69 | project_model::ProjectWorkspace::Cargo { cargo, .. } => { |
70 | let tgt = cargo.target_by_root(&path)?; | 70 | let tgt = cargo.target_by_root(&path)?; |
diff --git a/crates/ra_lsp_server/src/main.rs b/crates/ra_lsp_server/src/main.rs index b0b70df5c..a0df32dde 100644 --- a/crates/ra_lsp_server/src/main.rs +++ b/crates/ra_lsp_server/src/main.rs | |||
@@ -49,7 +49,7 @@ fn main_inner() -> Result<()> { | |||
49 | let opts = params | 49 | let opts = params |
50 | .initialization_options | 50 | .initialization_options |
51 | .and_then(|v| InitializationOptions::deserialize(v).ok()) | 51 | .and_then(|v| InitializationOptions::deserialize(v).ok()) |
52 | .unwrap_or(InitializationOptions::default()); | 52 | .unwrap_or_default(); |
53 | 53 | ||
54 | ra_lsp_server::main_loop(workspace_roots, opts, r, s) | 54 | ra_lsp_server::main_loop(workspace_roots, opts, r, s) |
55 | })?; | 55 | })?; |
diff --git a/crates/ra_lsp_server/src/main_loop.rs b/crates/ra_lsp_server/src/main_loop.rs index 6080a3a4e..090fb9b1b 100644 --- a/crates/ra_lsp_server/src/main_loop.rs +++ b/crates/ra_lsp_server/src/main_loop.rs | |||
@@ -384,7 +384,7 @@ fn on_notification( | |||
384 | if let Some(file_id) = | 384 | if let Some(file_id) = |
385 | state.vfs.write().add_file_overlay(&path, params.text_document.text) | 385 | state.vfs.write().add_file_overlay(&path, params.text_document.text) |
386 | { | 386 | { |
387 | subs.add_sub(FileId(file_id.0.into())); | 387 | subs.add_sub(FileId(file_id.0)); |
388 | } | 388 | } |
389 | return Ok(()); | 389 | return Ok(()); |
390 | } | 390 | } |
@@ -406,7 +406,7 @@ fn on_notification( | |||
406 | let uri = params.text_document.uri; | 406 | let uri = params.text_document.uri; |
407 | let path = uri.to_file_path().map_err(|()| format_err!("invalid uri: {}", uri))?; | 407 | let path = uri.to_file_path().map_err(|()| format_err!("invalid uri: {}", uri))?; |
408 | if let Some(file_id) = state.vfs.write().remove_file_overlay(path.as_path()) { | 408 | if let Some(file_id) = state.vfs.write().remove_file_overlay(path.as_path()) { |
409 | subs.remove_sub(FileId(file_id.0.into())); | 409 | subs.remove_sub(FileId(file_id.0)); |
410 | } | 410 | } |
411 | let params = req::PublishDiagnosticsParams { uri, diagnostics: Vec::new() }; | 411 | let params = req::PublishDiagnosticsParams { uri, diagnostics: Vec::new() }; |
412 | let not = RawNotification::new::<req::PublishDiagnostics>(¶ms); | 412 | let not = RawNotification::new::<req::PublishDiagnostics>(¶ms); |
diff --git a/crates/ra_lsp_server/src/world.rs b/crates/ra_lsp_server/src/world.rs index e0d2f6306..cd8df4fdb 100644 --- a/crates/ra_lsp_server/src/world.rs +++ b/crates/ra_lsp_server/src/world.rs | |||
@@ -60,14 +60,14 @@ impl WorldState { | |||
60 | for r in vfs_roots { | 60 | for r in vfs_roots { |
61 | let vfs_root_path = vfs.root2path(r); | 61 | let vfs_root_path = vfs.root2path(r); |
62 | let is_local = folder_roots.iter().any(|it| vfs_root_path.starts_with(it)); | 62 | let is_local = folder_roots.iter().any(|it| vfs_root_path.starts_with(it)); |
63 | change.add_root(SourceRootId(r.0.into()), is_local); | 63 | change.add_root(SourceRootId(r.0), is_local); |
64 | } | 64 | } |
65 | 65 | ||
66 | // Create crate graph from all the workspaces | 66 | // Create crate graph from all the workspaces |
67 | let mut crate_graph = CrateGraph::default(); | 67 | let mut crate_graph = CrateGraph::default(); |
68 | let mut load = |path: &std::path::Path| { | 68 | let mut load = |path: &std::path::Path| { |
69 | let vfs_file = vfs.load(path); | 69 | let vfs_file = vfs.load(path); |
70 | vfs_file.map(|f| FileId(f.0.into())) | 70 | vfs_file.map(|f| FileId(f.0)) |
71 | }; | 71 | }; |
72 | for ws in workspaces.iter() { | 72 | for ws in workspaces.iter() { |
73 | crate_graph.extend(ws.to_crate_graph(&mut load)); | 73 | crate_graph.extend(ws.to_crate_graph(&mut load)); |
@@ -105,29 +105,24 @@ impl WorldState { | |||
105 | if is_local { | 105 | if is_local { |
106 | self.roots_to_scan -= 1; | 106 | self.roots_to_scan -= 1; |
107 | for (file, path, text) in files { | 107 | for (file, path, text) in files { |
108 | change.add_file( | 108 | change.add_file(SourceRootId(root.0), FileId(file.0), path, text); |
109 | SourceRootId(root.0.into()), | ||
110 | FileId(file.0.into()), | ||
111 | path, | ||
112 | text, | ||
113 | ); | ||
114 | } | 109 | } |
115 | } else { | 110 | } else { |
116 | let files = files | 111 | let files = files |
117 | .into_iter() | 112 | .into_iter() |
118 | .map(|(vfsfile, path, text)| (FileId(vfsfile.0.into()), path, text)) | 113 | .map(|(vfsfile, path, text)| (FileId(vfsfile.0), path, text)) |
119 | .collect(); | 114 | .collect(); |
120 | libs.push((SourceRootId(root.0.into()), files)); | 115 | libs.push((SourceRootId(root.0), files)); |
121 | } | 116 | } |
122 | } | 117 | } |
123 | VfsChange::AddFile { root, file, path, text } => { | 118 | VfsChange::AddFile { root, file, path, text } => { |
124 | change.add_file(SourceRootId(root.0.into()), FileId(file.0.into()), path, text); | 119 | change.add_file(SourceRootId(root.0), FileId(file.0), path, text); |
125 | } | 120 | } |
126 | VfsChange::RemoveFile { root, file, path } => { | 121 | VfsChange::RemoveFile { root, file, path } => { |
127 | change.remove_file(SourceRootId(root.0.into()), FileId(file.0.into()), path) | 122 | change.remove_file(SourceRootId(root.0), FileId(file.0), path) |
128 | } | 123 | } |
129 | VfsChange::ChangeFile { file, text } => { | 124 | VfsChange::ChangeFile { file, text } => { |
130 | change.change_file(FileId(file.0.into()), text); | 125 | change.change_file(FileId(file.0), text); |
131 | } | 126 | } |
132 | } | 127 | } |
133 | } | 128 | } |
@@ -178,18 +173,18 @@ impl WorldSnapshot { | |||
178 | message: "Rust file outside current workspace is not supported yet.".to_string(), | 173 | message: "Rust file outside current workspace is not supported yet.".to_string(), |
179 | }) | 174 | }) |
180 | })?; | 175 | })?; |
181 | Ok(FileId(file.0.into())) | 176 | Ok(FileId(file.0)) |
182 | } | 177 | } |
183 | 178 | ||
184 | pub fn file_id_to_uri(&self, id: FileId) -> Result<Url> { | 179 | pub fn file_id_to_uri(&self, id: FileId) -> Result<Url> { |
185 | let path = self.vfs.read().file2path(VfsFile(id.0.into())); | 180 | let path = self.vfs.read().file2path(VfsFile(id.0)); |
186 | let url = Url::from_file_path(&path) | 181 | let url = Url::from_file_path(&path) |
187 | .map_err(|_| format_err!("can't convert path to url: {}", path.display()))?; | 182 | .map_err(|_| format_err!("can't convert path to url: {}", path.display()))?; |
188 | Ok(url) | 183 | Ok(url) |
189 | } | 184 | } |
190 | 185 | ||
191 | pub fn path_to_uri(&self, root: SourceRootId, path: &RelativePathBuf) -> Result<Url> { | 186 | pub fn path_to_uri(&self, root: SourceRootId, path: &RelativePathBuf) -> Result<Url> { |
192 | let base = self.vfs.read().root2path(VfsRoot(root.0.into())); | 187 | let base = self.vfs.read().root2path(VfsRoot(root.0)); |
193 | let path = path.to_path(base); | 188 | let path = path.to_path(base); |
194 | let url = Url::from_file_path(&path) | 189 | let url = Url::from_file_path(&path) |
195 | .map_err(|_| format_err!("can't convert path to url: {}", path.display()))?; | 190 | .map_err(|_| format_err!("can't convert path to url: {}", path.display()))?; |
@@ -212,7 +207,7 @@ impl WorldSnapshot { | |||
212 | } | 207 | } |
213 | 208 | ||
214 | pub fn workspace_root_for(&self, file_id: FileId) -> Option<&Path> { | 209 | pub fn workspace_root_for(&self, file_id: FileId) -> Option<&Path> { |
215 | let path = self.vfs.read().file2path(VfsFile(file_id.0.into())); | 210 | let path = self.vfs.read().file2path(VfsFile(file_id.0)); |
216 | self.workspaces.iter().find_map(|ws| ws.workspace_root_for(&path)) | 211 | self.workspaces.iter().find_map(|ws| ws.workspace_root_for(&path)) |
217 | } | 212 | } |
218 | } | 213 | } |
diff --git a/crates/ra_lsp_server/tests/heavy_tests/support.rs b/crates/ra_lsp_server/tests/heavy_tests/support.rs index f952a03a3..75912afdd 100644 --- a/crates/ra_lsp_server/tests/heavy_tests/support.rs +++ b/crates/ra_lsp_server/tests/heavy_tests/support.rs | |||
@@ -94,14 +94,9 @@ impl Server { | |||
94 | let worker = Worker::<RawMessage, RawMessage>::spawn( | 94 | let worker = Worker::<RawMessage, RawMessage>::spawn( |
95 | "test server", | 95 | "test server", |
96 | 128, | 96 | 128, |
97 | move |mut msg_receiver, mut msg_sender| { | 97 | move |msg_receiver, msg_sender| { |
98 | main_loop( | 98 | main_loop(roots, InitializationOptions::default(), &msg_receiver, &msg_sender) |
99 | roots, | 99 | .unwrap() |
100 | InitializationOptions::default(), | ||
101 | &mut msg_receiver, | ||
102 | &mut msg_sender, | ||
103 | ) | ||
104 | .unwrap() | ||
105 | }, | 100 | }, |
106 | ); | 101 | ); |
107 | let res = Server { req_id: Cell::new(1), dir, messages: Default::default(), worker }; | 102 | let res = Server { req_id: Cell::new(1), dir, messages: Default::default(), worker }; |
@@ -141,15 +136,14 @@ impl Server { | |||
141 | R::Params: Serialize, | 136 | R::Params: Serialize, |
142 | { | 137 | { |
143 | let actual = self.send_request::<R>(params); | 138 | let actual = self.send_request::<R>(params); |
144 | match find_mismatch(&expected_resp, &actual) { | 139 | if let Some((expected_part, actual_part)) = find_mismatch(&expected_resp, &actual) { |
145 | Some((expected_part, actual_part)) => panic!( | 140 | panic!( |
146 | "JSON mismatch\nExpected:\n{}\nWas:\n{}\nExpected part:\n{}\nActual part:\n{}\n", | 141 | "JSON mismatch\nExpected:\n{}\nWas:\n{}\nExpected part:\n{}\nActual part:\n{}\n", |
147 | to_string_pretty(&expected_resp).unwrap(), | 142 | to_string_pretty(&expected_resp).unwrap(), |
148 | to_string_pretty(&actual).unwrap(), | 143 | to_string_pretty(&actual).unwrap(), |
149 | to_string_pretty(expected_part).unwrap(), | 144 | to_string_pretty(expected_part).unwrap(), |
150 | to_string_pretty(actual_part).unwrap(), | 145 | to_string_pretty(actual_part).unwrap(), |
151 | ), | 146 | ); |
152 | None => {} | ||
153 | } | 147 | } |
154 | } | 148 | } |
155 | 149 | ||