From dda8979cb18a2477ceb2ba0e84e0342a7fc516bd Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Tue, 14 May 2024 22:42:35 +0100 Subject: [PATCH] fix(lsp): show reference code lens on methods (#23804) --- cli/lsp/code_lens.rs | 1 + tests/integration/lsp_tests.rs | 111 ++++++++++++++++++++++++++++++++- tests/util/server/src/lsp.rs | 5 +- 3 files changed, 113 insertions(+), 4 deletions(-) diff --git a/cli/lsp/code_lens.rs b/cli/lsp/code_lens.rs index 8300546b43..d7e9e70527 100644 --- a/cli/lsp/code_lens.rs +++ b/cli/lsp/code_lens.rs @@ -505,6 +505,7 @@ pub fn collect_tsc( )); } tsc::ScriptElementKind::LocalFunctionElement + | tsc::ScriptElementKind::MemberFunctionElement | tsc::ScriptElementKind::MemberGetAccessorElement | tsc::ScriptElementKind::MemberSetAccessorElement | tsc::ScriptElementKind::ConstructorImplementationElement diff --git a/tests/integration/lsp_tests.rs b/tests/integration/lsp_tests.rs index d254436233..84f334992f 100644 --- a/tests/integration/lsp_tests.rs +++ b/tests/integration/lsp_tests.rs @@ -3509,10 +3509,18 @@ fn lsp_semantic_tokens() { } #[test] -fn lsp_code_lens() { +fn lsp_code_lens_references() { let context = TestContextBuilder::new().use_temp_cwd().build(); let mut client = context.new_lsp_command().build(); client.initialize_default(); + client.change_configuration(json!({ + "deno": { + "enable": true, + "codeLens": { + "references": true, + } + }, + })); client.did_open(json!({ "textDocument": { "uri": "file:///a/file.ts", @@ -3567,6 +3575,24 @@ fn lsp_code_lens() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 3, "character": 2 }, + "end": { "line": 3, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } + }, { + "range": { + "start": { "line": 7, "character": 2 }, + "end": { "line": 7, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }]) ); let res = client.write_request( @@ -3684,10 +3710,19 @@ fn lsp_code_lens() { } #[test] -fn lsp_code_lens_impl() { +fn lsp_code_lens_implementations() { let context = TestContextBuilder::new().use_temp_cwd().build(); let mut client = context.new_lsp_command().build(); client.initialize_default(); + client.change_configuration(json!({ + "deno": { + "enable": true, + "codeLens": { + "implementations": true, + "references": true, + } + }, + })); client.did_open( json!({ "textDocument": { @@ -3726,6 +3761,15 @@ fn lsp_code_lens_impl() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 1, "character": 2 }, + "end": { "line": 1, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }, { "range": { "start": { "line": 4, "character": 6 }, @@ -3735,6 +3779,15 @@ fn lsp_code_lens_impl() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 5, "character": 2 }, + "end": { "line": 5, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }, { "range": { "start": { "line": 10, "character": 10 }, @@ -4130,6 +4183,15 @@ fn lsp_code_lens_non_doc_nav_tree() { let context = TestContextBuilder::new().use_temp_cwd().build(); let mut client = context.new_lsp_command().build(); client.initialize_default(); + client.change_configuration(json!({ + "deno": { + "enable": true, + "codeLens": { + "implementations": true, + "references": true, + } + }, + })); client.did_open(json!({ "textDocument": { "uri": "file:///a/file.ts", @@ -4188,6 +4250,15 @@ fn lsp_nav_tree_updates() { let context = TestContextBuilder::new().use_temp_cwd().build(); let mut client = context.new_lsp_command().build(); client.initialize_default(); + client.change_configuration(json!({ + "deno": { + "enable": true, + "codeLens": { + "implementations": true, + "references": true, + } + }, + })); client.did_open( json!({ "textDocument": { @@ -4226,6 +4297,15 @@ fn lsp_nav_tree_updates() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 1, "character": 2 }, + "end": { "line": 1, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }, { "range": { "start": { "line": 4, "character": 6 }, @@ -4235,6 +4315,15 @@ fn lsp_nav_tree_updates() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 5, "character": 2 }, + "end": { "line": 5, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }, { "range": { "start": { "line": 10, "character": 10 }, @@ -4310,6 +4399,15 @@ fn lsp_nav_tree_updates() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 1, "character": 2 }, + "end": { "line": 1, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }, { "range": { "start": { "line": 4, "character": 6 }, @@ -4319,6 +4417,15 @@ fn lsp_nav_tree_updates() { "specifier": "file:///a/file.ts", "source": "references" } + }, { + "range": { + "start": { "line": 5, "character": 2 }, + "end": { "line": 5, "character": 3 } + }, + "data": { + "specifier": "file:///a/file.ts", + "source": "references" + } }]) ); client.shutdown(); diff --git a/tests/util/server/src/lsp.rs b/tests/util/server/src/lsp.rs index f91ea56341..68cdc3cd16 100644 --- a/tests/util/server/src/lsp.rs +++ b/tests/util/server/src/lsp.rs @@ -707,8 +707,9 @@ impl LspClient { "cache": null, "certificateStores": null, "codeLens": { - "implementations": true, - "references": true, + "implementations": false, + "references": false, + "referencesAllFunctions": false, "test": true, }, "config": null,