From 2ffcfeb82178384ceca818115d69c12a7257f712 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Tue, 22 Aug 2017 13:48:31 +0200 Subject: Add compile_fail documentation --- src/doc/rustdoc/src/documentation-tests.md | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/doc/rustdoc/src/documentation-tests.md b/src/doc/rustdoc/src/documentation-tests.md index 4f7736d8df6..348fcd3b769 100644 --- a/src/doc/rustdoc/src/documentation-tests.md +++ b/src/doc/rustdoc/src/documentation-tests.md @@ -5,7 +5,7 @@ that your tests are up to date and working. The basic idea is this: -```rust,ignore +```ignore /// # Examples /// /// ``` @@ -106,7 +106,7 @@ our source code: ```text First, we set `x` to five: - ```rust + ``` let x = 5; # let y = 6; # println!("{}", x + y); @@ -114,7 +114,7 @@ our source code: Next, we set `y` to six: - ```rust + ``` # let x = 5; let y = 6; # println!("{}", x + y); @@ -122,7 +122,7 @@ our source code: Finally, we print the sum of `x` and `y`: - ```rust + ``` # let x = 5; # let y = 6; println!("{}", x + y); @@ -136,7 +136,7 @@ explanation. Another case where the use of `#` is handy is when you want to ignore error handling. Lets say you want the following, -```rust,ignore +```ignore /// use std::io; /// let mut input = String::new(); /// io::stdin().read_line(&mut input)?; @@ -145,7 +145,7 @@ error handling. Lets say you want the following, The problem is that `?` returns a `Result` and test functions don't return anything so this will give a mismatched types error. -```rust,ignore +```ignore /// A doc test using ? /// /// ``` @@ -179,7 +179,7 @@ Here’s an example of documenting a macro: /// # } /// ``` /// -/// ```rust,should_panic +/// ```should_panic /// # #[macro_use] extern crate foo; /// # fn main() { /// panic_unless!(true == false, “I’m broken.”); @@ -224,7 +224,7 @@ only shows the part you care about. `should_panic` tells `rustdoc` that the code should compile correctly, but not actually pass as a test. -```rust +```text /// ```no_run /// loop { /// println!("Hello, world"); @@ -233,6 +233,18 @@ not actually pass as a test. # fn foo() {} ``` +`compile_fail` tells `rustdoc` that the compilation should fail. If it +compiles, then the test will fail. However please note that code failing +with the current Rust release may work in a future release, as new features +are added. + +```text +/// ```compile_fail +/// let x = 5; +/// x += 2; // shouldn't compile! +/// ``` +``` + The `no_run` attribute will compile your code, but not run it. This is important for examples such as "Here's how to retrieve a web page," which you would want to ensure compiles, but might be run in a test -- cgit 1.4.1-3-g733a5