diff options
author | Lukas Wirth <[email protected]> | 2020-12-25 10:22:11 +0000 |
---|---|---|
committer | Lukas Wirth <[email protected]> | 2020-12-25 10:22:11 +0000 |
commit | 3ab4f3adbdc037f615d1abb25149bfe65c8753ed (patch) | |
tree | 0ca08410c9a5d168da4518d64168d2cc2b7edba8 | |
parent | e1acb0ca5ca2162be068fd6a07f7cc4ae171ed81 (diff) |
Don't split path separators apart in doctest runnables
-rw-r--r-- | crates/ide/src/runnables.rs | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs index 2f2b99130..891183266 100644 --- a/crates/ide/src/runnables.rs +++ b/crates/ide/src/runnables.rs | |||
@@ -193,7 +193,7 @@ fn module_def_doctest(sema: &Semantics<RootDatabase>, def: hir::ModuleDef) -> Op | |||
193 | if let hir::AssocItemContainer::Impl(imp) = assoc_def.container(sema.db) { | 193 | if let hir::AssocItemContainer::Impl(imp) = assoc_def.container(sema.db) { |
194 | if let Some(adt) = imp.target_ty(sema.db).as_adt() { | 194 | if let Some(adt) = imp.target_ty(sema.db).as_adt() { |
195 | let name = adt.name(sema.db).to_string(); | 195 | let name = adt.name(sema.db).to_string(); |
196 | let idx = path.rfind(':').unwrap_or(0); | 196 | let idx = path.rfind(':').map_or(0, |idx| idx + 1); |
197 | let (prefix, suffix) = path.split_at(idx); | 197 | let (prefix, suffix) = path.split_at(idx); |
198 | return format!("{}{}::{}", prefix, name, suffix); | 198 | return format!("{}{}::{}", prefix, name, suffix); |
199 | } | 199 | } |
@@ -931,4 +931,42 @@ mod test_mod { | |||
931 | "#]], | 931 | "#]], |
932 | ); | 932 | ); |
933 | } | 933 | } |
934 | |||
935 | #[test] | ||
936 | fn test_doc_runnables_impl_mod() { | ||
937 | check( | ||
938 | r#" | ||
939 | //- /lib.rs | ||
940 | mod foo; | ||
941 | //- /foo.rs | ||
942 | struct Foo;<|> | ||
943 | impl Foo { | ||
944 | /// ``` | ||
945 | /// let x = 5; | ||
946 | /// ``` | ||
947 | fn foo() {} | ||
948 | } | ||
949 | "#, | ||
950 | &[&DOCTEST], | ||
951 | expect![[r#" | ||
952 | [ | ||
953 | Runnable { | ||
954 | nav: NavigationTarget { | ||
955 | file_id: FileId( | ||
956 | 1, | ||
957 | ), | ||
958 | full_range: 27..81, | ||
959 | name: "foo", | ||
960 | }, | ||
961 | kind: DocTest { | ||
962 | test_id: Path( | ||
963 | "foo::Foo::foo", | ||
964 | ), | ||
965 | }, | ||
966 | cfg: None, | ||
967 | }, | ||
968 | ] | ||
969 | "#]], | ||
970 | ); | ||
971 | } | ||
934 | } | 972 | } |