Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

Commit 2b57851

Browse files
authored
Merge pull request #936 from dgriffen/goto-implementation
Switch to standard implementation method.
2 parents 4e4cf43 + 42c1c75 commit 2b57851

File tree

7 files changed

+17
-25
lines changed

7 files changed

+17
-25
lines changed

Cargo.lock

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ env_logger = "0.5"
1717
failure = "0.1.1"
1818
itertools = "0.7.3"
1919
jsonrpc-core = "8.0.1"
20-
languageserver-types = "0.44"
20+
languageserver-types = "0.45"
2121
lazy_static = "1"
2222
log = "0.4"
2323
num_cpus = "1"

src/actions/requests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ pub use lsp_data::request::{
3535
DocumentSymbol as Symbols,
3636
HoverRequest as Hover,
3737
GotoDefinition as Definition,
38+
GotoImplementation as Implementation,
3839
References,
3940
Completion,
4041
DocumentHighlightRequest as DocumentHighlight,
@@ -46,7 +47,6 @@ pub use lsp_data::request::{
4647
ResolveCompletionItem as ResolveCompletion,
4748
CodeLensRequest,
4849
};
49-
pub use lsp_data::FindImpls;
5050

5151
use std::collections::HashMap;
5252
use std::path::Path;
@@ -174,7 +174,7 @@ impl RequestAction for Hover {
174174
}
175175
}
176176

177-
impl RequestAction for FindImpls {
177+
impl RequestAction for Implementation {
178178
type Response = Vec<Location>;
179179

180180
fn fallback_response() -> Result<Self::Response, ResponseError> {

src/lsp_data.rs

-12
Original file line numberDiff line numberDiff line change
@@ -350,18 +350,6 @@ impl LSPNotification for BeginBuild {
350350
const METHOD: &'static str = "rustDocument/beginBuild";
351351
}
352352

353-
/* ------------------ Custom JSON-RPC requests ---------------- */
354-
355-
/// Find all the implementations of a given trait.
356-
#[derive(Debug)]
357-
pub enum FindImpls { }
358-
359-
impl LSPRequest for FindImpls {
360-
type Params = TextDocumentPositionParams;
361-
type Result = Vec<Location>;
362-
const METHOD: &'static str = "rustDocument/implementations";
363-
}
364-
365353
/* ---------- Temporary LSP type until window/progress proposal is done --------- */
366354

367355
// Notification from server to client for build progress.

src/server/dispatch.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ define_dispatch_request_enum!(
9595
WorkspaceSymbol,
9696
Symbols,
9797
Hover,
98-
FindImpls,
98+
Implementation,
9999
DocumentHighlight,
100100
Rename,
101101
CodeAction,

src/server/mod.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ pub use ls_types::notification::Exit as ExitNotification;
2020
pub use ls_types::request::Initialize as InitializeRequest;
2121
pub use ls_types::request::Shutdown as ShutdownRequest;
2222
use ls_types::{
23-
CompletionOptions, ExecuteCommandOptions, InitializeParams, InitializeResult,
24-
ServerCapabilities, TextDocumentSyncCapability, TextDocumentSyncKind, CodeLensOptions
23+
CompletionOptions, ExecuteCommandOptions, ImplementationProviderCapability, InitializeParams, InitializeResult,
24+
ServerCapabilities, TextDocumentSyncCapability, TextDocumentSyncKind, CodeLensOptions,
2525
};
2626
use lsp_data;
2727
use lsp_data::{InitializationOptions, LSPNotification, LSPRequest};
@@ -270,7 +270,7 @@ impl<O: Output> LsService<O> {
270270
requests::Rename,
271271
requests::CodeAction,
272272
requests::DocumentHighlight,
273-
requests::FindImpls,
273+
requests::Implementation,
274274
requests::Symbols,
275275
requests::Hover,
276276
requests::WorkspaceSymbol,
@@ -360,6 +360,8 @@ fn server_caps(ctx: &ActionContext) -> ServerCapabilities {
360360
trigger_characters: Some(vec![".".to_string(), ":".to_string()]),
361361
}),
362362
definition_provider: Some(true),
363+
type_definition_provider: None,
364+
implementation_provider: Some(ImplementationProviderCapability::Simple(true)),
363365
references_provider: Some(true),
364366
document_highlight_provider: Some(true),
365367
document_symbol_provider: Some(true),
@@ -376,6 +378,8 @@ fn server_caps(ctx: &ActionContext) -> ServerCapabilities {
376378
],
377379
}),
378380
rename_provider: Some(true),
381+
color_provider: None,
382+
379383
// These are supported if the `unstable_features` option is set.
380384
// We'll update these capabilities dynamically when we get config
381385
// info from the client.

src/test/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1148,14 +1148,14 @@ fn test_find_impls() {
11481148

11491149
let messages = vec![
11501150
initialize(0, root_path.as_os_str().to_str().map(|x| x.to_owned())).to_string(),
1151-
request::<requests::FindImpls>(
1151+
request::<requests::Implementation>(
11521152
1,
11531153
TextDocumentPositionParams {
11541154
text_document: TextDocumentIdentifier::new(url.clone()),
11551155
position: env.cache.mk_ls_position(src(&source_file_path, 13, "Bar")),
11561156
},
11571157
).to_string(),
1158-
request::<requests::FindImpls>(
1158+
request::<requests::Implementation>(
11591159
2,
11601160
TextDocumentPositionParams {
11611161
text_document: TextDocumentIdentifier::new(url.clone()),
@@ -1164,7 +1164,7 @@ fn test_find_impls() {
11641164
},
11651165
).to_string(),
11661166
// FIXME Does not work on Travis
1167-
// request::<requests::FindImpls>(
1167+
// request::<requests::Implementation>(
11681168
// 3,
11691169
// TextDocumentPositionParams {
11701170
// text_document: TextDocumentIdentifier::new(url),

0 commit comments

Comments
 (0)