about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKarlWithK <jocelinc60@outlook.com>2022-02-17 20:27:37 -0600
committerKarlWithK <jocelinc60@outlook.com>2022-02-17 20:27:37 -0600
commit5f3327a6b8925791ecdd9dbecb1bf1537c3ef9fc (patch)
tree65433d4b74492fa495c85cf4cfadebd207707b5e
parent89faff7477e904f6820990f130a3aed72c1d7e6b (diff)
downloadrust-5f3327a6b8925791ecdd9dbecb1bf1537c3ef9fc.tar.gz
rust-5f3327a6b8925791ecdd9dbecb1bf1537c3ef9fc.zip
Correctly fix formatting doc tests with generics
Before the doc_test would be outputted like this:
"Foo<T, U>::t"
However, this would cause shells with shell redirection. I've changed it
so when generics are involved we simply wrap the expression under escape
chanters as so:
"\"Foo<T, U>::t\""

Note:
At the cost of adding this, I had to allocate a new string via
format!{}. However, I argue this is alright as this for just for
outputting the name of the doc test.

The following tests have been changed:
runnables::tests::doc_test_type_params
runnables::tests::test_doc_runnables_impl_mod
runnables::tests::test_runnables_doc_test_in_impl
-rw-r--r--crates/ide/src/runnables.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs
index 67062654d6e..39af47ebc60 100644
--- a/crates/ide/src/runnables.rs
+++ b/crates/ide/src/runnables.rs
@@ -426,8 +426,8 @@ fn module_def_doctest(db: &RootDatabase, def: Definition) -> Option<Runnable> {
                             ty_args.format_with(", ", |ty, cb| cb(&ty.display(db)))
                         );
                     }
-                    format_to!(path, "::{}", def_name);
-                    return Some(path);
+                    format_to!(path, "::{}\"", def_name);
+                    return Some(format!("\"{}", path));
                 }
             }
         }
@@ -966,7 +966,7 @@ impl Data {
                         },
                         kind: DocTest {
                             test_id: Path(
-                                "Data::foo",
+                                "\"Data::foo\"",
                             ),
                         },
                         cfg: None,
@@ -1360,7 +1360,7 @@ impl Foo {
                         },
                         kind: DocTest {
                             test_id: Path(
-                                "foo::Foo::foo",
+                                "\"foo::Foo::foo\"",
                             ),
                         },
                         cfg: None,
@@ -2066,7 +2066,7 @@ impl<T, U> Foo<T, U> {
                         },
                         kind: DocTest {
                             test_id: Path(
-                                "Foo<T, U>::t",
+                                "\"Foo<T, U>::t\"",
                             ),
                         },
                         cfg: None,