From 03ea6bcbffd4ae3ac5289ff7d434450c219186a8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 2 Jan 2019 23:35:51 +0300 Subject: use LocalPtr in navigation target --- crates/ra_analysis/src/imp.rs | 3 +++ crates/ra_analysis/src/lib.rs | 5 ++++- crates/ra_analysis/tests/tests.rs | 10 +++++----- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'crates/ra_analysis') diff --git a/crates/ra_analysis/src/imp.rs b/crates/ra_analysis/src/imp.rs index 7604c7def..b812c3441 100644 --- a/crates/ra_analysis/src/imp.rs +++ b/crates/ra_analysis/src/imp.rs @@ -121,6 +121,7 @@ impl db::RootDatabase { name: decl_name.text(), range: decl_name.syntax().range(), kind: MODULE, + ptr: None, }]) } /// Returns `Vec` for the same reason as `parent_module` @@ -158,6 +159,7 @@ impl db::RootDatabase { name: entry.name().to_string().into(), range: entry.ptr().range(), kind: NAME, + ptr: None, }); return Ok(Some(rr)); }; @@ -185,6 +187,7 @@ impl db::RootDatabase { name, range: TextRange::offset_len(0.into(), 0.into()), kind: MODULE, + ptr: None, }; rr.resolves_to.push(symbol); return Ok(Some(rr)); diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 69d6754d6..343fd28bb 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs @@ -41,7 +41,7 @@ pub use ra_editor::{ pub use hir::FnSignatureInfo; pub use ra_db::{ - Canceled, Cancelable, FilePosition, FileRange, + Canceled, Cancelable, FilePosition, FileRange, LocalSyntaxPtr, CrateGraph, CrateId, SourceRootId, FileId, SyntaxDatabase, FilesDatabase }; @@ -225,6 +225,8 @@ pub struct NavigationTarget { name: SmolStr, kind: SyntaxKind, range: TextRange, + // Should be DefId ideally + ptr: Option, } impl NavigationTarget { @@ -234,6 +236,7 @@ impl NavigationTarget { kind: symbol.ptr.kind(), file_id, range: symbol.ptr.range(), + ptr: Some(symbol.ptr.clone()), } } pub fn name(&self) -> &SmolStr { diff --git a/crates/ra_analysis/tests/tests.rs b/crates/ra_analysis/tests/tests.rs index 3045c2e78..bcf29d29c 100644 --- a/crates/ra_analysis/tests/tests.rs +++ b/crates/ra_analysis/tests/tests.rs @@ -25,7 +25,7 @@ fn approximate_resolve_works_in_items() { assert_eq_dbg( r#"ReferenceResolution { reference_range: [23; 26), - resolves_to: [NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "Foo", node_range: [0; 11), kind: STRUCT_DEF } }] + resolves_to: [NavigationTarget { file_id: FileId(1), name: "Foo", kind: STRUCT_DEF, range: [0; 11), ptr: Some(LocalSyntaxPtr { range: [0; 11), kind: STRUCT_DEF }) }] }"#, &symbols, ); @@ -46,7 +46,7 @@ fn test_resolve_module() { assert_eq_dbg( r#"ReferenceResolution { reference_range: [4; 7), - resolves_to: [NavigationTarget { file_id: FileId(2), symbol: FileSymbol { name: "foo", node_range: [0; 0), kind: MODULE } }] + resolves_to: [NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }] }"#, &symbols, ); @@ -64,7 +64,7 @@ fn test_resolve_module() { assert_eq_dbg( r#"ReferenceResolution { reference_range: [4; 7), - resolves_to: [NavigationTarget { file_id: FileId(2), symbol: FileSymbol { name: "foo", node_range: [0; 0), kind: MODULE } }] + resolves_to: [NavigationTarget { file_id: FileId(2), name: "foo", kind: MODULE, range: [0; 0), ptr: None }] }"#, &symbols, ); @@ -107,7 +107,7 @@ fn test_resolve_parent_module() { ); let symbols = analysis.parent_module(pos).unwrap(); assert_eq_dbg( - r#"[NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "foo", node_range: [4; 7), kind: MODULE } }]"#, + r#"[NavigationTarget { file_id: FileId(1), name: "foo", kind: MODULE, range: [4; 7), ptr: None }]"#, &symbols, ); } @@ -126,7 +126,7 @@ fn test_resolve_parent_module_for_inline() { ); let symbols = analysis.parent_module(pos).unwrap(); assert_eq_dbg( - r#"[NavigationTarget { file_id: FileId(1), symbol: FileSymbol { name: "bar", node_range: [18; 21), kind: MODULE } }]"#, + r#"[NavigationTarget { file_id: FileId(1), name: "bar", kind: MODULE, range: [18; 21), ptr: None }]"#, &symbols, ); } -- cgit v1.2.3