Rollup merge of #66777 - GuillaumeGomez:tidy-err-codes, r=Mark-Simulacrum
Put back tidy check on error codes I just realized that the tidy checks were not run anymore on the error code long explanations. This add it back. cc @Dylan-DPC r? @Mark-Simulacrum
This commit is contained in:
commit
6a1fe67cac
13 changed files with 28 additions and 22 deletions
|
@ -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:
|
||||
|
||||
|
|
|
@ -25,4 +25,3 @@ fn main() {
|
|||
// expected 0, found 1
|
||||
}
|
||||
```
|
||||
|
||||
|
|
|
@ -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()`.
|
||||
|
||||
|
|
|
@ -41,4 +41,3 @@ trait Foo {
|
|||
|
||||
fn bar<T: Foo>(t: T) {} // ok!
|
||||
```
|
||||
|
||||
|
|
|
@ -10,4 +10,3 @@ Please specify a valid "kind" value, from one of the following:
|
|||
* static
|
||||
* dylib
|
||||
* framework
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -5,4 +5,3 @@ Erroneous code example:
|
|||
```compile_fail,E0635
|
||||
#![feature(nonexistent_rust_feature)] // error: unknown feature
|
||||
```
|
||||
|
||||
|
|
|
@ -7,4 +7,3 @@ Erroneous code example:
|
|||
#![feature(rust1)]
|
||||
#![feature(rust1)] // error: the feature `rust1` has already been declared
|
||||
```
|
||||
|
||||
|
|
|
@ -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*.
|
||||
|
||||
|
|
|
@ -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<Output = User> + '_ {
|
|||
```
|
||||
|
||||
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<Box<dyn Future + Send + 'async>>`).
|
||||
|
||||
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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue