diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2017-08-22 13:48:31 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2017-09-03 13:15:15 +0200 |
| commit | 2ffcfeb82178384ceca818115d69c12a7257f712 (patch) | |
| tree | b0eb12877bd984ce90eead219471074978105a02 /src/doc/rustdoc | |
| parent | ccc31ce3d5b07a8f3ba89e2c9b2306ac8c52d1f7 (diff) | |
| download | rust-2ffcfeb82178384ceca818115d69c12a7257f712.tar.gz rust-2ffcfeb82178384ceca818115d69c12a7257f712.zip | |
Add compile_fail documentation
Diffstat (limited to 'src/doc/rustdoc')
| -rw-r--r-- | src/doc/rustdoc/src/documentation-tests.md | 28 |
1 files changed, 20 insertions, 8 deletions
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<T, E>` 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 |
