diff --git a/src/librustc_error_codes/error_codes/E0015.md b/src/librustc_error_codes/error_codes/E0015.md index 361cb425809d7..021a0219d13e2 100644 --- a/src/librustc_error_codes/error_codes/E0015.md +++ b/src/librustc_error_codes/error_codes/E0015.md @@ -1,4 +1,5 @@ -A constant item was initialized with something that is not a constant expression. +A constant item was initialized with something that is not a constant +expression. Erroneous code example: diff --git a/src/librustc_error_codes/error_codes/E0107.md b/src/librustc_error_codes/error_codes/E0107.md index 3a8acba061c81..bfe0d21f3129b 100644 --- a/src/librustc_error_codes/error_codes/E0107.md +++ b/src/librustc_error_codes/error_codes/E0107.md @@ -25,4 +25,3 @@ fn main() { // expected 0, found 1 } ``` - diff --git a/src/librustc_error_codes/error_codes/E0369.md b/src/librustc_error_codes/error_codes/E0369.md index 08db342428c23..397979e564105 100644 --- a/src/librustc_error_codes/error_codes/E0369.md +++ b/src/librustc_error_codes/error_codes/E0369.md @@ -26,4 +26,3 @@ left and may require reallocation. This requires ownership of the string on the left. If something should be added to a string literal, move the literal to the heap by allocating it with `to_owned()` like in `"Your text".to_owned()`. - diff --git a/src/librustc_error_codes/error_codes/E0404.md b/src/librustc_error_codes/error_codes/E0404.md index 861a50bfd8c57..201107c05a02c 100644 --- a/src/librustc_error_codes/error_codes/E0404.md +++ b/src/librustc_error_codes/error_codes/E0404.md @@ -41,4 +41,3 @@ trait Foo { fn bar(t: T) {} // ok! ``` - diff --git a/src/librustc_error_codes/error_codes/E0458.md b/src/librustc_error_codes/error_codes/E0458.md index e6baeb8f69229..385079d403d59 100644 --- a/src/librustc_error_codes/error_codes/E0458.md +++ b/src/librustc_error_codes/error_codes/E0458.md @@ -10,4 +10,3 @@ Please specify a valid "kind" value, from one of the following: * static * dylib * framework - diff --git a/src/librustc_error_codes/error_codes/E0633.md b/src/librustc_error_codes/error_codes/E0633.md index a68da1188b5a7..65cdf90036ade 100644 --- a/src/librustc_error_codes/error_codes/E0633.md +++ b/src/librustc_error_codes/error_codes/E0633.md @@ -21,4 +21,3 @@ The `#[unwind]` attribute should be used as follows: NB. The default behavior here is "allowed", but this is unspecified and likely to change in the future. - diff --git a/src/librustc_error_codes/error_codes/E0635.md b/src/librustc_error_codes/error_codes/E0635.md index 2382ce0d3ff2f..a39d2be4f8f86 100644 --- a/src/librustc_error_codes/error_codes/E0635.md +++ b/src/librustc_error_codes/error_codes/E0635.md @@ -5,4 +5,3 @@ Erroneous code example: ```compile_fail,E0635 #![feature(nonexistent_rust_feature)] // error: unknown feature ``` - diff --git a/src/librustc_error_codes/error_codes/E0636.md b/src/librustc_error_codes/error_codes/E0636.md index dabf9b6412309..57cf72db55689 100644 --- a/src/librustc_error_codes/error_codes/E0636.md +++ b/src/librustc_error_codes/error_codes/E0636.md @@ -7,4 +7,3 @@ Erroneous code example: #![feature(rust1)] #![feature(rust1)] // error: the feature `rust1` has already been declared ``` - diff --git a/src/librustc_error_codes/error_codes/E0641.md b/src/librustc_error_codes/error_codes/E0641.md index e39bebce1fea6..e2110042c7e8d 100644 --- a/src/librustc_error_codes/error_codes/E0641.md +++ b/src/librustc_error_codes/error_codes/E0641.md @@ -16,4 +16,4 @@ let a = &(String::from("Hello world!")) as *const _; // Ok let b = 0 as *const i32; // Ok let c: *const i32 = 0 as *const _; // Ok -``` \ No newline at end of file +``` diff --git a/src/librustc_error_codes/error_codes/E0644.md b/src/librustc_error_codes/error_codes/E0644.md index 61acb084a459f..7a653bd2264fd 100644 --- a/src/librustc_error_codes/error_codes/E0644.md +++ b/src/librustc_error_codes/error_codes/E0644.md @@ -27,4 +27,3 @@ closure call itself by capturing a `&Fn()` object or `fn()` pointer that refers to itself. That is permitting, since the closure would be invoking itself via a virtual call, and hence does not directly reference its own *type*. - diff --git a/src/librustc_error_codes/error_codes/E0706.md b/src/librustc_error_codes/error_codes/E0706.md index bee9219af7cf6..d379b8a2384c6 100644 --- a/src/librustc_error_codes/error_codes/E0706.md +++ b/src/librustc_error_codes/error_codes/E0706.md @@ -1,4 +1,4 @@ - `async fn`s are not yet supported in traits in Rust. +`async fn`s are not yet supported in traits in Rust. Erroneous code example: @@ -10,7 +10,8 @@ trait T { } ``` -`async fn`s return an `impl Future`, making the following two examples equivalent: +`async fn`s return an `impl Future`, making the following two examples +equivalent: ```edition2018,ignore (example-of-desugaring-equivalence) async fn foo() -> User { @@ -23,8 +24,8 @@ fn foo(&self) -> impl Future + '_ { ``` But when it comes to supporting this in traits, there are [a few implementation -issues][async-is-hard]. One of them is returning `impl Trait` in traits is not supported, -as it would require [Generic Associated Types] to be supported: +issues][async-is-hard]. One of them is returning `impl Trait` in traits is not +supported, as it would require [Generic Associated Types] to be supported: ```edition2018,ignore (example-of-desugaring-equivalence) impl MyDatabase { @@ -40,13 +41,14 @@ impl MyDatabase { } ``` -Until these issues are resolved, you can use the [`async-trait` crate], allowing you to use -`async fn` in traits by desugaring to "boxed futures" +Until these issues are resolved, you can use the [`async-trait` crate], allowing +you to use `async fn` in traits by desugaring to "boxed futures" (`Pin>`). -Note that using these trait methods will result in a heap allocation per-function-call. This is not -a significant cost for the vast majority of applications, but should be considered when deciding -whether to use this functionality in the public API of a low-level function that is expected to be +Note that using these trait methods will result in a heap allocation +per-function-call. This is not a significant cost for the vast majority of +applications, but should be considered when deciding whether to use this +functionality in the public API of a low-level function that is expected to be called millions of times a second. You might be interested in visiting the [async book] for further information. diff --git a/src/librustc_error_codes/error_codes/E0745.md b/src/librustc_error_codes/error_codes/E0745.md index 7c478a1e0c8b1..39bebdcd3750e 100644 --- a/src/librustc_error_codes/error_codes/E0745.md +++ b/src/librustc_error_codes/error_codes/E0745.md @@ -11,7 +11,7 @@ fn temp_address() { To avoid the error, first bind the temporary to a named local variable. -```ignore +```ignore (not yet implemented) # #![feature(raw_ref_op)] fn temp_address() { let val = 2; diff --git a/src/tools/tidy/src/error_codes_check.rs b/src/tools/tidy/src/error_codes_check.rs index 5364005840aa1..41c4b618e6095 100644 --- a/src/tools/tidy/src/error_codes_check.rs +++ b/src/tools/tidy/src/error_codes_check.rs @@ -4,7 +4,6 @@ use std::collections::HashMap; use std::ffi::OsStr; use std::fs::read_to_string; -use std::io::Read; use std::path::Path; // A few of those error codes can't be tested but all the others can and *should* be tested! diff --git a/src/tools/tidy/src/style.rs b/src/tools/tidy/src/style.rs index 5abe481368df5..20636c86e1e96 100644 --- a/src/tools/tidy/src/style.rs +++ b/src/tools/tidy/src/style.rs @@ -141,17 +141,28 @@ pub fn check(path: &Path, bad: &mut bool) { super::walk(path, &mut super::filter_dirs, &mut |entry, contents| { let file = entry.path(); let filename = file.file_name().unwrap().to_string_lossy(); - let extensions = [".rs", ".py", ".js", ".sh", ".c", ".cpp", ".h"]; + let extensions = [".rs", ".py", ".js", ".sh", ".c", ".cpp", ".h", ".md"]; if extensions.iter().all(|e| !filename.ends_with(e)) || filename.starts_with(".#") { return } + if filename.ends_with(".md") && + file.parent() + .unwrap() + .file_name() + .unwrap() + .to_string_lossy() != "error_codes" { + // We don't want to check all ".md" files (almost of of them aren't compliant + // currently), just the long error code explanation ones. + return; + } + if contents.is_empty() { tidy_error!(bad, "{}: empty file", file.display()); } - let max_columns = if filename == "error_codes.rs" { + let max_columns = if filename == "error_codes.rs" || filename.ends_with(".md") { ERROR_CODE_COLS } else { COLS