diff options
Diffstat (limited to 'crates/ide')
-rw-r--r-- | crates/ide/Cargo.toml | 23 | ||||
-rw-r--r-- | crates/ide/src/completion.rs | 2 | ||||
-rw-r--r-- | crates/ide/src/runnables.rs | 26 |
3 files changed, 36 insertions, 15 deletions
diff --git a/crates/ide/Cargo.toml b/crates/ide/Cargo.toml index 9ecf43e5a..e61c276df 100644 --- a/crates/ide/Cargo.toml +++ b/crates/ide/Cargo.toml | |||
@@ -1,6 +1,7 @@ | |||
1 | [package] | 1 | [package] |
2 | name = "ide" | 2 | name = "ide" |
3 | version = "0.0.0" | 3 | version = "0.0.0" |
4 | description = "TBD" | ||
4 | license = "MIT OR Apache-2.0" | 5 | license = "MIT OR Apache-2.0" |
5 | authors = ["rust-analyzer developers"] | 6 | authors = ["rust-analyzer developers"] |
6 | edition = "2018" | 7 | edition = "2018" |
@@ -18,20 +19,20 @@ oorandom = "11.1.2" | |||
18 | pulldown-cmark-to-cmark = "5.0.0" | 19 | pulldown-cmark-to-cmark = "5.0.0" |
19 | pulldown-cmark = {version = "0.7.2", default-features = false} | 20 | pulldown-cmark = {version = "0.7.2", default-features = false} |
20 | 21 | ||
21 | stdx = { path = "../stdx" } | 22 | stdx = { path = "../stdx", version = "0.0.0" } |
22 | syntax = { path = "../syntax" } | 23 | syntax = { path = "../syntax", version = "0.0.0" } |
23 | text_edit = { path = "../text_edit" } | 24 | text_edit = { path = "../text_edit", version = "0.0.0" } |
24 | base_db = { path = "../base_db" } | 25 | base_db = { path = "../base_db", version = "0.0.0" } |
25 | ide_db = { path = "../ide_db" } | 26 | ide_db = { path = "../ide_db", version = "0.0.0" } |
26 | cfg = { path = "../cfg" } | 27 | cfg = { path = "../cfg", version = "0.0.0" } |
27 | profile = { path = "../profile" } | 28 | profile = { path = "../profile", version = "0.0.0" } |
28 | test_utils = { path = "../test_utils" } | 29 | test_utils = { path = "../test_utils", version = "0.0.0" } |
29 | assists = { path = "../assists" } | 30 | assists = { path = "../assists", version = "0.0.0" } |
30 | ssr = { path = "../ssr" } | 31 | ssr = { path = "../ssr", version = "0.0.0" } |
31 | 32 | ||
32 | # ide should depend only on the top-level `hir` package. if you need | 33 | # ide should depend only on the top-level `hir` package. if you need |
33 | # something from some `hir_xxx` subpackage, reexport the API via `hir`. | 34 | # something from some `hir_xxx` subpackage, reexport the API via `hir`. |
34 | hir = { path = "../hir" } | 35 | hir = { path = "../hir", version = "0.0.0" } |
35 | 36 | ||
36 | [dev-dependencies] | 37 | [dev-dependencies] |
37 | expect-test = "0.1" | 38 | expect-test = "0.1" |
diff --git a/crates/ide/src/completion.rs b/crates/ide/src/completion.rs index 25e580d80..33bed6991 100644 --- a/crates/ide/src/completion.rs +++ b/crates/ide/src/completion.rs | |||
@@ -92,7 +92,7 @@ pub use crate::completion::{ | |||
92 | /// already present, it should give all possible variants for the identifier at | 92 | /// already present, it should give all possible variants for the identifier at |
93 | /// the caret. In other words, for | 93 | /// the caret. In other words, for |
94 | /// | 94 | /// |
95 | /// ```no-run | 95 | /// ```no_run |
96 | /// fn f() { | 96 | /// fn f() { |
97 | /// let foo = 92; | 97 | /// let foo = 92; |
98 | /// let _ = bar<|> | 98 | /// let _ = bar<|> |
diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs index 4139f329e..dd59d9e70 100644 --- a/crates/ide/src/runnables.rs +++ b/crates/ide/src/runnables.rs | |||
@@ -160,7 +160,7 @@ fn runnable_fn( | |||
160 | RunnableKind::Test { test_id, attr } | 160 | RunnableKind::Test { test_id, attr } |
161 | } else if fn_def.has_atom_attr("bench") { | 161 | } else if fn_def.has_atom_attr("bench") { |
162 | RunnableKind::Bench { test_id } | 162 | RunnableKind::Bench { test_id } |
163 | } else if has_doc_test(&fn_def) { | 163 | } else if has_runnable_doc_test(&fn_def) { |
164 | RunnableKind::DocTest { test_id } | 164 | RunnableKind::DocTest { test_id } |
165 | } else { | 165 | } else { |
166 | return None; | 166 | return None; |
@@ -211,8 +211,13 @@ fn has_test_related_attribute(fn_def: &ast::Fn) -> bool { | |||
211 | .any(|attribute_text| attribute_text.contains("test")) | 211 | .any(|attribute_text| attribute_text.contains("test")) |
212 | } | 212 | } |
213 | 213 | ||
214 | fn has_doc_test(fn_def: &ast::Fn) -> bool { | 214 | fn has_runnable_doc_test(fn_def: &ast::Fn) -> bool { |
215 | fn_def.doc_comment_text().map_or(false, |comment| comment.contains("```")) | 215 | fn_def.doc_comment_text().map_or(false, |comments_text| { |
216 | comments_text.contains("```") | ||
217 | && !comments_text.contains("```ignore") | ||
218 | && !comments_text.contains("```no_run") | ||
219 | && !comments_text.contains("```compile_fail") | ||
220 | }) | ||
216 | } | 221 | } |
217 | 222 | ||
218 | fn runnable_mod( | 223 | fn runnable_mod( |
@@ -417,6 +422,21 @@ fn main() {} | |||
417 | /// let x = 5; | 422 | /// let x = 5; |
418 | /// ``` | 423 | /// ``` |
419 | fn foo() {} | 424 | fn foo() {} |
425 | |||
426 | /// ```no_run | ||
427 | /// let z = 55; | ||
428 | /// ``` | ||
429 | fn should_have_no_runnable() {} | ||
430 | |||
431 | /// ```ignore | ||
432 | /// let z = 55; | ||
433 | /// ``` | ||
434 | fn should_have_no_runnable_2() {} | ||
435 | |||
436 | /// ```compile_fail | ||
437 | /// let z = 55; | ||
438 | /// ``` | ||
439 | fn should_have_no_runnable_3() {} | ||
420 | "#, | 440 | "#, |
421 | &[&BIN, &DOCTEST], | 441 | &[&BIN, &DOCTEST], |
422 | expect![[r#" | 442 | expect![[r#" |