diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2019-10-23 22:20:58 -0700 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2019-10-24 12:26:01 -0700 |
| commit | 0baf61bfdb95980c69fbfcc0fc95ce82e8d81ac9 (patch) | |
| tree | 83a1e3a9b3ce6bdf5e87d47d5a79c5e033096519 /src | |
| parent | 4a8c5b20c7772bc5342b83d4b0696ea216ef75a7 (diff) | |
| download | rust-0baf61bfdb95980c69fbfcc0fc95ce82e8d81ac9.tar.gz rust-0baf61bfdb95980c69fbfcc0fc95ce82e8d81ac9.zip | |
Increase spacing for suggestions in diagnostics
Make the spacing between the code snippet and verbose structured suggestions consistent with note and help messages.
Diffstat (limited to 'src')
227 files changed, 744 insertions, 0 deletions
diff --git a/src/librustc_errors/emitter.rs b/src/librustc_errors/emitter.rs index e3b55a14133..e59d6c56750 100644 --- a/src/librustc_errors/emitter.rs +++ b/src/librustc_errors/emitter.rs @@ -1629,6 +1629,19 @@ impl EmitterWriter { _ => () } } + if children.is_empty() && suggestions.iter().any(|s| { + s.style != SuggestionStyle::CompletelyHidden + }) { + let mut buffer = StyledBuffer::new(); + if !self.short_message { + draw_col_separator_no_space(&mut buffer, 0, max_line_num_len + 1); + } + match emit_to_destination(&buffer.render(), level, &mut self.dst, + self.short_message) { + Ok(()) => (), + Err(e) => panic!("failed to emit error: {}", e) + } + } for sugg in suggestions { if sugg.style == SuggestionStyle::CompletelyHidden { // do not display this suggestion, it is meant only for tools diff --git a/src/test/rustdoc-ui/intra-links-ambiguity.stderr b/src/test/rustdoc-ui/intra-links-ambiguity.stderr index 5d66cc1364c..9ee3ff57fb5 100644 --- a/src/test/rustdoc-ui/intra-links-ambiguity.stderr +++ b/src/test/rustdoc-ui/intra-links-ambiguity.stderr @@ -23,6 +23,7 @@ error: `ambiguous` is both a struct and a function | LL | /// [ambiguous] is ambiguous. | ^^^^^^^^^ ambiguous link + | help: to link to the struct, prefix with the item type | LL | /// [struct@ambiguous] is ambiguous. @@ -37,6 +38,7 @@ error: `multi_conflict` is a struct, a function, and a macro | LL | /// [`multi_conflict`] is a three-way conflict. | ^^^^^^^^^^^^^^^^ ambiguous link + | help: to link to the struct, prefix with the item type | LL | /// [`struct@multi_conflict`] is a three-way conflict. @@ -55,6 +57,7 @@ error: `type_and_value` is both a module and a constant | LL | /// Ambiguous [type_and_value]. | ^^^^^^^^^^^^^^ ambiguous link + | help: to link to the module, prefix with the item type | LL | /// Ambiguous [module@type_and_value]. @@ -69,6 +72,7 @@ error: `foo::bar` is both an enum and a function | LL | /// Ambiguous non-implied shortcut link [`foo::bar`]. | ^^^^^^^^^^ ambiguous link + | help: to link to the enum, prefix with the item type | LL | /// Ambiguous non-implied shortcut link [`enum@foo::bar`]. diff --git a/src/test/rustdoc-ui/invalid-syntax.stderr b/src/test/rustdoc-ui/invalid-syntax.stderr index 6f50edae650..8ec4338e13f 100644 --- a/src/test/rustdoc-ui/invalid-syntax.stderr +++ b/src/test/rustdoc-ui/invalid-syntax.stderr @@ -24,6 +24,7 @@ LL | /// ``` LL | | /// \__________pkt->size___________/ \_result->size_/ \__pkt->size__/ LL | | /// ``` | |_______^ + | help: mark blocks that do not contain Rust code as text | LL | /// ```text @@ -34,6 +35,7 @@ error: unknown start of token: ` | 3 | | ^^^^^^ did you mean `baz::foobar`? | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 3 | | ^^^^^^ did you mean 'baz::foobar`? @@ -44,6 +46,7 @@ error: unknown start of token: ` | 3 | | ^^^^^^ did you mean `baz::foobar`? | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 3 | | ^^^^^^ did you mean `baz::foobar'? @@ -59,6 +62,7 @@ LL | | /// LL | use foobar::Baz; LL | | /// | ^^^^^^ did you mean `baz::foobar`? LL | | /// ``` | |_______^ + | help: mark blocks that do not contain Rust code as text | LL | /// ```text @@ -78,6 +82,7 @@ LL | /// ``` LL | | /// \_ LL | | /// ``` | |_______^ + | help: mark blocks that do not contain Rust code as text | LL | /// ```text @@ -117,6 +122,7 @@ error: unknown start of token: ` | 1 | ``` | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 1 | '`` @@ -127,6 +133,7 @@ error: unknown start of token: ` | 1 | ``` | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 1 | `'` @@ -137,6 +144,7 @@ error: unknown start of token: ` | 1 | ``` | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 1 | ``' @@ -196,6 +204,7 @@ LL | | /// LL | | /// LL | | /// ``` | |_______^ + | help: mark blocks that do not contain Rust code as text | LL | /// ```text @@ -236,6 +245,7 @@ error: unknown start of token: ` | 1 | ``` | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 1 | '`` @@ -264,6 +274,7 @@ error: unknown start of token: ` | 3 | | ^^^^^^ did you mean `baz::foobar`? | ^ + | help: Unicode character '`' (Grave Accent) looks like ''' (Single Quote), but it is not | 3 | | ^^^^^^ did you mean 'baz::foobar`? diff --git a/src/test/ui/associated-types/associated-types-path-2.stderr b/src/test/ui/associated-types/associated-types-path-2.stderr index bb2e7251849..246c745cd33 100644 --- a/src/test/ui/associated-types/associated-types-path-2.stderr +++ b/src/test/ui/associated-types/associated-types-path-2.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | f1(2i32, 4i32); | ^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | f1(2i32, 4u32); @@ -43,6 +44,7 @@ error[E0308]: mismatched types | LL | let _: i32 = f2(2i32); | ^^^^^^^^ expected i32, found u32 + | help: you can convert an `u32` to `i32` and panic if the converted value wouldn't fit | LL | let _: i32 = f2(2i32).try_into().unwrap(); diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr b/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr index 0e859466322..05d543a7e48 100644 --- a/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr +++ b/src/test/ui/async-await/await-keyword/2018-edition-error-in-non-macro-position.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `await` | LL | pub mod await { | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub mod r#await { @@ -13,6 +14,7 @@ error: expected identifier, found keyword `await` | LL | pub struct await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub struct r#await; @@ -23,6 +25,7 @@ error: expected identifier, found keyword `await` | LL | use self::outer_mod::await::await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use self::outer_mod::r#await::await; @@ -33,6 +36,7 @@ error: expected identifier, found keyword `await` | LL | use self::outer_mod::await::await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use self::outer_mod::await::r#await; @@ -43,6 +47,7 @@ error: expected identifier, found keyword `await` | LL | struct Foo { await: () } | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | struct Foo { r#await: () } @@ -53,6 +58,7 @@ error: expected identifier, found keyword `await` | LL | impl Foo { fn await() {} } | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | impl Foo { fn r#await() {} } @@ -63,6 +69,7 @@ error: expected identifier, found keyword `await` | LL | macro_rules! await { | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | macro_rules! r#await { diff --git a/src/test/ui/async-await/await-keyword/2018-edition-error.stderr b/src/test/ui/async-await/await-keyword/2018-edition-error.stderr index 71f403f278e..d44d51b8fd1 100644 --- a/src/test/ui/async-await/await-keyword/2018-edition-error.stderr +++ b/src/test/ui/async-await/await-keyword/2018-edition-error.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `await` | LL | pub mod await { | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub mod r#await { @@ -13,6 +14,7 @@ error: expected identifier, found keyword `await` | LL | pub struct await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub struct r#await; @@ -23,6 +25,7 @@ error: expected identifier, found keyword `await` | LL | use self::outer_mod::await::await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use self::outer_mod::r#await::await; @@ -33,6 +36,7 @@ error: expected identifier, found keyword `await` | LL | use self::outer_mod::await::await; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use self::outer_mod::await::r#await; @@ -43,6 +47,7 @@ error: expected identifier, found keyword `await` | LL | macro_rules! await { () => {}; } | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | macro_rules! r#await { () => {}; } diff --git a/src/test/ui/async-await/no-const-async.stderr b/src/test/ui/async-await/no-const-async.stderr index fe059145785..95ded537ab3 100644 --- a/src/test/ui/async-await/no-const-async.stderr +++ b/src/test/ui/async-await/no-const-async.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `async` | LL | pub const async fn x() {} | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub const r#async fn x() {} diff --git a/src/test/ui/bad/bad-crate-name.stderr b/src/test/ui/bad/bad-crate-name.stderr index a08535a7757..e015010da13 100644 --- a/src/test/ui/bad/bad-crate-name.stderr +++ b/src/test/ui/bad/bad-crate-name.stderr @@ -3,6 +3,7 @@ error: crate name using dashes are not valid in `extern crate` statements | LL | extern crate krate-name-here; | ^^^^^^^^^^^^^^^ dash-separated idents are not valid + | help: if the original crate name uses dashes you need to use underscores in the code | LL | extern crate krate_name_here; diff --git a/src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr b/src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr index f54a3a4072c..ad5e206a9a1 100644 --- a/src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr +++ b/src/test/ui/borrowck/borrowck-vec-pattern-nesting.stderr @@ -33,6 +33,7 @@ LL | &mut [_a, | | | data moved here | move occurs because `_a` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait + | help: consider removing the `&mut` | LL | [_a, @@ -64,6 +65,7 @@ LL | _b] => {} | | | data moved here | move occurs because `_b` has type `std::boxed::Box<isize>`, which does not implement the `Copy` trait + | help: consider removing the `&mut` | LL | [ diff --git a/src/test/ui/class-missing-self.stderr b/src/test/ui/class-missing-self.stderr index 25cb85dadb9..681d0ffea8b 100644 --- a/src/test/ui/class-missing-self.stderr +++ b/src/test/ui/class-missing-self.stderr @@ -9,6 +9,7 @@ error[E0425]: cannot find function `sleep` in this scope | LL | sleep(); | ^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::thread::sleep; diff --git a/src/test/ui/confuse-field-and-method/issue-18343.stderr b/src/test/ui/confuse-field-and-method/issue-18343.stderr index 03f9d990dbb..79ba93130a7 100644 --- a/src/test/ui/confuse-field-and-method/issue-18343.stderr +++ b/src/test/ui/confuse-field-and-method/issue-18343.stderr @@ -6,6 +6,7 @@ LL | struct Obj<F> where F: FnMut() -> u32 { ... LL | o.closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (o.closure)(); diff --git a/src/test/ui/confuse-field-and-method/issue-2392.stderr b/src/test/ui/confuse-field-and-method/issue-2392.stderr index 351cfef1b53..a44b9718415 100644 --- a/src/test/ui/confuse-field-and-method/issue-2392.stderr +++ b/src/test/ui/confuse-field-and-method/issue-2392.stderr @@ -6,6 +6,7 @@ LL | struct Obj<F> where F: FnOnce() -> u32 { ... LL | o_closure.closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (o_closure.closure)(); @@ -30,6 +31,7 @@ LL | struct Obj<F> where F: FnOnce() -> u32 { ... LL | o_func.closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (o_func.closure)(); @@ -43,6 +45,7 @@ LL | struct BoxedObj { ... LL | boxed_fn.boxed_closure(); | ^^^^^^^^^^^^^ field, not a method + | help: to call the function stored in `boxed_closure`, surround the field access with parentheses | LL | (boxed_fn.boxed_closure)(); @@ -56,6 +59,7 @@ LL | struct BoxedObj { ... LL | boxed_closure.boxed_closure(); | ^^^^^^^^^^^^^ field, not a method + | help: to call the function stored in `boxed_closure`, surround the field access with parentheses | LL | (boxed_closure.boxed_closure)(); @@ -69,6 +73,7 @@ LL | struct Obj<F> where F: FnOnce() -> u32 { ... LL | w.wrap.closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (w.wrap.closure)(); @@ -93,6 +98,7 @@ LL | struct Obj<F> where F: FnOnce() -> u32 { ... LL | check_expression().closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (check_expression().closure)(); @@ -106,6 +112,7 @@ LL | struct FuncContainer { ... LL | (*self.container).f1(1); | ^^ field, not a method + | help: to call the function stored in `f1`, surround the field access with parentheses | LL | ((*self.container).f1)(1); @@ -119,6 +126,7 @@ LL | struct FuncContainer { ... LL | (*self.container).f2(1); | ^^ field, not a method + | help: to call the function stored in `f2`, surround the field access with parentheses | LL | ((*self.container).f2)(1); @@ -132,6 +140,7 @@ LL | struct FuncContainer { ... LL | (*self.container).f3(1); | ^^ field, not a method + | help: to call the function stored in `f3`, surround the field access with parentheses | LL | ((*self.container).f3)(1); diff --git a/src/test/ui/confuse-field-and-method/issue-32128.stderr b/src/test/ui/confuse-field-and-method/issue-32128.stderr index fbabb3a88cc..b2f7894ba05 100644 --- a/src/test/ui/confuse-field-and-method/issue-32128.stderr +++ b/src/test/ui/confuse-field-and-method/issue-32128.stderr @@ -6,6 +6,7 @@ LL | struct Example { ... LL | demo.example(1); | ^^^^^^^ field, not a method + | help: to call the function stored in `example`, surround the field access with parentheses | LL | (demo.example)(1); diff --git a/src/test/ui/confuse-field-and-method/issue-33784.stderr b/src/test/ui/confuse-field-and-method/issue-33784.stderr index 60f1a932f44..af29a9963e1 100644 --- a/src/test/ui/confuse-field-and-method/issue-33784.stderr +++ b/src/test/ui/confuse-field-and-method/issue-33784.stderr @@ -3,6 +3,7 @@ error[E0599]: no method named `closure` found for type `&Obj<[closure@$DIR/issue | LL | p.closure(); | ^^^^^^^ field, not a method + | help: to call the function stored in `closure`, surround the field access with parentheses | LL | (p.closure)(); @@ -13,6 +14,7 @@ error[E0599]: no method named `fn_ptr` found for type `&&Obj<[closure@$DIR/issue | LL | q.fn_ptr(); | ^^^^^^ field, not a method + | help: to call the function stored in `fn_ptr`, surround the field access with parentheses | LL | (q.fn_ptr)(); @@ -23,6 +25,7 @@ error[E0599]: no method named `c_fn_ptr` found for type `&D` in the current scop | LL | s.c_fn_ptr(); | ^^^^^^^^ field, not a method + | help: to call the function stored in `c_fn_ptr`, surround the field access with parentheses | LL | (s.c_fn_ptr)(); diff --git a/src/test/ui/consts/enum-discr-type-err.stderr b/src/test/ui/consts/enum-discr-type-err.stderr index 3c4fac7327d..a2545c8b6f2 100644 --- a/src/test/ui/consts/enum-discr-type-err.stderr +++ b/src/test/ui/consts/enum-discr-type-err.stderr @@ -9,6 +9,7 @@ LL | | A = F, LL | | B = T, LL | | } | |_- in this macro invocation + | help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit | LL | $( $v = $s::V.try_into().unwrap(), )* diff --git a/src/test/ui/crate-in-paths.stderr b/src/test/ui/crate-in-paths.stderr index c67fd4ac13c..38d222f980d 100644 --- a/src/test/ui/crate-in-paths.stderr +++ b/src/test/ui/crate-in-paths.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find value `Foo` in this scope | LL | Foo; | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use crate::bar::Foo; diff --git a/src/test/ui/deprecation/invalid-literal.stderr b/src/test/ui/deprecation/invalid-literal.stderr index a82eed24814..a5088a3ee33 100644 --- a/src/test/ui/deprecation/invalid-literal.stderr +++ b/src/test/ui/deprecation/invalid-literal.stderr @@ -3,6 +3,7 @@ error: malformed `deprecated` attribute input | LL | #[deprecated = b"test"] | ^^^^^^^^^^^^^^^^^^^^^^^ + | help: the following are the possible correct uses | LL | #[deprecated] diff --git a/src/test/ui/did_you_mean/issue-40396.stderr b/src/test/ui/did_you_mean/issue-40396.stderr index 7fc7c2628c4..749d1093cca 100644 --- a/src/test/ui/did_you_mean/issue-40396.stderr +++ b/src/test/ui/did_you_mean/issue-40396.stderr @@ -3,6 +3,7 @@ error: chained comparison operators require parentheses | LL | (0..13).collect<Vec<i32>>(); | ^^^^^ + | help: use `::<...>` instead of `<...>` to specify type arguments | LL | (0..13).collect::<Vec<i32>>(); @@ -13,6 +14,7 @@ error: chained comparison operators require parentheses | LL | Vec<i32>::new(); | ^^^^^ + | help: use `::<...>` instead of `<...>` to specify type arguments | LL | Vec::<i32>::new(); @@ -23,6 +25,7 @@ error: chained comparison operators require parentheses | LL | (0..13).collect<Vec<i32>(); | ^^^^^ + | help: use `::<...>` instead of `<...>` to specify type arguments | LL | (0..13).collect::<Vec<i32>(); diff --git a/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr b/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr index ef68bf52cf3..0a2fbe4918f 100644 --- a/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr +++ b/src/test/ui/did_you_mean/issue-43871-enum-instead-of-variant.stderr @@ -3,6 +3,7 @@ error[E0423]: expected function, found enum `Option` | LL | let x = Option(1); | ^^^^^^ + | help: try using one of the enum's variants | LL | let x = std::option::Option::None(1); @@ -15,6 +16,7 @@ error[E0532]: expected tuple struct/variant, found enum `Option` | LL | if let Option(_) = x { | ^^^^^^ + | help: try using one of the enum's variants | LL | if let std::option::Option::None(_) = x { @@ -27,6 +29,7 @@ error[E0532]: expected tuple struct/variant, found enum `Example` | LL | if let Example(_) = y { | ^^^^^^^ + | help: try using one of the enum's variants | LL | if let Example::Ex(_) = y { @@ -45,6 +48,7 @@ error[E0423]: expected function, found enum `ManyVariants` | LL | let z = ManyVariants(); | ^^^^^^^^^^^^ + | help: try using one of the enum's variants | LL | let z = ManyVariants::One(); diff --git a/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr b/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr index 8099c3c0584..705c90985d5 100644 --- a/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr +++ b/src/test/ui/did_you_mean/issue-48492-tuple-destructure-missing-parens.stderr @@ -3,6 +3,7 @@ error: unexpected `,` in pattern | LL | while let b1, b2, b3 = reading_frame.next().expect("there should be a start codon") { | ^ + | help: try adding parentheses to match on a tuple.. | LL | while let (b1, b2, b3) = reading_frame.next().expect("there should be a start codon") { @@ -17,6 +18,7 @@ error: unexpected `,` in pattern | LL | if let b1, b2, b3 = reading_frame.next().unwrap() { | ^ + | help: try adding parentheses to match on a tuple.. | LL | if let (b1, b2, b3) = reading_frame.next().unwrap() { @@ -31,6 +33,7 @@ error: unexpected `,` in pattern | LL | Nucleotide::Adenine, Nucleotide::Cytosine, _ => true | ^ + | help: try adding parentheses to match on a tuple.. | LL | (Nucleotide::Adenine, Nucleotide::Cytosine, _) => true @@ -45,6 +48,7 @@ error: unexpected `,` in pattern | LL | for x, _barr_body in women.iter().map(|woman| woman.allosomes.clone()) { | ^ + | help: try adding parentheses to match on a tuple.. | LL | for (x, _barr_body) in women.iter().map(|woman| woman.allosomes.clone()) { @@ -59,6 +63,7 @@ error: unexpected `,` in pattern | LL | for x, y @ Allosome::Y(_) in men.iter().map(|man| man.allosomes.clone()) { | ^ + | help: try adding parentheses to match on a tuple.. | LL | for (x, y @ Allosome::Y(_)) in men.iter().map(|man| man.allosomes.clone()) { @@ -73,6 +78,7 @@ error: unexpected `,` in pattern | LL | let women, men: (Vec<Genome>, Vec<Genome>) = genomes.iter().cloned() | ^ + | help: try adding parentheses to match on a tuple.. | LL | let (women, men): (Vec<Genome>, Vec<Genome>) = genomes.iter().cloned() diff --git a/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr b/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr index 9ee86adec52..f194b335fde 100644 --- a/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr +++ b/src/test/ui/did_you_mean/issue-49746-unicode-confusable-in-float-literal-expt.stderr @@ -9,6 +9,7 @@ error: unknown start of token: \u{2212} | LL | const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e−11; // m³⋅kg⁻¹⋅s⁻² | ^ + | help: Unicode character '−' (Minus Sign) looks like '-' (Minus/Hyphen), but it is not | LL | const UNIVERSAL_GRAVITATIONAL_CONSTANT: f64 = 6.674e-11; // m³⋅kg⁻¹⋅s⁻² diff --git a/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr b/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr index cb350a1faee..792b36e00bb 100644 --- a/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr +++ b/src/test/ui/did_you_mean/issue-56028-there-is-an-enum-variant.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Set` in this scope | LL | fn setup() -> Set { Set } | ^^^ not found in this scope + | help: there is an enum variant `AffixHeart::Set` and 7 others; try using the variant's enum | LL | fn setup() -> AffixHeart { Set } @@ -20,6 +21,7 @@ error[E0425]: cannot find value `Set` in this scope | LL | fn setup() -> Set { Set } | ^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use AffixHeart::Set; diff --git a/src/test/ui/discrim/discrim-ill-typed.stderr b/src/test/ui/discrim/discrim-ill-typed.stderr index 543fecb249f..d9675d65a2a 100644 --- a/src/test/ui/discrim/discrim-ill-typed.stderr +++ b/src/test/ui/discrim/discrim-ill-typed.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_u8, | ^^^^ expected i8, found u8 + | help: change the type of the numeric literal from `u8` to `i8` | LL | OhNo = 0_i8, @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_i8, | ^^^^ expected u8, found i8 + | help: change the type of the numeric literal from `i8` to `u8` | LL | OhNo = 0_u8, @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_u16, | ^^^^^ expected i16, found u16 + | help: change the type of the numeric literal from `u16` to `i16` | LL | OhNo = 0_i16, @@ -33,6 +36,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_i16, | ^^^^^ expected u16, found i16 + | help: change the type of the numeric literal from `i16` to `u16` | LL | OhNo = 0_u16, @@ -43,6 +47,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_u32, | ^^^^^ expected i32, found u32 + | help: change the type of the numeric literal from `u32` to `i32` | LL | OhNo = 0_i32, @@ -53,6 +58,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_i32, | ^^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | OhNo = 0_u32, @@ -63,6 +69,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_u64, | ^^^^^ expected i64, found u64 + | help: change the type of the numeric literal from `u64` to `i64` | LL | OhNo = 0_i64, @@ -73,6 +80,7 @@ error[E0308]: mismatched types | LL | OhNo = 0_i64, | ^^^^^ expected u64, found i64 + | help: change the type of the numeric literal from `i64` to `u64` | LL | OhNo = 0_u64, diff --git a/src/test/ui/dotdotdot-expr.stderr b/src/test/ui/dotdotdot-expr.stderr index a5ef7b65048..ec1335cfdb0 100644 --- a/src/test/ui/dotdotdot-expr.stderr +++ b/src/test/ui/dotdotdot-expr.stderr @@ -3,6 +3,7 @@ error: unexpected token: `...` | LL | let _redemptive = 1...21; | ^^^ + | help: use `..` for an exclusive range | LL | let _redemptive = 1..21; diff --git a/src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr b/src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr index be991cd0c81..77eb44c2065 100644 --- a/src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr +++ b/src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `async` | LL | let mut async = 1; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let mut r#async = 1; @@ -13,6 +14,7 @@ error: expected identifier, found keyword `async` | LL | module::async(); | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | module::r#async(); diff --git a/src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr b/src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr index 93a7627f887..01f9f00e91c 100644 --- a/src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr +++ b/src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `async` | LL | let mut async = 1; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let mut r#async = 1; @@ -13,6 +14,7 @@ error: expected identifier, found keyword `async` | LL | module::async(); | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | module::r#async(); diff --git a/src/test/ui/empty/empty-struct-unit-expr.stderr b/src/test/ui/empty/empty-struct-unit-expr.stderr index 696eabe99cf..50b0e19133e 100644 --- a/src/test/ui/empty/empty-struct-unit-expr.stderr +++ b/src/test/ui/empty/empty-struct-unit-expr.stderr @@ -19,6 +19,7 @@ LL | let e4 = E::Empty4(); | ^^^^^^^^^-- | | | call expression requires function + | help: `E::Empty4` is a unit variant, you need to write it without the parenthesis | LL | let e4 = E::Empty4; @@ -39,6 +40,7 @@ LL | let xe4 = XE::XEmpty4(); | ^^^^^^^^^^^-- | | | call expression requires function + | help: `XE::XEmpty4` is a unit variant, you need to write it without the parenthesis | LL | let xe4 = XE::XEmpty4; diff --git a/src/test/ui/error-codes/E0023.stderr b/src/test/ui/error-codes/E0023.stderr index dbce6003a2b..a3610099294 100644 --- a/src/test/ui/error-codes/E0023.stderr +++ b/src/test/ui/error-codes/E0023.stderr @@ -33,6 +33,7 @@ LL | Orange((String, String)), ... LL | Fruit::Orange(a, b) => {}, | ^^^^^^^^^^^^^^^^^^^ expected 1 field, found 2 + | help: missing parenthesis | LL | Fruit::Orange((a, b)) => {}, @@ -46,6 +47,7 @@ LL | Banana(()), ... LL | Fruit::Banana() => {}, | ^^^^^^^^^^^^^^^ expected 1 field, found 0 + | help: missing parenthesis | LL | Fruit::Banana(()) => {}, diff --git a/src/test/ui/error-codes/E0423.stderr b/src/test/ui/error-codes/E0423.stderr index 754006bc217..4e016dbd1c0 100644 --- a/src/test/ui/error-codes/E0423.stderr +++ b/src/test/ui/error-codes/E0423.stderr @@ -3,6 +3,7 @@ error: struct literals are not allowed here | LL | if let S { x: _x, y: 2 } = S { x: 1, y: 2 } { println!("Ok"); } | ^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | if let S { x: _x, y: 2 } = (S { x: 1, y: 2 }) { println!("Ok"); } @@ -19,6 +20,7 @@ error: struct literals are not allowed here | LL | for _ in std::ops::Range { start: 0, end: 10 } {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | for _ in (std::ops::Range { start: 0, end: 10 }) {} diff --git a/src/test/ui/error-codes/E0617.stderr b/src/test/ui/error-codes/E0617.stderr index 7c4df099d0d..c029060c3fb 100644 --- a/src/test/ui/error-codes/E0617.stderr +++ b/src/test/ui/error-codes/E0617.stderr @@ -33,6 +33,7 @@ error[E0617]: can't pass `unsafe extern "C" fn(*const i8, ...) {printf}` to vari | LL | printf(::std::ptr::null(), printf); | ^^^^^^ + | help: cast the value to `unsafe extern "C" fn(*const i8, ...)` | LL | printf(::std::ptr::null(), printf as unsafe extern "C" fn(*const i8, ...)); diff --git a/src/test/ui/error-codes/E0618.stderr b/src/test/ui/error-codes/E0618.stderr index b691f09ad7a..6ddda3bf8b5 100644 --- a/src/test/ui/error-codes/E0618.stderr +++ b/src/test/ui/error-codes/E0618.stderr @@ -8,6 +8,7 @@ LL | X::Entry(); | ^^^^^^^^-- | | | call expression requires function + | help: `X::Entry` is a unit variant, you need to write it without the parenthesis | LL | X::Entry; diff --git a/src/test/ui/error-codes/E0642.stderr b/src/test/ui/error-codes/E0642.stderr index da255143494..45486a5d632 100644 --- a/src/test/ui/error-codes/E0642.stderr +++ b/src/test/ui/error-codes/E0642.stderr @@ -3,6 +3,7 @@ error[E0642]: patterns aren't allowed in methods without bodies | LL | fn foo((x, y): (i32, i32)); | ^^^^^^ + | help: give this argument a name or use an underscore to ignore it | LL | fn foo(_: (i32, i32)); @@ -13,6 +14,7 @@ error[E0642]: patterns aren't allowed in methods without bodies | LL | fn bar((x, y): (i32, i32)) {} | ^^^^^^ + | help: give this argument a name or use an underscore to ignore it | LL | fn bar(_: (i32, i32)) {} @@ -23,6 +25,7 @@ error[E0642]: patterns aren't allowed in methods without bodies | LL | fn method(S { .. }: S) {} | ^^^^^^^^ + | help: give this argument a name or use an underscore to ignore it | LL | fn method(_: S) {} diff --git a/src/test/ui/feature-gate/issue-43106-gating-of-macro_use.stderr b/src/test/ui/feature-gate/issue-43106-gating-of-macro_use.stderr index 665fe288087..3181d62298c 100644 --- a/src/test/ui/feature-gate/issue-43106-gating-of-macro_use.stderr +++ b/src/test/ui/feature-gate/issue-43106-gating-of-macro_use.stderr @@ -21,6 +21,7 @@ error: malformed `macro_use` attribute input | LL | #[macro_use = "2700"] struct S; | ^^^^^^^^^^^^^^^^^^^^^ + | help: the following are the possible correct uses | LL | #[macro_use] struct S; diff --git a/src/test/ui/float-literal-inference-restrictions.stderr b/src/test/ui/float-literal-inference-restrictions.stderr index 839ca57ce55..08513507ecf 100644 --- a/src/test/ui/float-literal-inference-restrictions.stderr +++ b/src/test/ui/float-literal-inference-restrictions.stderr @@ -15,6 +15,7 @@ error[E0308]: mismatched types | LL | let y: f32 = 1f64; | ^^^^ expected f32, found f64 + | help: change the type of the numeric literal from `f64` to `f32` | LL | let y: f32 = 1f32; diff --git a/src/test/ui/fn/fn-compare-mismatch.stderr b/src/test/ui/fn/fn-compare-mismatch.stderr index b2f6510d5a0..8915b747b73 100644 --- a/src/test/ui/fn/fn-compare-mismatch.stderr +++ b/src/test/ui/fn/fn-compare-mismatch.stderr @@ -5,6 +5,7 @@ LL | let x = f == g; | - ^^ - fn() {main::g} | | | fn() {main::f} + | help: you might have forgotten to call this function | LL | let x = f() == g; diff --git a/src/test/ui/glob-resolve1.stderr b/src/test/ui/glob-resolve1.stderr index 4958099ca74..ddd1e095489 100644 --- a/src/test/ui/glob-resolve1.stderr +++ b/src/test/ui/glob-resolve1.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find function `fpriv` in this scope | LL | fpriv(); | ^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use bar::fpriv; @@ -13,6 +14,7 @@ error[E0425]: cannot find function `epriv` in this scope | LL | epriv(); | ^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use bar::epriv; @@ -29,6 +31,7 @@ error[E0425]: cannot find value `C` in this scope | LL | C; | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use bar::C; @@ -45,6 +48,7 @@ error[E0412]: cannot find type `A` in this scope | LL | foo::<A>(); | ^ + | help: an enum with a similar name exists | LL | foo::<B>(); @@ -59,6 +63,7 @@ error[E0412]: cannot find type `C` in this scope | LL | foo::<C>(); | ^ + | help: an enum with a similar name exists | LL | foo::<B>(); @@ -73,6 +78,7 @@ error[E0412]: cannot find type `D` in this scope | LL | foo::<D>(); | ^ + | help: an enum with a similar name exists | LL | foo::<B>(); diff --git a/src/test/ui/hygiene/expansion-info-reset.stderr b/src/test/ui/hygiene/expansion-info-reset.stderr index d8b602ce1c6..216f7a24a1e 100644 --- a/src/test/ui/hygiene/expansion-info-reset.stderr +++ b/src/test/ui/hygiene/expansion-info-reset.stderr @@ -3,6 +3,7 @@ error: format argument must be a string literal | LL | format_args!({ #[derive(Clone)] struct S; }); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | help: you might be missing a string literal to format with | LL | format_args!("{}", { #[derive(Clone)] struct S; }); diff --git a/src/test/ui/hygiene/globs.stderr b/src/test/ui/hygiene/globs.stderr index 7acb266f49c..4b382a2b209 100644 --- a/src/test/ui/hygiene/globs.stderr +++ b/src/test/ui/hygiene/globs.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find function `f` in this scope | LL | f(); | ^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use foo::f; @@ -24,6 +25,7 @@ LL | | g(); LL | | f(); LL | | } | |_____- in this macro invocation + | help: possible candidates are found in other modules, you can import them into scope | LL | use bar::g; diff --git a/src/test/ui/if/ifmt-bad-format-args.stderr b/src/test/ui/if/ifmt-bad-format-args.stderr index 9dc2b8f9a73..23252b6b5f4 100644 --- a/src/test/ui/if/ifmt-bad-format-args.stderr +++ b/src/test/ui/if/ifmt-bad-format-args.stderr @@ -9,6 +9,7 @@ error: format argument must be a string literal | LL | format_args!(|| {}); | ^^^^^ + | help: you might be missing a string literal to format with | LL | format_args!("{}", || {}); diff --git a/src/test/ui/impl-trait/impl-generic-mismatch.stderr b/src/test/ui/impl-trait/impl-generic-mismatch.stderr index fae8da9861f..bfe94119a02 100644 --- a/src/test/ui/impl-trait/impl-generic-mismatch.stderr +++ b/src/test/ui/impl-trait/impl-generic-mismatch.stderr @@ -6,6 +6,7 @@ LL | fn foo(&self, _: &impl Debug); ... LL | fn foo<U: Debug>(&self, _: &U) { } | ^ expected `impl Trait`, found generic parameter + | help: try removing the generic parameter and using `impl Trait` instead | LL | fn foo(&self, _: &impl Debug) { } @@ -19,6 +20,7 @@ LL | fn bar<U: Debug>(&self, _: &U); ... LL | fn bar(&self, _: &impl Debug) { } | ^^^^^^^^^^ expected generic parameter, found `impl Trait` + | help: try changing the `impl Trait` argument to a generic parameter | LL | fn bar<U: Debug>(&self, _: &U) { } diff --git a/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr b/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr index f27e6ff44a6..82e280b9fb2 100644 --- a/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr +++ b/src/test/ui/impl-trait/multiple-lifetimes/error-handling.stderr @@ -3,6 +3,7 @@ error: lifetime may not live long enough | LL | fn foo<'a, 'b, 'c>(x: &'static i32, mut y: &'a i32) -> E<'b, 'c> { | -- lifetime `'a` defined here ^^^^^^^^^ opaque type requires that `'a` must outlive `'static` + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'a`, add `'a` as a constraint | LL | type E<'a, 'b> = impl Sized; + 'a diff --git a/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr b/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr index b1e4edd9980..097f003575e 100644 --- a/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr +++ b/src/test/ui/impl-trait/must_outlive_least_region_or_bound.nll.stderr @@ -5,6 +5,7 @@ LL | fn elided(x: &i32) -> impl Copy { x } | - ^^^^^^^^^ opaque type requires that `'1` must outlive `'static` | | | let's call the lifetime of this reference `'1` + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'1`, add `'_` as a constraint | LL | fn elided(x: &i32) -> impl Copy + '_ { x } @@ -17,6 +18,7 @@ LL | fn explicit<'a>(x: &'a i32) -> impl Copy { x } | -- ^^^^^^^^^ opaque type requires that `'a` must outlive `'static` | | | lifetime `'a` defined here + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'a`, add `'a` as a constraint | LL | fn explicit<'a>(x: &'a i32) -> impl Copy + 'a { x } diff --git a/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr b/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr index 0736f25cb51..423cfcc4989 100644 --- a/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr +++ b/src/test/ui/impl-trait/static-return-lifetime-infered.nll.stderr @@ -5,6 +5,7 @@ LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> { | - ^^^^^^^^^^^^^^^^^^^^^^^ opaque type requires that `'1` must outlive `'static` | | | let's call the lifetime of this reference `'1` + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'1`, add `'_` as a constraint | LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> + '_ { @@ -17,6 +18,7 @@ LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> { | -- ^^^^^^^^^^^^^^^^^^^^^^^ opaque type requires that `'a` must outlive `'static` | | | lifetime `'a` defined here + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'a`, add `'a` as a constraint | LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> + 'a { diff --git a/src/test/ui/impl-trait/universal_wrong_bounds.stderr b/src/test/ui/impl-trait/universal_wrong_bounds.stderr index f530792955b..32b638dc465 100644 --- a/src/test/ui/impl-trait/universal_wrong_bounds.stderr +++ b/src/test/ui/impl-trait/universal_wrong_bounds.stderr @@ -3,6 +3,7 @@ error[E0404]: expected trait, found derive macro `Debug` | LL | fn wants_debug(g: impl Debug) { } | ^^^^^ not a trait + | help: possible better candidate is found in another module, you can import it into scope | LL | use std::fmt::Debug; @@ -13,6 +14,7 @@ error[E0404]: expected trait, found derive macro `Debug` | LL | fn wants_display(g: impl Debug) { } | ^^^^^ not a trait + | help: possible better candidate is found in another module, you can import it into scope | LL | use std::fmt::Debug; diff --git a/src/test/ui/indexing-requires-a-uint.stderr b/src/test/ui/indexing-requires-a-uint.stderr index 3300db58d44..7010a3ccbea 100644 --- a/src/test/ui/indexing-requires-a-uint.stderr +++ b/src/test/ui/indexing-requires-a-uint.stderr @@ -12,6 +12,7 @@ error[E0308]: mismatched types | LL | bar::<isize>(i); // i should not be re-coerced back to an isize | ^ expected isize, found usize + | help: you can convert an `usize` to `isize` and panic if the converted value wouldn't fit | LL | bar::<isize>(i.try_into().unwrap()); // i should not be re-coerced back to an isize diff --git a/src/test/ui/inference/cannot-infer-closure.stderr b/src/test/ui/inference/cannot-infer-closure.stderr index 5f30b5d993c..c26c24f1dc5 100644 --- a/src/test/ui/inference/cannot-infer-closure.stderr +++ b/src/test/ui/inference/cannot-infer-closure.stderr @@ -3,6 +3,7 @@ error[E0282]: type annotations needed for the closure `fn((), ()) -> std::result | LL | Err(a)?; | ^^^^^^^ cannot infer type + | help: give this closure an explicit return type without `_` placeholders | LL | let x = |a: (), b: ()| -> std::result::Result<(), _> { diff --git a/src/test/ui/integer-literal-suffix-inference.stderr b/src/test/ui/integer-literal-suffix-inference.stderr index 80b601dc439..bbb57d97c39 100644 --- a/src/test/ui/integer-literal-suffix-inference.stderr +++ b/src/test/ui/integer-literal-suffix-inference.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | id_i8(a16); | ^^^ expected i8, found i16 + | help: you can convert an `i16` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(a16.try_into().unwrap()); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | id_i8(a32); | ^^^ expected i8, found i32 + | help: you can convert an `i32` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(a32.try_into().unwrap()); @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | id_i8(a64); | ^^^ expected i8, found i64 + | help: you can convert an `i64` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(a64.try_into().unwrap()); @@ -42,6 +45,7 @@ error[E0308]: mismatched types | LL | id_i16(a32); | ^^^ expected i16, found i32 + | help: you can convert an `i32` to `i16` and panic if the converted value wouldn't fit | LL | id_i16(a32.try_into().unwrap()); @@ -52,6 +56,7 @@ error[E0308]: mismatched types | LL | id_i16(a64); | ^^^ expected i16, found i64 + | help: you can convert an `i64` to `i16` and panic if the converted value wouldn't fit | LL | id_i16(a64.try_into().unwrap()); @@ -80,6 +85,7 @@ error[E0308]: mismatched types | LL | id_i32(a64); | ^^^ expected i32, found i64 + | help: you can convert an `i64` to `i32` and panic if the converted value wouldn't fit | LL | id_i32(a64.try_into().unwrap()); @@ -117,6 +123,7 @@ error[E0308]: mismatched types | LL | id_i8(c16); | ^^^ expected i8, found i16 + | help: you can convert an `i16` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(c16.try_into().unwrap()); @@ -127,6 +134,7 @@ error[E0308]: mismatched types | LL | id_i8(c32); | ^^^ expected i8, found i32 + | help: you can convert an `i32` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(c32.try_into().unwrap()); @@ -137,6 +145,7 @@ error[E0308]: mismatched types | LL | id_i8(c64); | ^^^ expected i8, found i64 + | help: you can convert an `i64` to `i8` and panic if the converted value wouldn't fit | LL | id_i8(c64.try_into().unwrap()); @@ -156,6 +165,7 @@ error[E0308]: mismatched types | LL | id_i16(c32); | ^^^ expected i16, found i32 + | help: you can convert an `i32` to `i16` and panic if the converted value wouldn't fit | LL | id_i16(c32.try_into().unwrap()); @@ -166,6 +176,7 @@ error[E0308]: mismatched types | LL | id_i16(c64); | ^^^ expected i16, found i64 + | help: you can convert an `i64` to `i16` and panic if the converted value wouldn't fit | LL | id_i16(c64.try_into().unwrap()); @@ -194,6 +205,7 @@ error[E0308]: mismatched types | LL | id_i32(c64); | ^^^ expected i32, found i64 + | help: you can convert an `i64` to `i32` and panic if the converted value wouldn't fit | LL | id_i32(c64.try_into().unwrap()); @@ -231,6 +243,7 @@ error[E0308]: mismatched types | LL | id_u8(b16); | ^^^ expected u8, found u16 + | help: you can convert an `u16` to `u8` and panic if the converted value wouldn't fit | LL | id_u8(b16.try_into().unwrap()); @@ -241,6 +254,7 @@ error[E0308]: mismatched types | LL | id_u8(b32); | ^^^ expected u8, found u32 + | help: you can convert an `u32` to `u8` and panic if the converted value wouldn't fit | LL | id_u8(b32.try_into().unwrap()); @@ -251,6 +265,7 @@ error[E0308]: mismatched types | LL | id_u8(b64); | ^^^ expected u8, found u64 + | help: you can convert an `u64` to `u8` and panic if the converted value wouldn't fit | LL | id_u8(b64.try_into().unwrap()); @@ -270,6 +285,7 @@ error[E0308]: mismatched types | LL | id_u16(b32); | ^^^ expected u16, found u32 + | help: you can convert an `u32` to `u16` and panic if the converted value wouldn't fit | LL | id_u16(b32.try_into().unwrap()); @@ -280,6 +296,7 @@ error[E0308]: mismatched types | LL | id_u16(b64); | ^^^ expected u16, found u64 + | help: you can convert an `u64` to `u16` and panic if the converted value wouldn't fit | LL | id_u16(b64.try_into().unwrap()); @@ -308,6 +325,7 @@ error[E0308]: mismatched types | LL | id_u32(b64); | ^^^ expected u32, found u64 + | help: you can convert an `u64` to `u32` and panic if the converted value wouldn't fit | LL | id_u32(b64.try_into().unwrap()); diff --git a/src/test/ui/issues/issue-13359.stderr b/src/test/ui/issues/issue-13359.stderr index 7cfd754f72d..76c5f39fe10 100644 --- a/src/test/ui/issues/issue-13359.stderr +++ b/src/test/ui/issues/issue-13359.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | foo(1*(1 as isize)); | ^^^^^^^^^^^^^^ expected i16, found isize + | help: you can convert an `isize` to `i16` and panic if the converted value wouldn't fit | LL | foo((1*(1 as isize)).try_into().unwrap()); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | bar(1*(1 as usize)); | ^^^^^^^^^^^^^^ expected u32, found usize + | help: you can convert an `usize` to `u32` and panic if the converted value wouldn't fit | LL | bar((1*(1 as usize)).try_into().unwrap()); diff --git a/src/test/ui/issues/issue-1362.stderr b/src/test/ui/issues/issue-1362.stderr index 3f4fdee50fd..7ffbbbce7a8 100644 --- a/src/test/ui/issues/issue-1362.stderr +++ b/src/test/ui/issues/issue-1362.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | let x: u32 = 20i32; | ^^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | let x: u32 = 20u32; diff --git a/src/test/ui/issues/issue-1448-2.stderr b/src/test/ui/issues/issue-1448-2.stderr index a9fabca50a6..28c561462d4 100644 --- a/src/test/ui/issues/issue-1448-2.stderr +++ b/src/test/ui/issues/issue-1448-2.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | println!("{}", foo(10i32)); | ^^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | println!("{}", foo(10u32)); diff --git a/src/test/ui/issues/issue-17546.stderr b/src/test/ui/issues/issue-17546.stderr index 291086d4f69..f3242919e01 100644 --- a/src/test/ui/issues/issue-17546.stderr +++ b/src/test/ui/issues/issue-17546.stderr @@ -3,6 +3,7 @@ error[E0573]: expected type, found variant `NoResult` | LL | fn new() -> NoResult<MyEnum, String> { | ^^^^^^^^^^^^^^^^^^^^^^^^ + | help: try using the variant's enum | LL | fn new() -> foo::MyEnum { @@ -17,6 +18,7 @@ error[E0573]: expected type, found variant `Result` | LL | fn new() -> Result<foo::MyEnum, String> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a type + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::fmt::Result; @@ -34,6 +36,7 @@ error[E0573]: expected type, found variant `Result` | LL | fn new() -> Result<foo::MyEnum, String> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a type + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::fmt::Result; @@ -51,6 +54,7 @@ error[E0573]: expected type, found variant `NoResult` | LL | fn newer() -> NoResult<foo::MyEnum, String> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | help: try using the variant's enum | LL | fn newer() -> foo::MyEnum { diff --git a/src/test/ui/issues/issue-22644.stderr b/src/test/ui/issues/issue-22644.stderr index 0fe167963c3..2bddcc2ba56 100644 --- a/src/test/ui/issues/issue-22644.stderr +++ b/src/test/ui/issues/issue-22644.stderr @@ -50,6 +50,7 @@ LL | < | ^ not interpreted as comparison LL | 4); | - interpreted as generic arguments + | help: try comparing the cast value | LL | println!("{}", (a @@ -64,6 +65,7 @@ LL | < | ^ not interpreted as comparison LL | 5); | - interpreted as generic arguments + | help: try comparing the cast value | LL | println!("{}", (a diff --git a/src/test/ui/issues/issue-22933-3.stderr b/src/test/ui/issues/issue-22933-3.stderr index e0e8b5e18a4..72bca3b0408 100644 --- a/src/test/ui/issues/issue-22933-3.stderr +++ b/src/test/ui/issues/issue-22933-3.stderr @@ -3,6 +3,7 @@ error[E0599]: no associated item named `MIN` found for type `u8` in the current | LL | const FOO: [u32; u8::MIN as usize] = []; | ^^^ associated item not found in `u8` + | help: you are looking for the module in `std`, not the primitive type | LL | const FOO: [u32; std::u8::MIN as usize] = []; diff --git a/src/test/ui/issues/issue-31910.stderr b/src/test/ui/issues/issue-31910.stderr index e7555b958a3..19b67ef2a72 100644 --- a/src/test/ui/issues/issue-31910.stderr +++ b/src/test/ui/issues/issue-31910.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | X = Trait::Number, | ^^^^^^^^^^^^^ expected isize, found i32 + | help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit | LL | X = Trait::Number.try_into().unwrap(), diff --git a/src/test/ui/issues/issue-35075.stderr b/src/test/ui/issues/issue-35075.stderr index 2aeb6b15224..85acbfb8de4 100644 --- a/src/test/ui/issues/issue-35075.stderr +++ b/src/test/ui/issues/issue-35075.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Foo` in this scope | LL | inner: Foo<T> | ^^^ not found in this scope + | help: there is an enum variant `Baz::Foo`; try using the variant's enum | LL | inner: Baz @@ -13,6 +14,7 @@ error[E0412]: cannot find type `Foo` in this scope | LL | Foo(Foo<T>) | ^^^ not found in this scope + | help: there is an enum variant `Baz::Foo`; try using the variant's enum | LL | Foo(Baz) diff --git a/src/test/ui/issues/issue-35675.stderr b/src/test/ui/issues/issue-35675.stderr index 91814d94963..8072141aefd 100644 --- a/src/test/ui/issues/issue-35675.stderr +++ b/src/test/ui/issues/issue-35675.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Apple` in this scope | LL | fn should_return_fruit() -> Apple { | ^^^^^ not found in this scope + | help: there is an enum variant `Fruit::Apple`; try using the variant's enum | LL | fn should_return_fruit() -> Fruit { @@ -13,6 +14,7 @@ error[E0425]: cannot find function `Apple` in this scope | LL | Apple(5) | ^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use Fruit::Apple; @@ -32,6 +34,7 @@ error[E0425]: cannot find function `Apple` in this scope | LL | Apple(5) | ^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use Fruit::Apple; @@ -51,6 +54,7 @@ error[E0412]: cannot find type `Variant3` in this scope | LL | fn bar() -> Variant3 { | ^^^^^^^^ not found in this scope + | help: there is an enum variant `x::Enum::Variant3`; try using the variant's enum | LL | fn bar() -> x::Enum { diff --git a/src/test/ui/issues/issue-35976.stderr b/src/test/ui/issues/issue-35976.stderr index d12198de5e1..99b243a0777 100644 --- a/src/test/ui/issues/issue-35976.stderr +++ b/src/test/ui/issues/issue-35976.stderr @@ -3,6 +3,7 @@ error: the `wait` method cannot be invoked on a trait object | LL | arg.wait(); | ^^^^ + | help: another candidate was found in the following trait, perhaps add a `use` for it: | LL | use private::Future; diff --git a/src/test/ui/issues/issue-37534.stderr b/src/test/ui/issues/issue-37534.stderr index fadb9cdd1a3..1a05c7ab420 100644 --- a/src/test/ui/issues/issue-37534.stderr +++ b/src/test/ui/issues/issue-37534.stderr @@ -3,6 +3,7 @@ error[E0404]: expected trait, found derive macro `Hash` | LL | struct Foo<T: ?Hash> { } | ^^^^ not a trait + | help: possible better candidate is found in another module, you can import it into scope | LL | use std::hash::Hash; diff --git a/src/test/ui/issues/issue-38293.stderr b/src/test/ui/issues/issue-38293.stderr index d16d45277c0..cc3c72b496f 100644 --- a/src/test/ui/issues/issue-38293.stderr +++ b/src/test/ui/issues/issue-38293.stderr @@ -9,6 +9,7 @@ error[E0423]: expected function, found module `baz` | LL | baz(); | ^^^ not a function + | help: possible better candidate is found in another module, you can import it into scope | LL | use bar::baz; diff --git a/src/test/ui/issues/issue-41652/issue-41652.stderr b/src/test/ui/issues/issue-41652/issue-41652.stderr index 3c71536de2e..f7107d61ac3 100644 --- a/src/test/ui/issues/issue-41652/issue-41652.stderr +++ b/src/test/ui/issues/issue-41652/issue-41652.stderr @@ -3,6 +3,7 @@ error[E0689]: can't call method `f` on ambiguous numeric type `{integer}` | LL | 3.f() | ^ + | help: you must specify a concrete type for this numeric value, like `i32` | LL | 3_i32.f() diff --git a/src/test/ui/issues/issue-42944.stderr b/src/test/ui/issues/issue-42944.stderr index ba285953dbd..4ab272b9e9b 100644 --- a/src/test/ui/issues/issue-42944.stderr +++ b/src/test/ui/issues/issue-42944.stderr @@ -9,6 +9,7 @@ error[E0425]: cannot find function `B` in this scope | LL | B(()); | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use foo::B; diff --git a/src/test/ui/issues/issue-4366-2.stderr b/src/test/ui/issues/issue-4366-2.stderr index 63013a6523a..60a1155c614 100644 --- a/src/test/ui/issues/issue-4366-2.stderr +++ b/src/test/ui/issues/issue-4366-2.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Bar` in this scope | LL | fn sub() -> Bar { 1 } | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use a::b::Bar; @@ -13,6 +14,7 @@ error[E0423]: expected function, found module `foo` | LL | foo(); | ^^^ not a function + | help: possible better candidates are found in other modules, you can import them into scope | LL | use foo::foo; diff --git a/src/test/ui/issues/issue-4366.stderr b/src/test/ui/issues/issue-4366.stderr index c59ab004557..d931d519117 100644 --- a/src/test/ui/issues/issue-4366.stderr +++ b/src/test/ui/issues/issue-4366.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find function `foo` in this scope | LL | fn sub() -> isize { foo(); 1 } | ^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use foo::foo; diff --git a/src/test/ui/issues/issue-44406.stderr b/src/test/ui/issues/issue-44406.stderr index 108542c9b6f..a98d833969e 100644 --- a/src/test/ui/issues/issue-44406.stderr +++ b/src/test/ui/issues/issue-44406.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `true` | LL | foo!(true); | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | foo!(r#true); diff --git a/src/test/ui/issues/issue-47377.stderr b/src/test/ui/issues/issue-47377.stderr index 7d11a8c8021..3460c1dae22 100644 --- a/src/test/ui/issues/issue-47377.stderr +++ b/src/test/ui/issues/issue-47377.stderr @@ -6,6 +6,7 @@ LL | let _a = b + ", World!"; | | | | | `+` cannot be used to concatenate two `&str` strings | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _a = b.to_owned() + ", World!"; diff --git a/src/test/ui/issues/issue-47380.stderr b/src/test/ui/issues/issue-47380.stderr index 89a154c5109..f334dcbd916 100644 --- a/src/test/ui/issues/issue-47380.stderr +++ b/src/test/ui/issues/issue-47380.stderr @@ -6,6 +6,7 @@ LL | println!("🦀🦀🦀🦀🦀"); let _a = b + ", World!"; | | | | | `+` cannot be used to concatenate two `&str` strings | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | println!("🦀🦀🦀🦀🦀"); let _a = b.to_owned() + ", World!"; diff --git a/src/test/ui/issues/issue-49257.stderr b/src/test/ui/issues/issue-49257.stderr index 43a505cfe85..b9d96dc7907 100644 --- a/src/test/ui/issues/issue-49257.stderr +++ b/src/test/ui/issues/issue-49257.stderr @@ -6,6 +6,7 @@ LL | let Point { .., y, } = p; | | | | | expected `}` | `..` must be at the end and cannot have a trailing comma + | help: move the `..` to the end of the field list | LL | let Point { y, .. } = p; @@ -19,6 +20,7 @@ LL | let Point { .., y } = p; | | | | | expected `}` | `..` must be at the end and cannot have a trailing comma + | help: move the `..` to the end of the field list | LL | let Point { y , .. } = p; diff --git a/src/test/ui/issues/issue-50571.stderr b/src/test/ui/issues/issue-50571.stderr index 834635388a0..df9d10b3950 100644 --- a/src/test/ui/issues/issue-50571.stderr +++ b/src/test/ui/issues/issue-50571.stderr @@ -3,6 +3,7 @@ error[E0642]: patterns aren't allowed in methods without bodies | LL | fn foo([a, b]: [i32; 2]) {} | ^^^^^^ + | help: give this argument a name or use an underscore to ignore it | LL | fn foo(_: [i32; 2]) {} diff --git a/src/test/ui/issues/issue-50599.stderr b/src/test/ui/issues/issue-50599.stderr index 4bd74c3c785..5c8cac44438 100644 --- a/src/test/ui/issues/issue-50599.stderr +++ b/src/test/ui/issues/issue-50599.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find value `LOG10_2` in module `std::f64` | LL | const M: usize = (f64::from(N) * std::f64::LOG10_2) as usize; | ^^^^^^^ not found in `std::f64` + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::f32::consts::LOG10_2; diff --git a/src/test/ui/issues/issue-51874.stderr b/src/test/ui/issues/issue-51874.stderr index 9b1a6bf2e12..c7c4843a0fa 100644 --- a/src/test/ui/issues/issue-51874.stderr +++ b/src/test/ui/issues/issue-51874.stderr @@ -3,6 +3,7 @@ error[E0689]: can't call method `pow` on ambiguous numeric type `{float}` | LL | let a = (1.0).pow(1.0); | ^^^ + | help: you must specify a concrete type for this numeric value, like `f32` | LL | let a = (1.0_f32).pow(1.0); diff --git a/src/test/ui/issues/issue-5239-1.stderr b/src/test/ui/issues/issue-5239-1.stderr index a95014fb12d..f4f0f17d001 100644 --- a/src/test/ui/issues/issue-5239-1.stderr +++ b/src/test/ui/issues/issue-5239-1.stderr @@ -5,6 +5,7 @@ LL | let x = |ref x: isize| { x += 1; }; | -^^^^^ | | | cannot use `+=` on type `&isize` + | help: `+=` can be used on 'isize', you can dereference `x` | LL | let x = |ref x: isize| { *x += 1; }; diff --git a/src/test/ui/issues/issue-56685.stderr b/src/test/ui/issues/issue-56685.stderr index 4a461c72b24..30fedbe1653 100644 --- a/src/test/ui/issues/issue-56685.stderr +++ b/src/test/ui/issues/issue-56685.stderr @@ -19,6 +19,7 @@ error: unused variable: `x` | LL | F::A(x, y) | F::B(x, y) => { y }, | ^ ^ + | help: consider prefixing with an underscore | LL | F::A(_x, y) | F::B(_x, y) => { y }, @@ -41,6 +42,7 @@ error: unused variable: `x` | LL | let _ = if let F::A(x, y) | F::B(x, y) = F::A(1, 2) { | ^ ^ + | help: consider prefixing with an underscore | LL | let _ = if let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) { @@ -51,6 +53,7 @@ error: unused variable: `x` | LL | while let F::A(x, y) | F::B(x, y) = F::A(1, 2) { | ^ ^ + | help: consider prefixing with an underscore | LL | while let F::A(_x, y) | F::B(_x, y) = F::A(1, 2) { diff --git a/src/test/ui/issues/issue-57198.stderr b/src/test/ui/issues/issue-57198.stderr index 2ab552ccbd3..197c4cc967d 100644 --- a/src/test/ui/issues/issue-57198.stderr +++ b/src/test/ui/issues/issue-57198.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `for` | LL | m::for(); | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | m::r#for(); diff --git a/src/test/ui/issues/issue-58857.stderr b/src/test/ui/issues/issue-58857.stderr index 56e87215a80..ab9a0130c00 100644 --- a/src/test/ui/issues/issue-58857.stderr +++ b/src/test/ui/issues/issue-58857.stderr @@ -3,6 +3,7 @@ error: negative trait bounds are not supported | LL | impl<A: !Valid> Conj<A>{} | ^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bound error: aborting due to previous error diff --git a/src/test/ui/issues/issue-59488.stderr b/src/test/ui/issues/issue-59488.stderr index e0cb1f7b96d..2397d583488 100644 --- a/src/test/ui/issues/issue-59488.stderr +++ b/src/test/ui/issues/issue-59488.stderr @@ -41,6 +41,7 @@ LL | foo > foo; | --- ^ --- fn() -> i32 {foo} | | | fn() -> i32 {foo} + | help: you might have forgotten to call this function | LL | foo() > foo; diff --git a/src/test/ui/issues/issue-62554.stderr b/src/test/ui/issues/issue-62554.stderr index 9675d540e72..87aaa036613 100644 --- a/src/test/ui/issues/issue-62554.stderr +++ b/src/test/ui/issues/issue-62554.stderr @@ -18,6 +18,7 @@ LL | fn foo(u: u8) { if u8 macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s | -- ^^^^^^^^^^^ expected `{` | | | this `if` statement has a condition, but no block + | help: try placing this code inside a block | LL | fn foo(u: u8) { if u8 { macro_rules! u8 { (u6) => { fn uuuuuuuuuuu() { use s loo mod u8 { diff --git a/src/test/ui/issues/issue-64732.stderr b/src/test/ui/issues/issue-64732.stderr index fc0e8e3bdb2..3b00ffc8f6c 100644 --- a/src/test/ui/issues/issue-64732.stderr +++ b/src/test/ui/issues/issue-64732.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | let _foo = b'hello\0'; | ^^^^^^^^^ + | help: if you meant to write a byte string literal, use double quotes | LL | let _foo = b"hello\0"; @@ -13,6 +14,7 @@ error: character literal may only contain one codepoint | LL | let _bar = 'hello'; | ^^^^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let _bar = "hello"; diff --git a/src/test/ui/issues/issue-8761.stderr b/src/test/ui/issues/issue-8761.stderr index 28847c5a82a..5a657575c1d 100644 --- a/src/test/ui/issues/issue-8761.stderr +++ b/src/test/ui/issues/issue-8761.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | A = 1i64, | ^^^^ expected isize, found i64 + | help: change the type of the numeric literal from `i64` to `isize` | LL | A = 1isize, @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | B = 2u8 | ^^^ expected isize, found u8 + | help: change the type of the numeric literal from `u8` to `isize` | LL | B = 2isize diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr b/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr index 73ac113f1b1..5f5297be42a 100644 --- a/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr +++ b/src/test/ui/keyword/extern/keyword-extern-as-identifier-pat.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `extern` | LL | let extern = 0; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#extern = 0; diff --git a/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr b/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr index 4b833f80681..05802f2d367 100644 --- a/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr +++ b/src/test/ui/keyword/extern/keyword-extern-as-identifier-use.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `extern` | LL | use extern::foo; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use r#extern::foo; diff --git a/src/test/ui/lexical-scopes.stderr b/src/test/ui/lexical-scopes.stderr index 38c7393e136..a7843a93011 100644 --- a/src/test/ui/lexical-scopes.stderr +++ b/src/test/ui/lexical-scopes.stderr @@ -3,6 +3,7 @@ error[E0574]: expected struct, variant or union type, found type parameter `T` | LL | let t = T { i: 0 }; | ^ not a struct, variant or union type + | help: possible better candidate is found in another module, you can import it into scope | LL | use T; diff --git a/src/test/ui/lifetime_starts_expressions.stderr b/src/test/ui/lifetime_starts_expressions.stderr index bacba10b55f..a2b4f114b95 100644 --- a/src/test/ui/lifetime_starts_expressions.stderr +++ b/src/test/ui/lifetime_starts_expressions.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `loop` | LL | loop { break 'label: loop { break 'label 42; }; } | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | loop { break 'label: r#loop { break 'label 42; }; } diff --git a/src/test/ui/lint/use_suggestion_json.stderr b/src/test/ui/lint/use_suggestion_json.stderr index 1da5acc9661..3e77d193fa4 100644 --- a/src/test/ui/lint/use_suggestion_json.stderr +++ b/src/test/ui/lint/use_suggestion_json.stderr @@ -385,6 +385,7 @@ mod foo { \u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m \u001b[0m\u001b[1m\u001b[38;5;12mLL\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m let x: Iter;\u001b[0m \u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mnot found in this scope\u001b[0m +\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m \u001b[0m\u001b[1m\u001b[38;5;14mhelp\u001b[0m\u001b[0m: possible candidates are found in other modules, you can import them into scope\u001b[0m \u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m \u001b[0m\u001b[1m\u001b[38;5;12mLL\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0muse std::collections::binary_heap::Iter;\u001b[0m diff --git a/src/test/ui/loops/loop-break-value-no-repeat.stderr b/src/test/ui/loops/loop-break-value-no-repeat.stderr index 066dce531a5..ff93e9220e9 100644 --- a/src/test/ui/loops/loop-break-value-no-repeat.stderr +++ b/src/test/ui/loops/loop-break-value-no-repeat.stderr @@ -3,6 +3,7 @@ error[E0571]: `break` with value from a `for` loop | LL | break 22 | ^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `for` loop | LL | break diff --git a/src/test/ui/loops/loop-break-value.stderr b/src/test/ui/loops/loop-break-value.stderr index fef5b587306..b2e3ebc53ad 100644 --- a/src/test/ui/loops/loop-break-value.stderr +++ b/src/test/ui/loops/loop-break-value.stderr @@ -11,6 +11,7 @@ error[E0571]: `break` with value from a `while` loop | LL | break (); | ^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `while` loop | LL | break; @@ -21,6 +22,7 @@ error[E0571]: `break` with value from a `while` loop | LL | break 'while_loop 123; | ^^^^^^^^^^^^^^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `while` loop | LL | break; @@ -31,6 +33,7 @@ error[E0571]: `break` with value from a `while let` loop | LL | if break () { | ^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `while let` loop | LL | if break { @@ -41,6 +44,7 @@ error[E0571]: `break` with value from a `while let` loop | LL | break None; | ^^^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `while let` loop | LL | break; @@ -51,6 +55,7 @@ error[E0571]: `break` with value from a `while let` loop | LL | break 'while_let_loop "nope"; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `while let` loop | LL | break; @@ -61,6 +66,7 @@ error[E0571]: `break` with value from a `for` loop | LL | break (); | ^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `for` loop | LL | break; @@ -71,6 +77,7 @@ error[E0571]: `break` with value from a `for` loop | LL | break [()]; | ^^^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `for` loop | LL | break; @@ -81,6 +88,7 @@ error[E0571]: `break` with value from a `for` loop | LL | break 'for_loop Some(17); | ^^^^^^^^^^^^^^^^^^^^^^^^ can only break with a value inside `loop` or breakable block + | help: instead, use `break` on its own without a value inside this `for` loop | LL | break; diff --git a/src/test/ui/macros/bad_hello.stderr b/src/test/ui/macros/bad_hello.stderr index ab3cbf058ba..6ef4cdcb020 100644 --- a/src/test/ui/macros/bad_hello.stderr +++ b/src/test/ui/macros/bad_hello.stderr @@ -3,6 +3,7 @@ error: format argument must be a string literal | LL | println!(3 + 4); | ^^^^^ + | help: you might be missing a string literal to format with | LL | println!("{}", 3 + 4); @@ -13,6 +14,7 @@ error: format argument must be a string literal | LL | println!(3, 4); | ^ + | help: you might be missing a string literal to format with | LL | println!("{} {}", 3, 4); diff --git a/src/test/ui/macros/derive-in-eager-expansion-hang.stderr b/src/test/ui/macros/derive-in-eager-expansion-hang.stderr index 5ca4088e585..0e2fb4c8af5 100644 --- a/src/test/ui/macros/derive-in-eager-expansion-hang.stderr +++ b/src/test/ui/macros/derive-in-eager-expansion-hang.stderr @@ -11,6 +11,7 @@ LL | | } ... LL | format_args!(hang!()); | ------- in this macro invocation + | help: you might be missing a string literal to format with | LL | format_args!("{}", hang!()); diff --git a/src/test/ui/macros/format-parse-errors.stderr b/src/test/ui/macros/format-parse-errors.stderr index 906738d7382..02b704299ff 100644 --- a/src/test/ui/macros/format-parse-errors.stderr +++ b/src/test/ui/macros/format-parse-errors.stderr @@ -43,6 +43,7 @@ error: format argument must be a string literal | LL | format!(123); | ^^^ + | help: you might be missing a string literal to format with | LL | format!("{}", 123); diff --git a/src/test/ui/macros/issue-30143.stderr b/src/test/ui/macros/issue-30143.stderr index f0c604a23ff..19d977f69a2 100644 --- a/src/test/ui/macros/issue-30143.stderr +++ b/src/test/ui/macros/issue-30143.stderr @@ -3,6 +3,7 @@ error: format argument must be a string literal | LL | println!(0); | ^ + | help: you might be missing a string literal to format with | LL | println!("{}", 0); @@ -13,6 +14,7 @@ error: format argument must be a string literal | LL | eprintln!('a'); | ^^^ + | help: you might be missing a string literal to format with | LL | eprintln!("{}", 'a'); @@ -23,6 +25,7 @@ error: format argument must be a string literal | LL | writeln!(s, true).unwrap(); | ^^^^ + | help: you might be missing a string literal to format with | LL | writeln!(s, "{}", true).unwrap(); diff --git a/src/test/ui/macros/macro-backtrace-invalid-internals.stderr b/src/test/ui/macros/macro-backtrace-invalid-internals.stderr index 96054de801c..85dee9f24fe 100644 --- a/src/test/ui/macros/macro-backtrace-invalid-internals.stderr +++ b/src/test/ui/macros/macro-backtrace-invalid-internals.stderr @@ -33,6 +33,7 @@ LL | 2.0.neg() ... LL | real_method_stmt!(); | -------------------- in this macro invocation + | help: you must specify a concrete type for this numeric value, like `f32` | LL | 2.0_f32.neg() @@ -73,6 +74,7 @@ LL | 2.0.neg() ... LL | let _ = real_method_expr!(); | ------------------- in this macro invocation + | help: you must specify a concrete type for this numeric value, like `f32` | LL | 2.0_f32.neg() diff --git a/src/test/ui/macros/macro-outer-attributes.stderr b/src/test/ui/macros/macro-outer-attributes.stderr index 838333b95c0..86a6baca053 100644 --- a/src/test/ui/macros/macro-outer-attributes.stderr +++ b/src/test/ui/macros/macro-outer-attributes.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find function `bar` in module `a` | LL | a::bar(); | ^^^ not found in `a` + | help: possible candidate is found in another module, you can import it into scope | LL | use b::bar; diff --git a/src/test/ui/macros/macros-nonfatal-errors.stderr b/src/test/ui/macros/macros-nonfatal-errors.stderr index f0ea5761bc8..b2fdbb736c8 100644 --- a/src/test/ui/macros/macros-nonfatal-errors.stderr +++ b/src/test/ui/macros/macros-nonfatal-errors.stderr @@ -45,6 +45,7 @@ error: format argument must be a string literal | LL | format!(invalid); | ^^^^^^^ + | help: you might be missing a string literal to format with | LL | format!("{}", invalid); diff --git a/src/test/ui/malformed/malformed-unwind-2.stderr b/src/test/ui/malformed/malformed-unwind-2.stderr index ed88b9afd87..28512bf9ef1 100644 --- a/src/test/ui/malformed/malformed-unwind-2.stderr +++ b/src/test/ui/malformed/malformed-unwind-2.stderr @@ -3,6 +3,7 @@ error[E0633]: malformed `unwind` attribute input | LL | #[unwind(allowed, aborts)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid argument + | help: the allowed arguments are `allowed` and `aborts` | LL | #[unwind(allowed)] @@ -15,6 +16,7 @@ error[E0633]: malformed `unwind` attribute input | LL | #[unwind(unsupported)] | ^^^^^^^^^^^^^^^^^^^^^^ invalid argument + | help: the allowed arguments are `allowed` and `aborts` | LL | #[unwind(allowed)] diff --git a/src/test/ui/meta-expected-error-correct-rev.a.stderr b/src/test/ui/meta-expected-error-correct-rev.a.stderr index db1d5070e7f..968b87288c0 100644 --- a/src/test/ui/meta-expected-error-correct-rev.a.stderr +++ b/src/test/ui/meta-expected-error-correct-rev.a.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | let x: u32 = 22_usize; | ^^^^^^^^ expected u32, found usize + | help: change the type of the numeric literal from `usize` to `u32` | LL | let x: u32 = 22_u32; diff --git a/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr b/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr index b1bd749bef4..8dfbde92f64 100644 --- a/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr +++ b/src/test/ui/methods/method-ambig-one-trait-unknown-int-type.stderr @@ -11,6 +11,7 @@ error[E0308]: mismatched types | LL | let y: usize = x.foo(); | ^^^^^^^ expected usize, found isize + | help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit | LL | let y: usize = x.foo().try_into().unwrap(); diff --git a/src/test/ui/methods/method-on-ambiguous-numeric-type.stderr b/src/test/ui/methods/method-on-ambiguous-numeric-type.stderr index 40e765abe27..d9e250882e1 100644 --- a/src/test/ui/methods/method-on-ambiguous-numeric-type.stderr +++ b/src/test/ui/methods/method-on-ambiguous-numeric-type.stderr @@ -3,6 +3,7 @@ error[E0689]: can't call method `neg` on ambiguous numeric type `{float}` | LL | let x = 2.0.neg(); | ^^^ + | help: you must specify a concrete type for this numeric value, like `f32` | LL | let x = 2.0_f32.neg(); @@ -13,6 +14,7 @@ error[E0689]: can't call method `neg` on ambiguous numeric type `{float}` | LL | let x = y.neg(); | ^^^ + | help: you must specify a type for this binding, like `f32` | LL | let y: f32 = 2.0; @@ -31,6 +33,7 @@ error[E0689]: can't call method `pow` on ambiguous numeric type `{integer}` | LL | local_bar.pow(2); | ^^^ + | help: you must specify a type for this binding, like `i32` | LL | ($ident:ident) => { let $ident: i32 = 42; } diff --git a/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr b/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr index 00a4f9d48ff..a8da87d60bf 100644 --- a/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr +++ b/src/test/ui/mismatched_types/closure-arg-count-expected-type-issue-47244.stderr @@ -5,6 +5,7 @@ LL | let _n = m.iter().map(|_, b| { | ^^^ ------ takes 2 distinct arguments | | | expected closure that takes a single 2-tuple as argument + | help: change the closure to accept a tuple instead of individual arguments | LL | let _n = m.iter().map(|(_, b)| { diff --git a/src/test/ui/mismatched_types/closure-arg-count.stderr b/src/test/ui/mismatched_types/closure-arg-count.stderr index ed2b3f0c3ce..13954343246 100644 --- a/src/test/ui/mismatched_types/closure-arg-count.stderr +++ b/src/test/ui/mismatched_types/closure-arg-count.stderr @@ -5,6 +5,7 @@ LL | [1, 2, 3].sort_by(|| panic!()); | ^^^^^^^ -- takes 0 arguments | | | expected closure that takes 2 arguments + | help: consider changing the closure to take and ignore the expected arguments | LL | [1, 2, 3].sort_by(|_, _| panic!()); @@ -25,6 +26,7 @@ LL | [1, 2, 3].sort_by(|(tuple, tuple2)| panic!()); | ^^^^^^^ ----------------- takes a single 2-tuple as argument | | | expected closure that takes 2 distinct arguments + | help: change the closure to take multiple arguments instead of a single tuple | LL | [1, 2, 3].sort_by(|tuple, tuple2| panic!()); @@ -37,6 +39,7 @@ LL | [1, 2, 3].sort_by(|(tuple, tuple2): (usize, _)| panic!()); | ^^^^^^^ ----------------------------- takes a single 2-tuple as argument | | | expected closure that takes 2 distinct arguments + | help: change the closure to take multiple arguments instead of a single tuple | LL | [1, 2, 3].sort_by(|tuple, tuple2| panic!()); @@ -52,6 +55,7 @@ LL | f(|| panic!()); | ^ -- takes 0 arguments | | | expected closure that takes 1 argument + | help: consider changing the closure to take and ignore the expected argument | LL | f(|_| panic!()); @@ -67,6 +71,7 @@ LL | f( move || panic!()); | ^ ---------- takes 0 arguments | | | expected closure that takes 1 argument + | help: consider changing the closure to take and ignore the expected argument | LL | f( move |_| panic!()); @@ -79,6 +84,7 @@ LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(|i, x| i); | ^^^ ------ takes 2 distinct arguments | | | expected closure that takes a single 2-tuple as argument + | help: change the closure to accept a tuple instead of individual arguments | LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i); @@ -91,6 +97,7 @@ LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(|i: usize, x| i); | ^^^ ------------- takes 2 distinct arguments | | | expected closure that takes a single 2-tuple as argument + | help: change the closure to accept a tuple instead of individual arguments | LL | let _it = vec![1, 2, 3].into_iter().enumerate().map(|(i, x)| i); diff --git a/src/test/ui/mismatched_types/issue-26480.stderr b/src/test/ui/mismatched_types/issue-26480.stderr index 881d9fd3202..9d5cd6eeb55 100644 --- a/src/test/ui/mismatched_types/issue-26480.stderr +++ b/src/test/ui/mismatched_types/issue-26480.stderr @@ -6,6 +6,7 @@ LL | $arr.len() * size_of($arr[0])); ... LL | write!(hello); | -------------- in this macro invocation + | help: you can convert an `usize` to `u64` and panic if the converted value wouldn't fit | LL | ($arr.len() * size_of($arr[0])).try_into().unwrap()); diff --git a/src/test/ui/mismatched_types/numeric-literal-cast.stderr b/src/test/ui/mismatched_types/numeric-literal-cast.stderr index ec53f1f0ecc..47ba1d26be5 100644 --- a/src/test/ui/mismatched_types/numeric-literal-cast.stderr +++ b/src/test/ui/mismatched_types/numeric-literal-cast.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | foo(1u8); | ^^^ expected u16, found u8 + | help: change the type of the numeric literal from `u8` to `u16` | LL | foo(1u16); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | foo1(2f32); | ^^^^ expected f64, found f32 + | help: change the type of the numeric literal from `f32` to `f64` | LL | foo1(2f64); @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | foo2(3i16); | ^^^^ expected i32, found i16 + | help: change the type of the numeric literal from `i16` to `i32` | LL | foo2(3i32); diff --git a/src/test/ui/mismatched_types/recovered-block.stderr b/src/test/ui/mismatched_types/recovered-block.stderr index 7834750630b..207dc78a4b9 100644 --- a/src/test/ui/mismatched_types/recovered-block.stderr +++ b/src/test/ui/mismatched_types/recovered-block.stderr @@ -3,6 +3,7 @@ error: missing `struct` for struct definition | LL | pub Foo { text } | ^ + | help: add `struct` here to parse `Foo` as a public struct | LL | pub struct Foo { text } diff --git a/src/test/ui/namespace/namespace-mix.stderr b/src/test/ui/namespace/namespace-mix.stderr index 77da07f40d5..c3f2c79fdd2 100644 --- a/src/test/ui/namespace/namespace-mix.stderr +++ b/src/test/ui/namespace/namespace-mix.stderr @@ -42,6 +42,7 @@ LL | V {}, ... LL | check(m7::V); | ^^^^^ did you mean `m7::V { /* fields */ }`? + | help: a tuple variant with a similar name exists | LL | check(m7::TV); @@ -58,6 +59,7 @@ error[E0423]: expected value, found struct variant `xm7::V` | LL | check(xm7::V); | ^^^^^^ did you mean `xm7::V { /* fields */ }`? + | help: a tuple variant with a similar name exists | LL | check(xm7::TV); diff --git a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr index 3a1e3ce3ad1..f6a86aa43b5 100644 --- a/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr +++ b/src/test/ui/nll/ty-outlives/impl-trait-captures.stderr @@ -3,6 +3,7 @@ error[E0621]: explicit lifetime required in the type of `x` | LL | fn foo<'a, T>(x: &T) -> impl Foo<'a> { | ^^^^^^^^^^^^ lifetime `ReEarlyBound(0, 'a)` required + | help: add explicit lifetime `ReEarlyBound(0, 'a)` to the type of `x` | LL | fn foo<'a, T>(x: &ReEarlyBound(0, 'a) T) -> impl Foo<'a> { diff --git a/src/test/ui/no-implicit-prelude-nested.stderr b/src/test/ui/no-implicit-prelude-nested.stderr index 8d695e45da4..e57d8af5f99 100644 --- a/src/test/ui/no-implicit-prelude-nested.stderr +++ b/src/test/ui/no-implicit-prelude-nested.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `Add` in this scope | LL | impl Add for Test {} | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::ops::Add; @@ -13,6 +14,7 @@ error[E0404]: expected trait, found derive macro `Clone` | LL | impl Clone for Test {} | ^^^^^ not a trait + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::clone::Clone; @@ -25,6 +27,7 @@ error[E0405]: cannot find trait `Iterator` in this scope | LL | impl Iterator for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::iter::Iterator; @@ -37,6 +40,7 @@ error[E0405]: cannot find trait `ToString` in this scope | LL | impl ToString for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::prelude::v1::ToString; @@ -55,6 +59,7 @@ error[E0425]: cannot find function `drop` in this scope | LL | drop(2) | ^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::mem::drop; @@ -67,6 +72,7 @@ error[E0405]: cannot find trait `Add` in this scope | LL | impl Add for Test {} | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::ops::Add; @@ -77,6 +83,7 @@ error[E0404]: expected trait, found derive macro `Clone` | LL | impl Clone for Test {} | ^^^^^ not a trait + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::clone::Clone; @@ -89,6 +96,7 @@ error[E0405]: cannot find trait `Iterator` in this scope | LL | impl Iterator for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::iter::Iterator; @@ -101,6 +109,7 @@ error[E0405]: cannot find trait `ToString` in this scope | LL | impl ToString for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::prelude::v1::ToString; @@ -119,6 +128,7 @@ error[E0425]: cannot find function `drop` in this scope | LL | drop(2) | ^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::mem::drop; @@ -131,6 +141,7 @@ error[E0405]: cannot find trait `Add` in this scope | LL | impl Add for Test {} | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::ops::Add; @@ -141,6 +152,7 @@ error[E0404]: expected trait, found derive macro `Clone` | LL | impl Clone for Test {} | ^^^^^ not a trait + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::clone::Clone; @@ -153,6 +165,7 @@ error[E0405]: cannot find trait `Iterator` in this scope | LL | impl Iterator for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::iter::Iterator; @@ -165,6 +178,7 @@ error[E0405]: cannot find trait `ToString` in this scope | LL | impl ToString for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::prelude::v1::ToString; @@ -183,6 +197,7 @@ error[E0425]: cannot find function `drop` in this scope | LL | drop(2) | ^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::mem::drop; diff --git a/src/test/ui/no-implicit-prelude.stderr b/src/test/ui/no-implicit-prelude.stderr index 6ae889df602..8b99529f4dd 100644 --- a/src/test/ui/no-implicit-prelude.stderr +++ b/src/test/ui/no-implicit-prelude.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `Add` in this scope | LL | impl Add for Test {} | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::ops::Add; @@ -13,6 +14,7 @@ error[E0404]: expected trait, found derive macro `Clone` | LL | impl Clone for Test {} | ^^^^^ not a trait + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::clone::Clone; @@ -25,6 +27,7 @@ error[E0405]: cannot find trait `Iterator` in this scope | LL | impl Iterator for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::iter::Iterator; @@ -37,6 +40,7 @@ error[E0405]: cannot find trait `ToString` in this scope | LL | impl ToString for Test {} | ^^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::prelude::v1::ToString; @@ -55,6 +59,7 @@ error[E0425]: cannot find function `drop` in this scope | LL | drop(2) | ^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::mem::drop; diff --git a/src/test/ui/numeric/const-scope.stderr b/src/test/ui/numeric/const-scope.stderr index 3f69bcc7d4a..c8849505922 100644 --- a/src/test/ui/numeric/const-scope.stderr +++ b/src/test/ui/numeric/const-scope.stderr @@ -27,6 +27,7 @@ error[E0308]: mismatched types | LL | let c: i32 = 1i8; | ^^^ expected i32, found i8 + | help: change the type of the numeric literal from `i8` to `i32` | LL | let c: i32 = 1i32; @@ -37,6 +38,7 @@ error[E0308]: mismatched types | LL | let d: i8 = c; | ^ expected i8, found i32 + | help: you can convert an `i32` to `i8` and panic if the converted value wouldn't fit | LL | let d: i8 = c.try_into().unwrap(); diff --git a/src/test/ui/numeric/len.stderr b/src/test/ui/numeric/len.stderr index c767bdd9bd5..1e8bff7f04a 100644 --- a/src/test/ui/numeric/len.stderr +++ b/src/test/ui/numeric/len.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | test(array.len()); | ^^^^^^^^^^^ expected u32, found usize + | help: you can convert an `usize` to `u32` and panic if the converted value wouldn't fit | LL | test(array.len().try_into().unwrap()); diff --git a/src/test/ui/numeric/numeric-cast-2.stderr b/src/test/ui/numeric/numeric-cast-2.stderr index f58389ce96c..9f08985bdb3 100644 --- a/src/test/ui/numeric/numeric-cast-2.stderr +++ b/src/test/ui/numeric/numeric-cast-2.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | let x: u16 = foo(); | ^^^^^ expected u16, found i32 + | help: you can convert an `i32` to `u16` and panic if the converted value wouldn't fit | LL | let x: u16 = foo().try_into().unwrap(); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | let y: i64 = x + x; | ^^^^^ expected i64, found u16 + | help: you can convert an `u16` to `i64` and panic if the converted value wouldn't fit | LL | let y: i64 = (x + x).try_into().unwrap(); @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | let z: i32 = x + x; | ^^^^^ expected i32, found u16 + | help: you can convert an `u16` to `i32` and panic if the converted value wouldn't fit | LL | let z: i32 = (x + x).try_into().unwrap(); diff --git a/src/test/ui/numeric/numeric-cast.stderr b/src/test/ui/numeric/numeric-cast.stderr index e66b83f2b39..983ea084025 100644 --- a/src/test/ui/numeric/numeric-cast.stderr +++ b/src/test/ui/numeric/numeric-cast.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_u64); | ^^^^^ expected usize, found u64 + | help: you can convert an `u64` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_u64.try_into().unwrap()); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_u32); | ^^^^^ expected usize, found u32 + | help: you can convert an `u32` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_u32.try_into().unwrap()); @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_u16); | ^^^^^ expected usize, found u16 + | help: you can convert an `u16` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_u16.try_into().unwrap()); @@ -33,6 +36,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_u8); | ^^^^ expected usize, found u8 + | help: you can convert an `u8` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_u8.try_into().unwrap()); @@ -43,6 +47,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_isize); | ^^^^^^^ expected usize, found isize + | help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_isize.try_into().unwrap()); @@ -53,6 +58,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_i64); | ^^^^^ expected usize, found i64 + | help: you can convert an `i64` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_i64.try_into().unwrap()); @@ -63,6 +69,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_i32); | ^^^^^ expected usize, found i32 + | help: you can convert an `i32` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_i32.try_into().unwrap()); @@ -73,6 +80,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_i16); | ^^^^^ expected usize, found i16 + | help: you can convert an `i16` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_i16.try_into().unwrap()); @@ -83,6 +91,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(x_i8); | ^^^^ expected usize, found i8 + | help: you can convert an `i8` to `usize` and panic if the converted value wouldn't fit | LL | foo::<usize>(x_i8.try_into().unwrap()); @@ -93,6 +102,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_usize); | ^^^^^^^ expected isize, found usize + | help: you can convert an `usize` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_usize.try_into().unwrap()); @@ -103,6 +113,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_u64); | ^^^^^ expected isize, found u64 + | help: you can convert an `u64` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_u64.try_into().unwrap()); @@ -113,6 +124,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_u32); | ^^^^^ expected isize, found u32 + | help: you can convert an `u32` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_u32.try_into().unwrap()); @@ -123,6 +135,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_u16); | ^^^^^ expected isize, found u16 + | help: you can convert an `u16` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_u16.try_into().unwrap()); @@ -133,6 +146,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_u8); | ^^^^ expected isize, found u8 + | help: you can convert an `u8` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_u8.try_into().unwrap()); @@ -143,6 +157,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_i64); | ^^^^^ expected isize, found i64 + | help: you can convert an `i64` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_i64.try_into().unwrap()); @@ -153,6 +168,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_i32); | ^^^^^ expected isize, found i32 + | help: you can convert an `i32` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_i32.try_into().unwrap()); @@ -163,6 +179,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_i16); | ^^^^^ expected isize, found i16 + | help: you can convert an `i16` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_i16.try_into().unwrap()); @@ -173,6 +190,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(x_i8); | ^^^^ expected isize, found i8 + | help: you can convert an `i8` to `isize` and panic if the converted value wouldn't fit | LL | foo::<isize>(x_i8.try_into().unwrap()); @@ -183,6 +201,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_usize); | ^^^^^^^ expected u64, found usize + | help: you can convert an `usize` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_usize.try_into().unwrap()); @@ -220,6 +239,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_isize); | ^^^^^^^ expected u64, found isize + | help: you can convert an `isize` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_isize.try_into().unwrap()); @@ -230,6 +250,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_i64); | ^^^^^ expected u64, found i64 + | help: you can convert an `i64` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_i64.try_into().unwrap()); @@ -240,6 +261,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_i32); | ^^^^^ expected u64, found i32 + | help: you can convert an `i32` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_i32.try_into().unwrap()); @@ -250,6 +272,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_i16); | ^^^^^ expected u64, found i16 + | help: you can convert an `i16` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_i16.try_into().unwrap()); @@ -260,6 +283,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(x_i8); | ^^^^ expected u64, found i8 + | help: you can convert an `i8` to `u64` and panic if the converted value wouldn't fit | LL | foo::<u64>(x_i8.try_into().unwrap()); @@ -270,6 +294,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_usize); | ^^^^^^^ expected i64, found usize + | help: you can convert an `usize` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_usize.try_into().unwrap()); @@ -280,6 +305,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_u64); | ^^^^^ expected i64, found u64 + | help: you can convert an `u64` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_u64.try_into().unwrap()); @@ -290,6 +316,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_u32); | ^^^^^ expected i64, found u32 + | help: you can convert an `u32` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_u32.try_into().unwrap()); @@ -300,6 +327,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_u16); | ^^^^^ expected i64, found u16 + | help: you can convert an `u16` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_u16.try_into().unwrap()); @@ -310,6 +338,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_u8); | ^^^^ expected i64, found u8 + | help: you can convert an `u8` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_u8.try_into().unwrap()); @@ -320,6 +349,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(x_isize); | ^^^^^^^ expected i64, found isize + | help: you can convert an `isize` to `i64` and panic if the converted value wouldn't fit | LL | foo::<i64>(x_isize.try_into().unwrap()); @@ -357,6 +387,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_usize); | ^^^^^^^ expected u32, found usize + | help: you can convert an `usize` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_usize.try_into().unwrap()); @@ -367,6 +398,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_u64); | ^^^^^ expected u32, found u64 + | help: you can convert an `u64` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_u64.try_into().unwrap()); @@ -395,6 +427,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_isize); | ^^^^^^^ expected u32, found isize + | help: you can convert an `isize` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_isize.try_into().unwrap()); @@ -405,6 +438,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_i64); | ^^^^^ expected u32, found i64 + | help: you can convert an `i64` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_i64.try_into().unwrap()); @@ -415,6 +449,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_i32); | ^^^^^ expected u32, found i32 + | help: you can convert an `i32` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_i32.try_into().unwrap()); @@ -425,6 +460,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_i16); | ^^^^^ expected u32, found i16 + | help: you can convert an `i16` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_i16.try_into().unwrap()); @@ -435,6 +471,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(x_i8); | ^^^^ expected u32, found i8 + | help: you can convert an `i8` to `u32` and panic if the converted value wouldn't fit | LL | foo::<u32>(x_i8.try_into().unwrap()); @@ -445,6 +482,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_usize); | ^^^^^^^ expected i32, found usize + | help: you can convert an `usize` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_usize.try_into().unwrap()); @@ -455,6 +493,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_u64); | ^^^^^ expected i32, found u64 + | help: you can convert an `u64` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_u64.try_into().unwrap()); @@ -465,6 +504,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_u32); | ^^^^^ expected i32, found u32 + | help: you can convert an `u32` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_u32.try_into().unwrap()); @@ -475,6 +515,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_u16); | ^^^^^ expected i32, found u16 + | help: you can convert an `u16` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_u16.try_into().unwrap()); @@ -485,6 +526,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_u8); | ^^^^ expected i32, found u8 + | help: you can convert an `u8` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_u8.try_into().unwrap()); @@ -495,6 +537,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_isize); | ^^^^^^^ expected i32, found isize + | help: you can convert an `isize` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_isize.try_into().unwrap()); @@ -505,6 +548,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(x_i64); | ^^^^^ expected i32, found i64 + | help: you can convert an `i64` to `i32` and panic if the converted value wouldn't fit | LL | foo::<i32>(x_i64.try_into().unwrap()); @@ -533,6 +577,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_usize); | ^^^^^^^ expected u16, found usize + | help: you can convert an `usize` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_usize.try_into().unwrap()); @@ -543,6 +588,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_u64); | ^^^^^ expected u16, found u64 + | help: you can convert an `u64` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_u64.try_into().unwrap()); @@ -553,6 +599,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_u32); | ^^^^^ expected u16, found u32 + | help: you can convert an `u32` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_u32.try_into().unwrap()); @@ -572,6 +619,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_isize); | ^^^^^^^ expected u16, found isize + | help: you can convert an `isize` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_isize.try_into().unwrap()); @@ -582,6 +630,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_i64); | ^^^^^ expected u16, found i64 + | help: you can convert an `i64` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_i64.try_into().unwrap()); @@ -592,6 +641,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_i32); | ^^^^^ expected u16, found i32 + | help: you can convert an `i32` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_i32.try_into().unwrap()); @@ -602,6 +652,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_i16); | ^^^^^ expected u16, found i16 + | help: you can convert an `i16` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_i16.try_into().unwrap()); @@ -612,6 +663,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(x_i8); | ^^^^ expected u16, found i8 + | help: you can convert an `i8` to `u16` and panic if the converted value wouldn't fit | LL | foo::<u16>(x_i8.try_into().unwrap()); @@ -622,6 +674,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_usize); | ^^^^^^^ expected i16, found usize + | help: you can convert an `usize` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_usize.try_into().unwrap()); @@ -632,6 +685,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_u64); | ^^^^^ expected i16, found u64 + | help: you can convert an `u64` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_u64.try_into().unwrap()); @@ -642,6 +696,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_u32); | ^^^^^ expected i16, found u32 + | help: you can convert an `u32` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_u32.try_into().unwrap()); @@ -652,6 +707,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_u16); | ^^^^^ expected i16, found u16 + | help: you can convert an `u16` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_u16.try_into().unwrap()); @@ -662,6 +718,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_u8); | ^^^^ expected i16, found u8 + | help: you can convert an `u8` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_u8.try_into().unwrap()); @@ -672,6 +729,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_isize); | ^^^^^^^ expected i16, found isize + | help: you can convert an `isize` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_isize.try_into().unwrap()); @@ -682,6 +740,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_i64); | ^^^^^ expected i16, found i64 + | help: you can convert an `i64` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_i64.try_into().unwrap()); @@ -692,6 +751,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(x_i32); | ^^^^^ expected i16, found i32 + | help: you can convert an `i32` to `i16` and panic if the converted value wouldn't fit | LL | foo::<i16>(x_i32.try_into().unwrap()); @@ -711,6 +771,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_usize); | ^^^^^^^ expected u8, found usize + | help: you can convert an `usize` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_usize.try_into().unwrap()); @@ -721,6 +782,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_u64); | ^^^^^ expected u8, found u64 + | help: you can convert an `u64` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_u64.try_into().unwrap()); @@ -731,6 +793,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_u32); | ^^^^^ expected u8, found u32 + | help: you can convert an `u32` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_u32.try_into().unwrap()); @@ -741,6 +804,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_u16); | ^^^^^ expected u8, found u16 + | help: you can convert an `u16` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_u16.try_into().unwrap()); @@ -751,6 +815,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_isize); | ^^^^^^^ expected u8, found isize + | help: you can convert an `isize` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_isize.try_into().unwrap()); @@ -761,6 +826,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_i64); | ^^^^^ expected u8, found i64 + | help: you can convert an `i64` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_i64.try_into().unwrap()); @@ -771,6 +837,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_i32); | ^^^^^ expected u8, found i32 + | help: you can convert an `i32` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_i32.try_into().unwrap()); @@ -781,6 +848,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_i16); | ^^^^^ expected u8, found i16 + | help: you can convert an `i16` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_i16.try_into().unwrap()); @@ -791,6 +859,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(x_i8); | ^^^^ expected u8, found i8 + | help: you can convert an `i8` to `u8` and panic if the converted value wouldn't fit | LL | foo::<u8>(x_i8.try_into().unwrap()); @@ -801,6 +870,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_usize); | ^^^^^^^ expected i8, found usize + | help: you can convert an `usize` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_usize.try_into().unwrap()); @@ -811,6 +881,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_u64); | ^^^^^ expected i8, found u64 + | help: you can convert an `u64` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_u64.try_into().unwrap()); @@ -821,6 +892,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_u32); | ^^^^^ expected i8, found u32 + | help: you can convert an `u32` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_u32.try_into().unwrap()); @@ -831,6 +903,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_u16); | ^^^^^ expected i8, found u16 + | help: you can convert an `u16` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_u16.try_into().unwrap()); @@ -841,6 +914,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_u8); | ^^^^ expected i8, found u8 + | help: you can convert an `u8` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_u8.try_into().unwrap()); @@ -851,6 +925,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_isize); | ^^^^^^^ expected i8, found isize + | help: you can convert an `isize` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_isize.try_into().unwrap()); @@ -861,6 +936,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_i64); | ^^^^^ expected i8, found i64 + | help: you can convert an `i64` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_i64.try_into().unwrap()); @@ -871,6 +947,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_i32); | ^^^^^ expected i8, found i32 + | help: you can convert an `i32` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_i32.try_into().unwrap()); @@ -881,6 +958,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(x_i16); | ^^^^^ expected i8, found i16 + | help: you can convert an `i16` to `i8` and panic if the converted value wouldn't fit | LL | foo::<i8>(x_i16.try_into().unwrap()); @@ -891,6 +969,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_usize); | ^^^^^^^ expected f64, found usize + | help: you can cast an `usize to `f64`, producing the floating point representation of the integer, | rounded if necessary LL | foo::<f64>(x_usize as f64); @@ -901,6 +980,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_u64); | ^^^^^ expected f64, found u64 + | help: you can cast an `u64 to `f64`, producing the floating point representation of the integer, | rounded if necessary LL | foo::<f64>(x_u64 as f64); @@ -911,6 +991,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_u32); | ^^^^^ expected f64, found u32 + | help: you can convert an `u32` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_u32.into()); @@ -921,6 +1002,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_u16); | ^^^^^ expected f64, found u16 + | help: you can convert an `u16` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_u16.into()); @@ -931,6 +1013,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_u8); | ^^^^ expected f64, found u8 + | help: you can convert an `u8` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_u8.into()); @@ -941,6 +1024,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_isize); | ^^^^^^^ expected f64, found isize + | help: you can convert an `isize` to `f64`, producing the floating point representation of the integer, rounded if necessary | LL | foo::<f64>(x_isize as f64); @@ -951,6 +1035,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_i64); | ^^^^^ expected f64, found i64 + | help: you can convert an `i64` to `f64`, producing the floating point representation of the integer, rounded if necessary | LL | foo::<f64>(x_i64 as f64); @@ -961,6 +1046,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_i32); | ^^^^^ expected f64, found i32 + | help: you can convert an `i32` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_i32.into()); @@ -971,6 +1057,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_i16); | ^^^^^ expected f64, found i16 + | help: you can convert an `i16` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_i16.into()); @@ -981,6 +1068,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(x_i8); | ^^^^ expected f64, found i8 + | help: you can convert an `i8` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(x_i8.into()); @@ -1000,6 +1088,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_usize); | ^^^^^^^ expected f32, found usize + | help: you can cast an `usize to `f32`, producing the floating point representation of the integer, | rounded if necessary LL | foo::<f32>(x_usize as f32); @@ -1010,6 +1099,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_u64); | ^^^^^ expected f32, found u64 + | help: you can cast an `u64 to `f32`, producing the floating point representation of the integer, | rounded if necessary LL | foo::<f32>(x_u64 as f32); @@ -1020,6 +1110,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_u32); | ^^^^^ expected f32, found u32 + | help: you can cast an `u32 to `f32`, producing the floating point representation of the integer, | rounded if necessary LL | foo::<f32>(x_u32 as f32); @@ -1030,6 +1121,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_u16); | ^^^^^ expected f32, found u16 + | help: you can convert an `u16` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(x_u16.into()); @@ -1040,6 +1132,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_u8); | ^^^^ expected f32, found u8 + | help: you can convert an `u8` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(x_u8.into()); @@ -1050,6 +1143,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_isize); | ^^^^^^^ expected f32, found isize + | help: you can convert an `isize` to `f32`, producing the floating point representation of the integer, rounded if necessary | LL | foo::<f32>(x_isize as f32); @@ -1060,6 +1154,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_i64); | ^^^^^ expected f32, found i64 + | help: you can convert an `i64` to `f32`, producing the floating point representation of the integer, rounded if necessary | LL | foo::<f32>(x_i64 as f32); @@ -1070,6 +1165,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_i32); | ^^^^^ expected f32, found i32 + | help: you can convert an `i32` to `f32`, producing the floating point representation of the integer, rounded if necessary | LL | foo::<f32>(x_i32 as f32); @@ -1080,6 +1176,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_i16); | ^^^^^ expected f32, found i16 + | help: you can convert an `i16` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(x_i16.into()); @@ -1090,6 +1187,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(x_i8); | ^^^^ expected f32, found i8 + | help: you can convert an `i8` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(x_i8.into()); diff --git a/src/test/ui/numeric/numeric-suffix.stderr b/src/test/ui/numeric/numeric-suffix.stderr index c88eeeb9f70..9bcae4a1888 100644 --- a/src/test/ui/numeric/numeric-suffix.stderr +++ b/src/test/ui/numeric/numeric-suffix.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_u64); | ^^^^^^ expected usize, found u64 + | help: change the type of the numeric literal from `u64` to `usize` | LL | foo::<usize>(42_usize); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_u32); | ^^^^^^ expected usize, found u32 + | help: change the type of the numeric literal from `u32` to `usize` | LL | foo::<usize>(42_usize); @@ -23,6 +25,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_u16); | ^^^^^^ expected usize, found u16 + | help: change the type of the numeric literal from `u16` to `usize` | LL | foo::<usize>(42_usize); @@ -33,6 +36,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_u8); | ^^^^^ expected usize, found u8 + | help: change the type of the numeric literal from `u8` to `usize` | LL | foo::<usize>(42_usize); @@ -43,6 +47,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_isize); | ^^^^^^^^ expected usize, found isize + | help: change the type of the numeric literal from `isize` to `usize` | LL | foo::<usize>(42_usize); @@ -53,6 +58,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_i64); | ^^^^^^ expected usize, found i64 + | help: change the type of the numeric literal from `i64` to `usize` | LL | foo::<usize>(42_usize); @@ -63,6 +69,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_i32); | ^^^^^^ expected usize, found i32 + | help: change the type of the numeric literal from `i32` to `usize` | LL | foo::<usize>(42_usize); @@ -73,6 +80,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_i16); | ^^^^^^ expected usize, found i16 + | help: change the type of the numeric literal from `i16` to `usize` | LL | foo::<usize>(42_usize); @@ -83,6 +91,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42_i8); | ^^^^^ expected usize, found i8 + | help: change the type of the numeric literal from `i8` to `usize` | LL | foo::<usize>(42_usize); @@ -93,6 +102,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42.0_f64); | ^^^^^^^^ expected usize, found f64 + | help: change the type of the numeric literal from `f64` to `usize` | LL | foo::<usize>(42usize); @@ -103,6 +113,7 @@ error[E0308]: mismatched types | LL | foo::<usize>(42.0_f32); | ^^^^^^^^ expected usize, found f32 + | help: change the type of the numeric literal from `f32` to `usize` | LL | foo::<usize>(42usize); @@ -113,6 +124,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_usize); | ^^^^^^^^ expected isize, found usize + | help: change the type of the numeric literal from `usize` to `isize` | LL | foo::<isize>(42_isize); @@ -123,6 +135,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_u64); | ^^^^^^ expected isize, found u64 + | help: change the type of the numeric literal from `u64` to `isize` | LL | foo::<isize>(42_isize); @@ -133,6 +146,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_u32); | ^^^^^^ expected isize, found u32 + | help: change the type of the numeric literal from `u32` to `isize` | LL | foo::<isize>(42_isize); @@ -143,6 +157,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_u16); | ^^^^^^ expected isize, found u16 + | help: change the type of the numeric literal from `u16` to `isize` | LL | foo::<isize>(42_isize); @@ -153,6 +168,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_u8); | ^^^^^ expected isize, found u8 + | help: change the type of the numeric literal from `u8` to `isize` | LL | foo::<isize>(42_isize); @@ -163,6 +179,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_i64); | ^^^^^^ expected isize, found i64 + | help: change the type of the numeric literal from `i64` to `isize` | LL | foo::<isize>(42_isize); @@ -173,6 +190,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_i32); | ^^^^^^ expected isize, found i32 + | help: change the type of the numeric literal from `i32` to `isize` | LL | foo::<isize>(42_isize); @@ -183,6 +201,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_i16); | ^^^^^^ expected isize, found i16 + | help: change the type of the numeric literal from `i16` to `isize` | LL | foo::<isize>(42_isize); @@ -193,6 +212,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42_i8); | ^^^^^ expected isize, found i8 + | help: change the type of the numeric literal from `i8` to `isize` | LL | foo::<isize>(42_isize); @@ -203,6 +223,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42.0_f64); | ^^^^^^^^ expected isize, found f64 + | help: change the type of the numeric literal from `f64` to `isize` | LL | foo::<isize>(42isize); @@ -213,6 +234,7 @@ error[E0308]: mismatched types | LL | foo::<isize>(42.0_f32); | ^^^^^^^^ expected isize, found f32 + | help: change the type of the numeric literal from `f32` to `isize` | LL | foo::<isize>(42isize); @@ -223,6 +245,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_usize); | ^^^^^^^^ expected u64, found usize + | help: change the type of the numeric literal from `usize` to `u64` | LL | foo::<u64>(42_u64); @@ -233,6 +256,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_u32); | ^^^^^^ expected u64, found u32 + | help: change the type of the numeric literal from `u32` to `u64` | LL | foo::<u64>(42_u64); @@ -243,6 +267,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_u16); | ^^^^^^ expected u64, found u16 + | help: change the type of the numeric literal from `u16` to `u64` | LL | foo::<u64>(42_u64); @@ -253,6 +278,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_u8); | ^^^^^ expected u64, found u8 + | help: change the type of the numeric literal from `u8` to `u64` | LL | foo::<u64>(42_u64); @@ -263,6 +289,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_isize); | ^^^^^^^^ expected u64, found isize + | help: change the type of the numeric literal from `isize` to `u64` | LL | foo::<u64>(42_u64); @@ -273,6 +300,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_i64); | ^^^^^^ expected u64, found i64 + | help: change the type of the numeric literal from `i64` to `u64` | LL | foo::<u64>(42_u64); @@ -283,6 +311,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_i32); | ^^^^^^ expected u64, found i32 + | help: change the type of the numeric literal from `i32` to `u64` | LL | foo::<u64>(42_u64); @@ -293,6 +322,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_i16); | ^^^^^^ expected u64, found i16 + | help: change the type of the numeric literal from `i16` to `u64` | LL | foo::<u64>(42_u64); @@ -303,6 +333,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42_i8); | ^^^^^ expected u64, found i8 + | help: change the type of the numeric literal from `i8` to `u64` | LL | foo::<u64>(42_u64); @@ -313,6 +344,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42.0_f64); | ^^^^^^^^ expected u64, found f64 + | help: change the type of the numeric literal from `f64` to `u64` | LL | foo::<u64>(42u64); @@ -323,6 +355,7 @@ error[E0308]: mismatched types | LL | foo::<u64>(42.0_f32); | ^^^^^^^^ expected u64, found f32 + | help: change the type of the numeric literal from `f32` to `u64` | LL | foo::<u64>(42u64); @@ -333,6 +366,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_usize); | ^^^^^^^^ expected i64, found usize + | help: change the type of the numeric literal from `usize` to `i64` | LL | foo::<i64>(42_i64); @@ -343,6 +377,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_u64); | ^^^^^^ expected i64, found u64 + | help: change the type of the numeric literal from `u64` to `i64` | LL | foo::<i64>(42_i64); @@ -353,6 +388,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_u32); | ^^^^^^ expected i64, found u32 + | help: change the type of the numeric literal from `u32` to `i64` | LL | foo::<i64>(42_i64); @@ -363,6 +399,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_u16); | ^^^^^^ expected i64, found u16 + | help: change the type of the numeric literal from `u16` to `i64` | LL | foo::<i64>(42_i64); @@ -373,6 +410,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_u8); | ^^^^^ expected i64, found u8 + | help: change the type of the numeric literal from `u8` to `i64` | LL | foo::<i64>(42_i64); @@ -383,6 +421,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_isize); | ^^^^^^^^ expected i64, found isize + | help: change the type of the numeric literal from `isize` to `i64` | LL | foo::<i64>(42_i64); @@ -393,6 +432,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_i32); | ^^^^^^ expected i64, found i32 + | help: change the type of the numeric literal from `i32` to `i64` | LL | foo::<i64>(42_i64); @@ -403,6 +443,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_i16); | ^^^^^^ expected i64, found i16 + | help: change the type of the numeric literal from `i16` to `i64` | LL | foo::<i64>(42_i64); @@ -413,6 +454,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42_i8); | ^^^^^ expected i64, found i8 + | help: change the type of the numeric literal from `i8` to `i64` | LL | foo::<i64>(42_i64); @@ -423,6 +465,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42.0_f64); | ^^^^^^^^ expected i64, found f64 + | help: change the type of the numeric literal from `f64` to `i64` | LL | foo::<i64>(42i64); @@ -433,6 +476,7 @@ error[E0308]: mismatched types | LL | foo::<i64>(42.0_f32); | ^^^^^^^^ expected i64, found f32 + | help: change the type of the numeric literal from `f32` to `i64` | LL | foo::<i64>(42i64); @@ -443,6 +487,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_usize); | ^^^^^^^^ expected u32, found usize + | help: change the type of the numeric literal from `usize` to `u32` | LL | foo::<u32>(42_u32); @@ -453,6 +498,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_u64); | ^^^^^^ expected u32, found u64 + | help: change the type of the numeric literal from `u64` to `u32` | LL | foo::<u32>(42_u32); @@ -463,6 +509,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_u16); | ^^^^^^ expected u32, found u16 + | help: change the type of the numeric literal from `u16` to `u32` | LL | foo::<u32>(42_u32); @@ -473,6 +520,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_u8); | ^^^^^ expected u32, found u8 + | help: change the type of the numeric literal from `u8` to `u32` | LL | foo::<u32>(42_u32); @@ -483,6 +531,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_isize); | ^^^^^^^^ expected u32, found isize + | help: change the type of the numeric literal from `isize` to `u32` | LL | foo::<u32>(42_u32); @@ -493,6 +542,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_i64); | ^^^^^^ expected u32, found i64 + | help: change the type of the numeric literal from `i64` to `u32` | LL | foo::<u32>(42_u32); @@ -503,6 +553,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_i32); | ^^^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | foo::<u32>(42_u32); @@ -513,6 +564,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_i16); | ^^^^^^ expected u32, found i16 + | help: change the type of the numeric literal from `i16` to `u32` | LL | foo::<u32>(42_u32); @@ -523,6 +575,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42_i8); | ^^^^^ expected u32, found i8 + | help: change the type of the numeric literal from `i8` to `u32` | LL | foo::<u32>(42_u32); @@ -533,6 +586,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42.0_f64); | ^^^^^^^^ expected u32, found f64 + | help: change the type of the numeric literal from `f64` to `u32` | LL | foo::<u32>(42u32); @@ -543,6 +597,7 @@ error[E0308]: mismatched types | LL | foo::<u32>(42.0_f32); | ^^^^^^^^ expected u32, found f32 + | help: change the type of the numeric literal from `f32` to `u32` | LL | foo::<u32>(42u32); @@ -553,6 +608,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_usize); | ^^^^^^^^ expected i32, found usize + | help: change the type of the numeric literal from `usize` to `i32` | LL | foo::<i32>(42_i32); @@ -563,6 +619,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_u64); | ^^^^^^ expected i32, found u64 + | help: change the type of the numeric literal from `u64` to `i32` | LL | foo::<i32>(42_i32); @@ -573,6 +630,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_u32); | ^^^^^^ expected i32, found u32 + | help: change the type of the numeric literal from `u32` to `i32` | LL | foo::<i32>(42_i32); @@ -583,6 +641,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_u16); | ^^^^^^ expected i32, found u16 + | help: change the type of the numeric literal from `u16` to `i32` | LL | foo::<i32>(42_i32); @@ -593,6 +652,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_u8); | ^^^^^ expected i32, found u8 + | help: change the type of the numeric literal from `u8` to `i32` | LL | foo::<i32>(42_i32); @@ -603,6 +663,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_isize); | ^^^^^^^^ expected i32, found isize + | help: change the type of the numeric literal from `isize` to `i32` | LL | foo::<i32>(42_i32); @@ -613,6 +674,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_i64); | ^^^^^^ expected i32, found i64 + | help: change the type of the numeric literal from `i64` to `i32` | LL | foo::<i32>(42_i32); @@ -623,6 +685,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_i16); | ^^^^^^ expected i32, found i16 + | help: change the type of the numeric literal from `i16` to `i32` | LL | foo::<i32>(42_i32); @@ -633,6 +696,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42_i8); | ^^^^^ expected i32, found i8 + | help: change the type of the numeric literal from `i8` to `i32` | LL | foo::<i32>(42_i32); @@ -643,6 +707,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42.0_f64); | ^^^^^^^^ expected i32, found f64 + | help: change the type of the numeric literal from `f64` to `i32` | LL | foo::<i32>(42i32); @@ -653,6 +718,7 @@ error[E0308]: mismatched types | LL | foo::<i32>(42.0_f32); | ^^^^^^^^ expected i32, found f32 + | help: change the type of the numeric literal from `f32` to `i32` | LL | foo::<i32>(42i32); @@ -663,6 +729,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_usize); | ^^^^^^^^ expected u16, found usize + | help: change the type of the numeric literal from `usize` to `u16` | LL | foo::<u16>(42_u16); @@ -673,6 +740,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_u64); | ^^^^^^ expected u16, found u64 + | help: change the type of the numeric literal from `u64` to `u16` | LL | foo::<u16>(42_u16); @@ -683,6 +751,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_u32); | ^^^^^^ expected u16, found u32 + | help: change the type of the numeric literal from `u32` to `u16` | LL | foo::<u16>(42_u16); @@ -693,6 +762,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_u8); | ^^^^^ expected u16, found u8 + | help: change the type of the numeric literal from `u8` to `u16` | LL | foo::<u16>(42_u16); @@ -703,6 +773,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_isize); | ^^^^^^^^ expected u16, found isize + | help: change the type of the numeric literal from `isize` to `u16` | LL | foo::<u16>(42_u16); @@ -713,6 +784,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_i64); | ^^^^^^ expected u16, found i64 + | help: change the type of the numeric literal from `i64` to `u16` | LL | foo::<u16>(42_u16); @@ -723,6 +795,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_i32); | ^^^^^^ expected u16, found i32 + | help: change the type of the numeric literal from `i32` to `u16` | LL | foo::<u16>(42_u16); @@ -733,6 +806,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_i16); | ^^^^^^ expected u16, found i16 + | help: change the type of the numeric literal from `i16` to `u16` | LL | foo::<u16>(42_u16); @@ -743,6 +817,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42_i8); | ^^^^^ expected u16, found i8 + | help: change the type of the numeric literal from `i8` to `u16` | LL | foo::<u16>(42_u16); @@ -753,6 +828,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42.0_f64); | ^^^^^^^^ expected u16, found f64 + | help: change the type of the numeric literal from `f64` to `u16` | LL | foo::<u16>(42u16); @@ -763,6 +839,7 @@ error[E0308]: mismatched types | LL | foo::<u16>(42.0_f32); | ^^^^^^^^ expected u16, found f32 + | help: change the type of the numeric literal from `f32` to `u16` | LL | foo::<u16>(42u16); @@ -773,6 +850,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_usize); | ^^^^^^^^ expected i16, found usize + | help: change the type of the numeric literal from `usize` to `i16` | LL | foo::<i16>(42_i16); @@ -783,6 +861,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_u64); | ^^^^^^ expected i16, found u64 + | help: change the type of the numeric literal from `u64` to `i16` | LL | foo::<i16>(42_i16); @@ -793,6 +872,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_u32); | ^^^^^^ expected i16, found u32 + | help: change the type of the numeric literal from `u32` to `i16` | LL | foo::<i16>(42_i16); @@ -803,6 +883,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_u16); | ^^^^^^ expected i16, found u16 + | help: change the type of the numeric literal from `u16` to `i16` | LL | foo::<i16>(42_i16); @@ -813,6 +894,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_u8); | ^^^^^ expected i16, found u8 + | help: change the type of the numeric literal from `u8` to `i16` | LL | foo::<i16>(42_i16); @@ -823,6 +905,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_isize); | ^^^^^^^^ expected i16, found isize + | help: change the type of the numeric literal from `isize` to `i16` | LL | foo::<i16>(42_i16); @@ -833,6 +916,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_i64); | ^^^^^^ expected i16, found i64 + | help: change the type of the numeric literal from `i64` to `i16` | LL | foo::<i16>(42_i16); @@ -843,6 +927,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_i32); | ^^^^^^ expected i16, found i32 + | help: change the type of the numeric literal from `i32` to `i16` | LL | foo::<i16>(42_i16); @@ -853,6 +938,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42_i8); | ^^^^^ expected i16, found i8 + | help: change the type of the numeric literal from `i8` to `i16` | LL | foo::<i16>(42_i16); @@ -863,6 +949,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42.0_f64); | ^^^^^^^^ expected i16, found f64 + | help: change the type of the numeric literal from `f64` to `i16` | LL | foo::<i16>(42i16); @@ -873,6 +960,7 @@ error[E0308]: mismatched types | LL | foo::<i16>(42.0_f32); | ^^^^^^^^ expected i16, found f32 + | help: change the type of the numeric literal from `f32` to `i16` | LL | foo::<i16>(42i16); @@ -883,6 +971,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_usize); | ^^^^^^^^ expected u8, found usize + | help: change the type of the numeric literal from `usize` to `u8` | LL | foo::<u8>(42_u8); @@ -893,6 +982,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_u64); | ^^^^^^ expected u8, found u64 + | help: change the type of the numeric literal from `u64` to `u8` | LL | foo::<u8>(42_u8); @@ -903,6 +993,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_u32); | ^^^^^^ expected u8, found u32 + | help: change the type of the numeric literal from `u32` to `u8` | LL | foo::<u8>(42_u8); @@ -913,6 +1004,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_u16); | ^^^^^^ expected u8, found u16 + | help: change the type of the numeric literal from `u16` to `u8` | LL | foo::<u8>(42_u8); @@ -923,6 +1015,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_isize); | ^^^^^^^^ expected u8, found isize + | help: change the type of the numeric literal from `isize` to `u8` | LL | foo::<u8>(42_u8); @@ -933,6 +1026,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_i64); | ^^^^^^ expected u8, found i64 + | help: change the type of the numeric literal from `i64` to `u8` | LL | foo::<u8>(42_u8); @@ -943,6 +1037,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_i32); | ^^^^^^ expected u8, found i32 + | help: change the type of the numeric literal from `i32` to `u8` | LL | foo::<u8>(42_u8); @@ -953,6 +1048,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_i16); | ^^^^^^ expected u8, found i16 + | help: change the type of the numeric literal from `i16` to `u8` | LL | foo::<u8>(42_u8); @@ -963,6 +1059,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42_i8); | ^^^^^ expected u8, found i8 + | help: change the type of the numeric literal from `i8` to `u8` | LL | foo::<u8>(42_u8); @@ -973,6 +1070,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42.0_f64); | ^^^^^^^^ expected u8, found f64 + | help: change the type of the numeric literal from `f64` to `u8` | LL | foo::<u8>(42u8); @@ -983,6 +1081,7 @@ error[E0308]: mismatched types | LL | foo::<u8>(42.0_f32); | ^^^^^^^^ expected u8, found f32 + | help: change the type of the numeric literal from `f32` to `u8` | LL | foo::<u8>(42u8); @@ -993,6 +1092,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_usize); | ^^^^^^^^ expected i8, found usize + | help: change the type of the numeric literal from `usize` to `i8` | LL | foo::<i8>(42_i8); @@ -1003,6 +1103,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_u64); | ^^^^^^ expected i8, found u64 + | help: change the type of the numeric literal from `u64` to `i8` | LL | foo::<i8>(42_i8); @@ -1013,6 +1114,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_u32); | ^^^^^^ expected i8, found u32 + | help: change the type of the numeric literal from `u32` to `i8` | LL | foo::<i8>(42_i8); @@ -1023,6 +1125,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_u16); | ^^^^^^ expected i8, found u16 + | help: change the type of the numeric literal from `u16` to `i8` | LL | foo::<i8>(42_i8); @@ -1033,6 +1136,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_u8); | ^^^^^ expected i8, found u8 + | help: change the type of the numeric literal from `u8` to `i8` | LL | foo::<i8>(42_i8); @@ -1043,6 +1147,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_isize); | ^^^^^^^^ expected i8, found isize + | help: change the type of the numeric literal from `isize` to `i8` | LL | foo::<i8>(42_i8); @@ -1053,6 +1158,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_i64); | ^^^^^^ expected i8, found i64 + | help: change the type of the numeric literal from `i64` to `i8` | LL | foo::<i8>(42_i8); @@ -1063,6 +1169,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_i32); | ^^^^^^ expected i8, found i32 + | help: change the type of the numeric literal from `i32` to `i8` | LL | foo::<i8>(42_i8); @@ -1073,6 +1180,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42_i16); | ^^^^^^ expected i8, found i16 + | help: change the type of the numeric literal from `i16` to `i8` | LL | foo::<i8>(42_i8); @@ -1083,6 +1191,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42.0_f64); | ^^^^^^^^ expected i8, found f64 + | help: change the type of the numeric literal from `f64` to `i8` | LL | foo::<i8>(42i8); @@ -1093,6 +1202,7 @@ error[E0308]: mismatched types | LL | foo::<i8>(42.0_f32); | ^^^^^^^^ expected i8, found f32 + | help: change the type of the numeric literal from `f32` to `i8` | LL | foo::<i8>(42i8); @@ -1103,6 +1213,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_usize); | ^^^^^^^^ expected f64, found usize + | help: change the type of the numeric literal from `usize` to `f64` | LL | foo::<f64>(42_f64); @@ -1113,6 +1224,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_u64); | ^^^^^^ expected f64, found u64 + | help: change the type of the numeric literal from `u64` to `f64` | LL | foo::<f64>(42_f64); @@ -1123,6 +1235,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_u32); | ^^^^^^ expected f64, found u32 + | help: you can convert an `u32` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_u32.into()); @@ -1133,6 +1246,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_u16); | ^^^^^^ expected f64, found u16 + | help: you can convert an `u16` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_u16.into()); @@ -1143,6 +1257,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_u8); | ^^^^^ expected f64, found u8 + | help: you can convert an `u8` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_u8.into()); @@ -1153,6 +1268,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_isize); | ^^^^^^^^ expected f64, found isize + | help: change the type of the numeric literal from `isize` to `f64` | LL | foo::<f64>(42_f64); @@ -1163,6 +1279,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_i64); | ^^^^^^ expected f64, found i64 + | help: change the type of the numeric literal from `i64` to `f64` | LL | foo::<f64>(42_f64); @@ -1173,6 +1290,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_i32); | ^^^^^^ expected f64, found i32 + | help: you can convert an `i32` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_i32.into()); @@ -1183,6 +1301,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_i16); | ^^^^^^ expected f64, found i16 + | help: you can convert an `i16` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_i16.into()); @@ -1193,6 +1312,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42_i8); | ^^^^^ expected f64, found i8 + | help: you can convert an `i8` to `f64`, producing the floating point representation of the integer | LL | foo::<f64>(42_i8.into()); @@ -1203,6 +1323,7 @@ error[E0308]: mismatched types | LL | foo::<f64>(42.0_f32); | ^^^^^^^^ expected f64, found f32 + | help: change the type of the numeric literal from `f32` to `f64` | LL | foo::<f64>(42.0_f64); @@ -1213,6 +1334,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_usize); | ^^^^^^^^ expected f32, found usize + | help: change the type of the numeric literal from `usize` to `f32` | LL | foo::<f32>(42_f32); @@ -1223,6 +1345,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_u64); | ^^^^^^ expected f32, found u64 + | help: change the type of the numeric literal from `u64` to `f32` | LL | foo::<f32>(42_f32); @@ -1233,6 +1356,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_u32); | ^^^^^^ expected f32, found u32 + | help: change the type of the numeric literal from `u32` to `f32` | LL | foo::<f32>(42_f32); @@ -1243,6 +1367,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_u16); | ^^^^^^ expected f32, found u16 + | help: you can convert an `u16` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(42_u16.into()); @@ -1253,6 +1378,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_u8); | ^^^^^ expected f32, found u8 + | help: you can convert an `u8` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(42_u8.into()); @@ -1263,6 +1389,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_isize); | ^^^^^^^^ expected f32, found isize + | help: change the type of the numeric literal from `isize` to `f32` | LL | foo::<f32>(42_f32); @@ -1273,6 +1400,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_i64); | ^^^^^^ expected f32, found i64 + | help: change the type of the numeric literal from `i64` to `f32` | LL | foo::<f32>(42_f32); @@ -1283,6 +1411,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_i32); | ^^^^^^ expected f32, found i32 + | help: change the type of the numeric literal from `i32` to `f32` | LL | foo::<f32>(42_f32); @@ -1293,6 +1422,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_i16); | ^^^^^^ expected f32, found i16 + | help: you can convert an `i16` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(42_i16.into()); @@ -1303,6 +1433,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42_i8); | ^^^^^ expected f32, found i8 + | help: you can convert an `i8` to `f32`, producing the floating point representation of the integer | LL | foo::<f32>(42_i8.into()); @@ -1313,6 +1444,7 @@ error[E0308]: mismatched types | LL | foo::<f32>(42.0_f64); | ^^^^^^^^ expected f32, found f64 + | help: change the type of the numeric literal from `f64` to `f32` | LL | foo::<f32>(42.0_f32); diff --git a/src/test/ui/obsolete-in-place/bad.stderr b/src/test/ui/obsolete-in-place/bad.stderr index 8a731b6240b..b9aad01b292 100644 --- a/src/test/ui/obsolete-in-place/bad.stderr +++ b/src/test/ui/obsolete-in-place/bad.stderr @@ -3,6 +3,7 @@ error: unexpected token: `<-` | LL | x <- y; | ^^ + | help: if you meant to write a comparison against a negative value, add a space in between `<` and `-` | LL | x < - y; diff --git a/src/test/ui/on-unimplemented/bad-annotation.stderr b/src/test/ui/on-unimplemented/bad-annotation.stderr index 20b2169f458..ac0cf0f1f08 100644 --- a/src/test/ui/on-unimplemented/bad-annotation.stderr +++ b/src/test/ui/on-unimplemented/bad-annotation.stderr @@ -3,6 +3,7 @@ error: malformed `rustc_on_unimplemented` attribute input | LL | #[rustc_on_unimplemented] | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | help: the following are the possible correct uses | LL | #[rustc_on_unimplemented(/*opt*/ message = "...", /*opt*/ label = "...", /*opt*/ note = "...")] diff --git a/src/test/ui/parenthesized-deref-suggestion.stderr b/src/test/ui/parenthesized-deref-suggestion.stderr index a16510055f5..24be32ae9eb 100644 --- a/src/test/ui/parenthesized-deref-suggestion.stderr +++ b/src/test/ui/parenthesized-deref-suggestion.stderr @@ -3,6 +3,7 @@ error[E0609]: no field `opts` on type `*const Session` | LL | (sess as *const Session).opts; | ^^^^ + | help: `(sess as *const Session)` is a raw pointer; try dereferencing it | LL | (*(sess as *const Session)).opts; diff --git a/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr index ada0f268a8d..7d0bb0965b6 100644 --- a/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr +++ b/src/test/ui/parser/associated-types-project-from-hrtb-explicit.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `for` | LL | fn foo2<I>(x: <I as for<'x> Foo<&'x isize>>::A) | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | fn foo2<I>(x: <I as r#for<'x> Foo<&'x isize>>::A) diff --git a/src/test/ui/parser/bad-value-ident-false.stderr b/src/test/ui/parser/bad-value-ident-false.stderr index 9ddca101567..b59ea97e3b1 100644 --- a/src/test/ui/parser/bad-value-ident-false.stderr +++ b/src/test/ui/parser/bad-value-ident-false.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `false` | LL | fn false() { } | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | fn r#false() { } diff --git a/src/test/ui/parser/bad-value-ident-true.stderr b/src/test/ui/parser/bad-value-ident-true.stderr index ec497dbe407..12132b0856b 100644 --- a/src/test/ui/parser/bad-value-ident-true.stderr +++ b/src/test/ui/parser/bad-value-ident-true.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `true` | LL | fn true() { } | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | fn r#true() { } diff --git a/src/test/ui/parser/expr-as-stmt.stderr b/src/test/ui/parser/expr-as-stmt.stderr index a11209998a7..4dcc914f25d 100644 --- a/src/test/ui/parser/expr-as-stmt.stderr +++ b/src/test/ui/parser/expr-as-stmt.stderr @@ -35,6 +35,7 @@ error: expected expression, found `>` | LL | } > 0 | ^ expected expression + | help: parentheses are required to parse this as an expression | LL | (match x { diff --git a/src/test/ui/parser/issue-15980.stderr b/src/test/ui/parser/issue-15980.stderr index 879bcb2b4a1..47c275110b4 100644 --- a/src/test/ui/parser/issue-15980.stderr +++ b/src/test/ui/parser/issue-15980.stderr @@ -6,6 +6,7 @@ LL | Err(ref e) if e.kind == io::EndOfFile { LL | LL | return | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | r#return diff --git a/src/test/ui/parser/issue-33418.stderr b/src/test/ui/parser/issue-33418.stderr index 660d9fd30c8..479e7bed101 100644 --- a/src/test/ui/parser/issue-33418.stderr +++ b/src/test/ui/parser/issue-33418.stderr @@ -3,6 +3,7 @@ error: negative trait bounds are not supported | LL | trait Tr: !SuperA {} | ^^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bound error: negative trait bounds are not supported @@ -10,6 +11,7 @@ error: negative trait bounds are not supported | LL | trait Tr2: SuperA + !SuperB {} | ^^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bound error: negative trait bounds are not supported @@ -17,6 +19,7 @@ error: negative trait bounds are not supported | LL | trait Tr3: !SuperA + SuperB {} | ^^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bound error: negative trait bounds are not supported @@ -26,6 +29,7 @@ LL | trait Tr4: !SuperA + SuperB | ^^^^^^^^^ LL | + !SuperC + SuperD {} | ^^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bounds error: negative trait bounds are not supported @@ -35,6 +39,7 @@ LL | trait Tr5: !SuperA | ^^^^^^^^^ LL | + !SuperB {} | ^^^^^^^^^ negative trait bounds are not supported + | = help: remove the trait bounds error: aborting due to 5 previous errors diff --git a/src/test/ui/parser/issue-62895.stderr b/src/test/ui/parser/issue-62895.stderr index 39ce980964b..14869e9c8f5 100644 --- a/src/test/ui/parser/issue-62895.stderr +++ b/src/test/ui/parser/issue-62895.stderr @@ -15,6 +15,7 @@ error: missing `fn` for function definition | LL | pub g() -> is | ^^^^ + | help: add `fn` here to parse `g` as a public function | LL | pub fn g() -> is diff --git a/src/test/ui/parser/issue-62973.stderr b/src/test/ui/parser/issue-62973.stderr index 141076bf6b6..e73776dc7b4 100644 --- a/src/test/ui/parser/issue-62973.stderr +++ b/src/test/ui/parser/issue-62973.stderr @@ -25,6 +25,7 @@ LL | fn p() { match s { v, E { [) {) } LL | | LL | | | |_^ + | help: surround the struct literal with parentheses | LL | fn p() { match (s { v, E { [) {) } diff --git a/src/test/ui/parser/keyword-abstract.stderr b/src/test/ui/parser/keyword-abstract.stderr index eb2c810099e..b355b3a708d 100644 --- a/src/test/ui/parser/keyword-abstract.stderr +++ b/src/test/ui/parser/keyword-abstract.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `abstract` | LL | let abstract = (); | ^^^^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#abstract = (); diff --git a/src/test/ui/parser/keyword-as-as-identifier.stderr b/src/test/ui/parser/keyword-as-as-identifier.stderr index 5648652be9b..dea4afd5c0a 100644 --- a/src/test/ui/parser/keyword-as-as-identifier.stderr +++ b/src/test/ui/parser/keyword-as-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `as` | LL | let as = "foo"; | ^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#as = "foo"; diff --git a/src/test/ui/parser/keyword-break-as-identifier.stderr b/src/test/ui/parser/keyword-break-as-identifier.stderr index 820193db70b..db05f3956a2 100644 --- a/src/test/ui/parser/keyword-break-as-identifier.stderr +++ b/src/test/ui/parser/keyword-break-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `break` | LL | let break = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#break = "foo"; diff --git a/src/test/ui/parser/keyword-const-as-identifier.stderr b/src/test/ui/parser/keyword-const-as-identifier.stderr index 95b536c99c7..45c129960ec 100644 --- a/src/test/ui/parser/keyword-const-as-identifier.stderr +++ b/src/test/ui/parser/keyword-const-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `const` | LL | let const = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#const = "foo"; diff --git a/src/test/ui/parser/keyword-continue-as-identifier.stderr b/src/test/ui/parser/keyword-continue-as-identifier.stderr index 6b24422a555..2ec4b28c94e 100644 --- a/src/test/ui/parser/keyword-continue-as-identifier.stderr +++ b/src/test/ui/parser/keyword-continue-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `continue` | LL | let continue = "foo"; | ^^^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#continue = "foo"; diff --git a/src/test/ui/parser/keyword-else-as-identifier.stderr b/src/test/ui/parser/keyword-else-as-identifier.stderr index f28635cd08c..b622806e916 100644 --- a/src/test/ui/parser/keyword-else-as-identifier.stderr +++ b/src/test/ui/parser/keyword-else-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `else` | LL | let else = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#else = "foo"; diff --git a/src/test/ui/parser/keyword-enum-as-identifier.stderr b/src/test/ui/parser/keyword-enum-as-identifier.stderr index fc54dce1b68..0f3fa3fb624 100644 --- a/src/test/ui/parser/keyword-enum-as-identifier.stderr +++ b/src/test/ui/parser/keyword-enum-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `enum` | LL | let enum = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#enum = "foo"; diff --git a/src/test/ui/parser/keyword-final.stderr b/src/test/ui/parser/keyword-final.stderr index 291710d05cb..c74e3101729 100644 --- a/src/test/ui/parser/keyword-final.stderr +++ b/src/test/ui/parser/keyword-final.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `final` | LL | let final = (); | ^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#final = (); diff --git a/src/test/ui/parser/keyword-fn-as-identifier.stderr b/src/test/ui/parser/keyword-fn-as-identifier.stderr index 692f195b288..3219eaf24f9 100644 --- a/src/test/ui/parser/keyword-fn-as-identifier.stderr +++ b/src/test/ui/parser/keyword-fn-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `fn` | LL | let fn = "foo"; | ^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#fn = "foo"; diff --git a/src/test/ui/parser/keyword-for-as-identifier.stderr b/src/test/ui/parser/keyword-for-as-identifier.stderr index bcaf421286e..30974af7424 100644 --- a/src/test/ui/parser/keyword-for-as-identifier.stderr +++ b/src/test/ui/parser/keyword-for-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `for` | LL | let for = "foo"; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#for = "foo"; diff --git a/src/test/ui/parser/keyword-if-as-identifier.stderr b/src/test/ui/parser/keyword-if-as-identifier.stderr index 43fbcd7148a..a72030befb3 100644 --- a/src/test/ui/parser/keyword-if-as-identifier.stderr +++ b/src/test/ui/parser/keyword-if-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `if` | LL | let if = "foo"; | ^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#if = "foo"; diff --git a/src/test/ui/parser/keyword-impl-as-identifier.stderr b/src/test/ui/parser/keyword-impl-as-identifier.stderr index 01886eb45cb..e51c60ed494 100644 --- a/src/test/ui/parser/keyword-impl-as-identifier.stderr +++ b/src/test/ui/parser/keyword-impl-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `impl` | LL | let impl = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#impl = "foo"; diff --git a/src/test/ui/parser/keyword-let-as-identifier.stderr b/src/test/ui/parser/keyword-let-as-identifier.stderr index f6c39077be2..d580b451809 100644 --- a/src/test/ui/parser/keyword-let-as-identifier.stderr +++ b/src/test/ui/parser/keyword-let-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `let` | LL | let let = "foo"; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#let = "foo"; diff --git a/src/test/ui/parser/keyword-loop-as-identifier.stderr b/src/test/ui/parser/keyword-loop-as-identifier.stderr index f0c282faa29..15c008da353 100644 --- a/src/test/ui/parser/keyword-loop-as-identifier.stderr +++ b/src/test/ui/parser/keyword-loop-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `loop` | LL | let loop = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#loop = "foo"; diff --git a/src/test/ui/parser/keyword-match-as-identifier.stderr b/src/test/ui/parser/keyword-match-as-identifier.stderr index f1f4397d194..5ba63965c87 100644 --- a/src/test/ui/parser/keyword-match-as-identifier.stderr +++ b/src/test/ui/parser/keyword-match-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `match` | LL | let match = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#match = "foo"; diff --git a/src/test/ui/parser/keyword-mod-as-identifier.stderr b/src/test/ui/parser/keyword-mod-as-identifier.stderr index 65ae3baa8c2..7fb1bda3fb0 100644 --- a/src/test/ui/parser/keyword-mod-as-identifier.stderr +++ b/src/test/ui/parser/keyword-mod-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `mod` | LL | let mod = "foo"; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#mod = "foo"; diff --git a/src/test/ui/parser/keyword-move-as-identifier.stderr b/src/test/ui/parser/keyword-move-as-identifier.stderr index 216f7c931ee..9721c88cb16 100644 --- a/src/test/ui/parser/keyword-move-as-identifier.stderr +++ b/src/test/ui/parser/keyword-move-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `move` | LL | let move = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#move = "foo"; diff --git a/src/test/ui/parser/keyword-override.stderr b/src/test/ui/parser/keyword-override.stderr index 3183fa510c2..8bbc6fc6547 100644 --- a/src/test/ui/parser/keyword-override.stderr +++ b/src/test/ui/parser/keyword-override.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `override` | LL | let override = (); | ^^^^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#override = (); diff --git a/src/test/ui/parser/keyword-pub-as-identifier.stderr b/src/test/ui/parser/keyword-pub-as-identifier.stderr index f81078b12bd..10ff53e2916 100644 --- a/src/test/ui/parser/keyword-pub-as-identifier.stderr +++ b/src/test/ui/parser/keyword-pub-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `pub` | LL | let pub = "foo"; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#pub = "foo"; diff --git a/src/test/ui/parser/keyword-return-as-identifier.stderr b/src/test/ui/parser/keyword-return-as-identifier.stderr index 8cc4d12fbbb..5b5f2b7ed54 100644 --- a/src/test/ui/parser/keyword-return-as-identifier.stderr +++ b/src/test/ui/parser/keyword-return-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `return` | LL | let return = "foo"; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#return = "foo"; diff --git a/src/test/ui/parser/keyword-static-as-identifier.stderr b/src/test/ui/parser/keyword-static-as-identifier.stderr index 7d22bc97d66..81aeb9e37ab 100644 --- a/src/test/ui/parser/keyword-static-as-identifier.stderr +++ b/src/test/ui/parser/keyword-static-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `static` | LL | let static = "foo"; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#static = "foo"; diff --git a/src/test/ui/parser/keyword-struct-as-identifier.stderr b/src/test/ui/parser/keyword-struct-as-identifier.stderr index b109fa6247d..1b287b60197 100644 --- a/src/test/ui/parser/keyword-struct-as-identifier.stderr +++ b/src/test/ui/parser/keyword-struct-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `struct` | LL | let struct = "foo"; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#struct = "foo"; diff --git a/src/test/ui/parser/keyword-trait-as-identifier.stderr b/src/test/ui/parser/keyword-trait-as-identifier.stderr index ccc675cdb3a..c3d4d61dbb7 100644 --- a/src/test/ui/parser/keyword-trait-as-identifier.stderr +++ b/src/test/ui/parser/keyword-trait-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `trait` | LL | let trait = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#trait = "foo"; diff --git a/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr b/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr index f71b889a30d..fcd717d6e67 100644 --- a/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr +++ b/src/test/ui/parser/keyword-try-as-identifier-edition2018.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `try` | LL | let try = "foo"; | ^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#try = "foo"; diff --git a/src/test/ui/parser/keyword-type-as-identifier.stderr b/src/test/ui/parser/keyword-type-as-identifier.stderr index 88099d949a8..dfe1958e78f 100644 --- a/src/test/ui/parser/keyword-type-as-identifier.stderr +++ b/src/test/ui/parser/keyword-type-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `type` | LL | let type = "foo"; | ^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#type = "foo"; diff --git a/src/test/ui/parser/keyword-typeof.stderr b/src/test/ui/parser/keyword-typeof.stderr index 4a1b63d5c93..7cef6de0cee 100644 --- a/src/test/ui/parser/keyword-typeof.stderr +++ b/src/test/ui/parser/keyword-typeof.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `typeof` | LL | let typeof = (); | ^^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#typeof = (); diff --git a/src/test/ui/parser/keyword-unsafe-as-identifier.stderr b/src/test/ui/parser/keyword-unsafe-as-identifier.stderr index 205bb81df40..d714a99dac4 100644 --- a/src/test/ui/parser/keyword-unsafe-as-identifier.stderr +++ b/src/test/ui/parser/keyword-unsafe-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `unsafe` | LL | let unsafe = "foo"; | ^^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#unsafe = "foo"; diff --git a/src/test/ui/parser/keyword-use-as-identifier.stderr b/src/test/ui/parser/keyword-use-as-identifier.stderr index 85a0492f573..30a6c5b16a3 100644 --- a/src/test/ui/parser/keyword-use-as-identifier.stderr +++ b/src/test/ui/parser/keyword-use-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `use` | LL | let use = "foo"; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#use = "foo"; diff --git a/src/test/ui/parser/keyword-where-as-identifier.stderr b/src/test/ui/parser/keyword-where-as-identifier.stderr index b8b85069076..38d734ab812 100644 --- a/src/test/ui/parser/keyword-where-as-identifier.stderr +++ b/src/test/ui/parser/keyword-where-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `where` | LL | let where = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#where = "foo"; diff --git a/src/test/ui/parser/keyword-while-as-identifier.stderr b/src/test/ui/parser/keyword-while-as-identifier.stderr index bb0c0ac668a..22b5454add8 100644 --- a/src/test/ui/parser/keyword-while-as-identifier.stderr +++ b/src/test/ui/parser/keyword-while-as-identifier.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `while` | LL | let while = "foo"; | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#while = "foo"; diff --git a/src/test/ui/parser/keyword.stderr b/src/test/ui/parser/keyword.stderr index 262467b6907..c179f4ec560 100644 --- a/src/test/ui/parser/keyword.stderr +++ b/src/test/ui/parser/keyword.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `break` | LL | pub mod break { | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | pub mod r#break { diff --git a/src/test/ui/parser/lex-bad-char-literals-2.stderr b/src/test/ui/parser/lex-bad-char-literals-2.stderr index 5653d4ea672..3a545ee2826 100644 --- a/src/test/ui/parser/lex-bad-char-literals-2.stderr +++ b/src/test/ui/parser/lex-bad-char-literals-2.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | 'nope' | ^^^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | "nope" diff --git a/src/test/ui/parser/lex-bad-char-literals-3.stderr b/src/test/ui/parser/lex-bad-char-literals-3.stderr index 6462a3c0e57..ec661ee2a60 100644 --- a/src/test/ui/parser/lex-bad-char-literals-3.stderr +++ b/src/test/ui/parser/lex-bad-char-literals-3.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | static c: char = '●●'; | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | static c: char = "●●"; @@ -13,6 +14,7 @@ error: character literal may only contain one codepoint | LL | let ch: &str = '●●'; | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let ch: &str = "●●"; diff --git a/src/test/ui/parser/lex-bad-char-literals-5.stderr b/src/test/ui/parser/lex-bad-char-literals-5.stderr index 97c6338820d..334165a962a 100644 --- a/src/test/ui/parser/lex-bad-char-literals-5.stderr +++ b/src/test/ui/parser/lex-bad-char-literals-5.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | static c: char = '\x10\x10'; | ^^^^^^^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | static c: char = "\x10\x10"; @@ -13,6 +14,7 @@ error: character literal may only contain one codepoint | LL | let ch: &str = '\x10\x10'; | ^^^^^^^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let ch: &str = "\x10\x10"; diff --git a/src/test/ui/parser/lex-bad-char-literals-6.stderr b/src/test/ui/parser/lex-bad-char-literals-6.stderr index a7bbe05e94b..662cf2657e7 100644 --- a/src/test/ui/parser/lex-bad-char-literals-6.stderr +++ b/src/test/ui/parser/lex-bad-char-literals-6.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | let x: &str = 'ab'; | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let x: &str = "ab"; @@ -13,6 +14,7 @@ error: character literal may only contain one codepoint | LL | let y: char = 'cd'; | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let y: char = "cd"; @@ -23,6 +25,7 @@ error: character literal may only contain one codepoint | LL | let z = 'ef'; | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | let z = "ef"; diff --git a/src/test/ui/parser/macro-keyword.stderr b/src/test/ui/parser/macro-keyword.stderr index f74c8aa57e7..9fe95c3fd3d 100644 --- a/src/test/ui/parser/macro-keyword.stderr +++ b/src/test/ui/parser/macro-keyword.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `macro` | LL | fn macro() { | ^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | fn r#macro() { diff --git a/src/test/ui/parser/macros-no-semicolon-items.stderr b/src/test/ui/parser/macros-no-semicolon-items.stderr index 5276aa6f5e9..980ceeed8c6 100644 --- a/src/test/ui/parser/macros-no-semicolon-items.stderr +++ b/src/test/ui/parser/macros-no-semicolon-items.stderr @@ -3,6 +3,7 @@ error: macros that expand to items must be delimited with braces or followed by | LL | macro_rules! foo() | ^^ + | help: change the delimiters to curly braces | LL | macro_rules! foo {} @@ -22,6 +23,7 @@ LL | | blah LL | | blah LL | | ) | |_^ + | help: change the delimiters to curly braces | LL | bar! { diff --git a/src/test/ui/parser/match-arrows-block-then-binop.stderr b/src/test/ui/parser/match-arrows-block-then-binop.stderr index bb7df30783a..3bc451e84e6 100644 --- a/src/test/ui/parser/match-arrows-block-then-binop.stderr +++ b/src/test/ui/parser/match-arrows-block-then-binop.stderr @@ -3,6 +3,7 @@ error: expected pattern, found `+` | LL | } + 5 | ^ expected pattern + | help: parentheses are required to parse this as an expression | LL | 0 => ({ diff --git a/src/test/ui/parser/mut-patterns.stderr b/src/test/ui/parser/mut-patterns.stderr index b1cf99189f1..a0e290a834d 100644 --- a/src/test/ui/parser/mut-patterns.stderr +++ b/src/test/ui/parser/mut-patterns.stderr @@ -47,6 +47,7 @@ error: expected identifier, found reserved keyword `yield` | LL | let mut mut yield(become, await) = r#yield(0, 0); | ^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let mut mut r#yield(become, await) = r#yield(0, 0); @@ -57,6 +58,7 @@ error: expected identifier, found reserved keyword `become` | LL | let mut mut yield(become, await) = r#yield(0, 0); | ^^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let mut mut yield(r#become, await) = r#yield(0, 0); @@ -67,6 +69,7 @@ error: expected identifier, found keyword `await` | LL | let mut mut yield(become, await) = r#yield(0, 0); | ^^^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let mut mut yield(become, r#await) = r#yield(0, 0); diff --git a/src/test/ui/parser/range_inclusive_dotdotdot.stderr b/src/test/ui/parser/range_inclusive_dotdotdot.stderr index f877c5c6f79..f129e1e372f 100644 --- a/src/test/ui/parser/range_inclusive_dotdotdot.stderr +++ b/src/test/ui/parser/range_inclusive_dotdotdot.stderr @@ -3,6 +3,7 @@ error: unexpected token: `...` | LL | return ...1; | ^^^ + | help: use `..` for an exclusive range | LL | return ..1; @@ -17,6 +18,7 @@ error: unexpected token: `...` | LL | let x = ...0; | ^^^ + | help: use `..` for an exclusive range | LL | let x = ..0; @@ -31,6 +33,7 @@ error: unexpected token: `...` | LL | let x = 5...5; | ^^^ + | help: use `..` for an exclusive range | LL | let x = 5..5; @@ -45,6 +48,7 @@ error: unexpected token: `...` | LL | for _ in 0...1 {} | ^^^ + | help: use `..` for an exclusive range | LL | for _ in 0..1 {} diff --git a/src/test/ui/parser/recover-from-homoglyph.stderr b/src/test/ui/parser/recover-from-homoglyph.stderr index 424d492b7ba..ec7d041647a 100644 --- a/src/test/ui/parser/recover-from-homoglyph.stderr +++ b/src/test/ui/parser/recover-from-homoglyph.stderr @@ -3,6 +3,7 @@ error: unknown start of token: \u{37e} | LL | println!(""); | ^ + | help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not | LL | println!(""); diff --git a/src/test/ui/parser/removed-syntax-field-let.stderr b/src/test/ui/parser/removed-syntax-field-let.stderr index d6e38be4869..0d15151b7d4 100644 --- a/src/test/ui/parser/removed-syntax-field-let.stderr +++ b/src/test/ui/parser/removed-syntax-field-let.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `let` | LL | let foo: (), | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | r#let foo: (), diff --git a/src/test/ui/parser/require-parens-for-chained-comparison.stderr b/src/test/ui/parser/require-parens-for-chained-comparison.stderr index 5aa37a40cbd..85478dcd1dc 100644 --- a/src/test/ui/parser/require-parens-for-chained-comparison.stderr +++ b/src/test/ui/parser/require-parens-for-chained-comparison.stderr @@ -15,6 +15,7 @@ error: chained comparison operators require parentheses | LL | f<X>(); | ^^^ + | help: use `::<...>` instead of `<...>` to specify type arguments | LL | f::<X>(); @@ -25,6 +26,7 @@ error: chained comparison operators require parentheses | LL | f<Result<Option<X>, Option<Option<X>>>(1, 2); | ^^^^^^^^ + | help: use `::<...>` instead of `<...>` to specify type arguments | LL | f::<Result<Option<X>, Option<Option<X>>>(1, 2); diff --git a/src/test/ui/parser/struct-literal-in-for.stderr b/src/test/ui/parser/struct-literal-in-for.stderr index 29af72a5d23..2e59914864a 100644 --- a/src/test/ui/parser/struct-literal-in-for.stderr +++ b/src/test/ui/parser/struct-literal-in-for.stderr @@ -6,6 +6,7 @@ LL | for x in Foo { LL | | x: 3 LL | | }.hi() { | |_____^ + | help: surround the struct literal with parentheses | LL | for x in (Foo { diff --git a/src/test/ui/parser/struct-literal-in-if.stderr b/src/test/ui/parser/struct-literal-in-if.stderr index e76c1cb45dd..7a64a42e3c8 100644 --- a/src/test/ui/parser/struct-literal-in-if.stderr +++ b/src/test/ui/parser/struct-literal-in-if.stderr @@ -6,6 +6,7 @@ LL | if Foo { LL | | x: 3 LL | | }.hi() { | |_____^ + | help: surround the struct literal with parentheses | LL | if (Foo { diff --git a/src/test/ui/parser/struct-literal-in-match-discriminant.stderr b/src/test/ui/parser/struct-literal-in-match-discriminant.stderr index 95b0882b7ae..98077761e01 100644 --- a/src/test/ui/parser/struct-literal-in-match-discriminant.stderr +++ b/src/test/ui/parser/struct-literal-in-match-discriminant.stderr @@ -6,6 +6,7 @@ LL | match Foo { LL | | x: 3 LL | | } { | |_____^ + | help: surround the struct literal with parentheses | LL | match (Foo { diff --git a/src/test/ui/parser/struct-literal-in-while.stderr b/src/test/ui/parser/struct-literal-in-while.stderr index acd31b477dc..a14df3a220e 100644 --- a/src/test/ui/parser/struct-literal-in-while.stderr +++ b/src/test/ui/parser/struct-literal-in-while.stderr @@ -6,6 +6,7 @@ LL | while Foo { LL | | x: 3 LL | | }.hi() { | |_____^ + | help: surround the struct literal with parentheses | LL | while (Foo { diff --git a/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr b/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr index 24078074161..38f4a986e12 100644 --- a/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr +++ b/src/test/ui/parser/struct-literal-restrictions-in-lamda.stderr @@ -6,6 +6,7 @@ LL | while || Foo { LL | | x: 3 LL | | }.hi() { | |_____^ + | help: surround the struct literal with parentheses | LL | while || (Foo { diff --git a/src/test/ui/parser/unicode-chars.stderr b/src/test/ui/parser/unicode-chars.stderr index 76bf6627a4b..4e14eda8f2b 100644 --- a/src/test/ui/parser/unicode-chars.stderr +++ b/src/test/ui/parser/unicode-chars.stderr @@ -3,6 +3,7 @@ error: unknown start of token: \u{37e} | LL | let y = 0; | ^ + | help: Unicode character ';' (Greek Question Mark) looks like ';' (Semicolon), but it is not | LL | let y = 0; diff --git a/src/test/ui/parser/unicode-quote-chars.stderr b/src/test/ui/parser/unicode-quote-chars.stderr index 84e45ecd873..4b0cb96ed21 100644 --- a/src/test/ui/parser/unicode-quote-chars.stderr +++ b/src/test/ui/parser/unicode-quote-chars.stderr @@ -3,6 +3,7 @@ error: unknown start of token: \u{201c} | LL | println!(“hello world”); | ^ + | help: Unicode characters '“' (Left Double Quotation Mark) and '”' (Right Double Quotation Mark) look like '"' (Quotation Mark), but are not | LL | println!("hello world"); @@ -13,6 +14,7 @@ error: unknown start of token: \u{201d} | LL | println!(“hello world”); | ^ + | help: Unicode character '”' (Right Double Quotation Mark) looks like '"' (Quotation Mark), but it is not | LL | println!(“hello world"); diff --git a/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr index 07644002543..c73e17d2fc9 100644 --- a/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr +++ b/src/test/ui/parser/use-as-where-use-ends-with-mod-sep.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `as` | LL | use std::any:: as foo; | ^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | use std::any:: r#as foo; diff --git a/src/test/ui/placement-syntax.stderr b/src/test/ui/placement-syntax.stderr index e26931e60d8..1a76f7c222f 100644 --- a/src/test/ui/placement-syntax.stderr +++ b/src/test/ui/placement-syntax.stderr @@ -3,6 +3,7 @@ error: unexpected token: `<-` | LL | if x<-1 { | ^^ + | help: if you meant to write a comparison against a negative value, add a space in between `<` and `-` | LL | if x< -1 { diff --git a/src/test/ui/pptypedef.stderr b/src/test/ui/pptypedef.stderr index dc4b3ce370c..0886622247a 100644 --- a/src/test/ui/pptypedef.stderr +++ b/src/test/ui/pptypedef.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | let_in(3u32, |i| { assert!(i == 3i32); }); | ^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | let_in(3u32, |i| { assert!(i == 3u32); }); @@ -13,6 +14,7 @@ error[E0308]: mismatched types | LL | let_in(3i32, |i| { assert!(i == 3u32); }); | ^^^^ expected i32, found u32 + | help: change the type of the numeric literal from `u32` to `i32` | LL | let_in(3i32, |i| { assert!(i == 3i32); }); diff --git a/src/test/ui/privacy/privacy-ns1.stderr b/src/test/ui/privacy/privacy-ns1.stderr index 8ffc12c31cb..16da57a78e0 100644 --- a/src/test/ui/privacy/privacy-ns1.stderr +++ b/src/test/ui/privacy/privacy-ns1.stderr @@ -3,6 +3,7 @@ error[E0423]: expected function, found trait `Bar` | LL | Bar(); | ^^^ + | help: a unit struct with a similar name exists | LL | Baz(); @@ -21,6 +22,7 @@ error[E0573]: expected type, found function `Bar` | LL | let _x: Box<Bar>; | ^^^ + | help: a struct with a similar name exists | LL | let _x: Box<Baz>; @@ -39,6 +41,7 @@ error[E0425]: cannot find function `Bar` in this scope | LL | Bar(); | ^^^ + | help: a unit struct with a similar name exists | LL | Baz(); @@ -57,6 +60,7 @@ error[E0412]: cannot find type `Bar` in this scope | LL | let _x: Box<Bar>; | ^^^ + | help: a struct with a similar name exists | LL | let _x: Box<Baz>; diff --git a/src/test/ui/privacy/privacy-ns2.stderr b/src/test/ui/privacy/privacy-ns2.stderr index 13057a899f3..f0d5da68685 100644 --- a/src/test/ui/privacy/privacy-ns2.stderr +++ b/src/test/ui/privacy/privacy-ns2.stderr @@ -3,6 +3,7 @@ error[E0423]: expected function, found trait `Bar` | LL | Bar(); | ^^^ not a function + | help: possible better candidates are found in other modules, you can import them into scope | LL | use foo1::Bar; @@ -17,6 +18,7 @@ error[E0423]: expected function, found trait `Bar` | LL | Bar(); | ^^^ + | help: a unit struct with a similar name exists | LL | Baz(); @@ -35,6 +37,7 @@ error[E0573]: expected type, found function `Bar` | LL | let _x : Box<Bar>; | ^^^ not a type + | help: possible better candidates are found in other modules, you can import them into scope | LL | use foo1::Bar; @@ -49,6 +52,7 @@ error[E0573]: expected type, found function `Bar` | LL | let _x: Box<Bar>; | ^^^ + | help: a struct with a similar name exists | LL | let _x: Box<Baz>; diff --git a/src/test/ui/proc-macro/mixed-site-span.stderr b/src/test/ui/proc-macro/mixed-site-span.stderr index 475e3e0ca35..54d10fe0d90 100644 --- a/src/test/ui/proc-macro/mixed-site-span.stderr +++ b/src/test/ui/proc-macro/mixed-site-span.stderr @@ -38,6 +38,7 @@ LL | | } | LL | pass_dollar_crate!(); | --------------------- in this macro invocation + | help: possible candidate is found in another module, you can import it into scope | LL | use ItemUse; diff --git a/src/test/ui/pub/pub-ident-fn-2.stderr b/src/test/ui/pub/pub-ident-fn-2.stderr index 69b273df031..c44a5961565 100644 --- a/src/test/ui/pub/pub-ident-fn-2.stderr +++ b/src/test/ui/pub/pub-ident-fn-2.stderr @@ -3,6 +3,7 @@ error: missing `fn` for function definition | LL | pub foo(s: usize) { bar() } | ^ + | help: add `fn` here to parse `foo` as a public function | LL | pub fn foo(s: usize) { bar() } diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr b/src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr index c403774df8e..0df6c00a316 100644 --- a/src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr +++ b/src/test/ui/pub/pub-ident-fn-with-lifetime-2.stderr @@ -3,6 +3,7 @@ error: missing `fn` for method definition | LL | pub bar<'a>(&self, _s: &'a usize) -> bool { true } | ^^^ + | help: add `fn` here to parse `bar` as a public method | LL | pub fn bar<'a>(&self, _s: &'a usize) -> bool { true } diff --git a/src/test/ui/pub/pub-ident-fn-with-lifetime.stderr b/src/test/ui/pub/pub-ident-fn-with-lifetime.stderr index 85823809640..90c78141adb 100644 --- a/src/test/ui/pub/pub-ident-fn-with-lifetime.stderr +++ b/src/test/ui/pub/pub-ident-fn-with-lifetime.stderr @@ -3,6 +3,7 @@ error: missing `fn` for function definition | LL | pub foo<'a>(_s: &'a usize) -> bool { true } | ^^^ + | help: add `fn` here to parse `foo` as a public function | LL | pub fn foo<'a>(_s: &'a usize) -> bool { true } diff --git a/src/test/ui/pub/pub-ident-fn.stderr b/src/test/ui/pub/pub-ident-fn.stderr index b5ab88b8ccf..928f62133a9 100644 --- a/src/test/ui/pub/pub-ident-fn.stderr +++ b/src/test/ui/pub/pub-ident-fn.stderr @@ -3,6 +3,7 @@ error: missing `fn` for function definition | LL | pub foo(_s: usize) -> bool { true } | ^^^ + | help: add `fn` here to parse `foo` as a public function | LL | pub fn foo(_s: usize) -> bool { true } diff --git a/src/test/ui/pub/pub-ident-struct-with-lifetime.stderr b/src/test/ui/pub/pub-ident-struct-with-lifetime.stderr index 2bbcf5dfff0..79597c54e68 100644 --- a/src/test/ui/pub/pub-ident-struct-with-lifetime.stderr +++ b/src/test/ui/pub/pub-ident-struct-with-lifetime.stderr @@ -3,6 +3,7 @@ error: missing `struct` for struct definition | LL | pub S<'a> { | ^ + | help: add `struct` here to parse `S` as a public struct | LL | pub struct S<'a> { diff --git a/src/test/ui/pub/pub-ident-struct.stderr b/src/test/ui/pub/pub-ident-struct.stderr index a9f2f89edd9..efd7d1fe76a 100644 --- a/src/test/ui/pub/pub-ident-struct.stderr +++ b/src/test/ui/pub/pub-ident-struct.stderr @@ -3,6 +3,7 @@ error: missing `struct` for struct definition | LL | pub S { | ^ + | help: add `struct` here to parse `S` as a public struct | LL | pub struct S { diff --git a/src/test/ui/repeat_count.stderr b/src/test/ui/repeat_count.stderr index df73ac0b182..aae79dfbb3f 100644 --- a/src/test/ui/repeat_count.stderr +++ b/src/test/ui/repeat_count.stderr @@ -42,6 +42,7 @@ error[E0308]: mismatched types | LL | let f = [0; -4_isize]; | ^^^^^^^^ expected usize, found isize + | help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit | LL | let f = [0; (-4_isize).try_into().unwrap()]; @@ -52,6 +53,7 @@ error[E0308]: mismatched types | LL | let f = [0_usize; -1_isize]; | ^^^^^^^^ expected usize, found isize + | help: you can convert an `isize` to `usize` and panic if the converted value wouldn't fit | LL | let f = [0_usize; (-1_isize).try_into().unwrap()]; diff --git a/src/test/ui/reserved/reserved-become.stderr b/src/test/ui/reserved/reserved-become.stderr index 3ce9fb33c28..47e5b803970 100644 --- a/src/test/ui/reserved/reserved-become.stderr +++ b/src/test/ui/reserved/reserved-become.stderr @@ -3,6 +3,7 @@ error: expected identifier, found reserved keyword `become` | LL | let become = 0; | ^^^^^^ expected identifier, found reserved keyword + | help: you can escape reserved keywords to use them as identifiers | LL | let r#become = 0; diff --git a/src/test/ui/resolve/enums-are-namespaced-xc.stderr b/src/test/ui/resolve/enums-are-namespaced-xc.stderr index d2209236a42..092051ed874 100644 --- a/src/test/ui/resolve/enums-are-namespaced-xc.stderr +++ b/src/test/ui/resolve/enums-are-namespaced-xc.stderr @@ -3,6 +3,7 @@ error[E0425]: cannot find value `A` in crate `namespaced_enums` | LL | let _ = namespaced_enums::A; | ^ not found in `namespaced_enums` + | help: possible candidate is found in another module, you can import it into scope | LL | use namespaced_enums::Foo::A; @@ -13,6 +14,7 @@ error[E0425]: cannot find function `B` in crate `namespaced_enums` | LL | let _ = namespaced_enums::B(10); | ^ not found in `namespaced_enums` + | help: possible candidate is found in another module, you can import it into scope | LL | use namespaced_enums::Foo::B; @@ -23,6 +25,7 @@ error[E0422]: cannot find struct, variant or union type `C` in crate `namespaced | LL | let _ = namespaced_enums::C { a: 10 }; | ^ not found in `namespaced_enums` + | help: possible candidate is found in another module, you can import it into scope | LL | use namespaced_enums::Foo::C; diff --git a/src/test/ui/resolve/issue-16058.stderr b/src/test/ui/resolve/issue-16058.stderr index 9766f8f1412..31f4998bd83 100644 --- a/src/test/ui/resolve/issue-16058.stderr +++ b/src/test/ui/resolve/issue-16058.stderr @@ -3,6 +3,7 @@ error[E0574]: expected struct, variant or union type, found enum `Result` | LL | Result { | ^^^^^^ not a struct, variant or union type + | help: possible better candidates are found in other modules, you can import them into scope | LL | use std::fmt::Result; diff --git a/src/test/ui/resolve/issue-17518.stderr b/src/test/ui/resolve/issue-17518.stderr index 057aac25234..6098d4f4901 100644 --- a/src/test/ui/resolve/issue-17518.stderr +++ b/src/test/ui/resolve/issue-17518.stderr @@ -3,6 +3,7 @@ error[E0422]: cannot find struct, variant or union type `E` in this scope | LL | E { name: "foobar" }; | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use SomeEnum::E; diff --git a/src/test/ui/resolve/issue-21221-1.stderr b/src/test/ui/resolve/issue-21221-1.stderr index 513e02f74e3..27fd612faca 100644 --- a/src/test/ui/resolve/issue-21221-1.stderr +++ b/src/test/ui/resolve/issue-21221-1.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `Mul` in this scope | LL | impl Mul for Foo { | ^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use mul1::Mul; @@ -17,6 +18,7 @@ error[E0412]: cannot find type `Mul` in this scope | LL | fn getMul() -> Mul { | ^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use mul1::Mul; @@ -40,6 +42,7 @@ error[E0405]: cannot find trait `Div` in this scope | LL | impl Div for Foo { | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::ops::Div; diff --git a/src/test/ui/resolve/issue-21221-2.stderr b/src/test/ui/resolve/issue-21221-2.stderr index 23d4015ca54..b360fda6f9d 100644 --- a/src/test/ui/resolve/issue-21221-2.stderr +++ b/src/test/ui/resolve/issue-21221-2.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `T` in this scope | LL | impl T for Foo { } | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use foo::bar::T; diff --git a/src/test/ui/resolve/issue-21221-3.stderr b/src/test/ui/resolve/issue-21221-3.stderr index 09cfed96bed..f2c94d467e2 100644 --- a/src/test/ui/resolve/issue-21221-3.stderr +++ b/src/test/ui/resolve/issue-21221-3.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `OuterTrait` in this scope | LL | impl OuterTrait for Foo {} | ^^^^^^^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use issue_21221_3::outer::OuterTrait; diff --git a/src/test/ui/resolve/issue-21221-4.stderr b/src/test/ui/resolve/issue-21221-4.stderr index 68989a30e67..0b1527f91bd 100644 --- a/src/test/ui/resolve/issue-21221-4.stderr +++ b/src/test/ui/resolve/issue-21221-4.stderr @@ -3,6 +3,7 @@ error[E0405]: cannot find trait `T` in this scope | LL | impl T for Foo {} | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use issue_21221_4::T; diff --git a/src/test/ui/resolve/privacy-enum-ctor.stderr b/src/test/ui/resolve/privacy-enum-ctor.stderr index 7d8d1d0abfc..b7cc79cfed9 100644 --- a/src/test/ui/resolve/privacy-enum-ctor.stderr +++ b/src/test/ui/resolve/privacy-enum-ctor.stderr @@ -3,6 +3,7 @@ error[E0423]: expected value, found enum `n::Z` | LL | n::Z; | ^^^^ + | help: try using one of the enum's variants | LL | m::Z::Fn; @@ -17,6 +18,7 @@ error[E0423]: expected value, found enum `Z` | LL | Z; | ^ + | help: a function with a similar name exists | LL | f; @@ -46,6 +48,7 @@ error[E0423]: expected value, found enum `m::E` | LL | let _: E = m::E; | ^^^^ + | help: a function with a similar name exists | LL | let _: E = m::f; @@ -81,6 +84,7 @@ error[E0423]: expected value, found enum `E` | LL | let _: E = E; | ^ + | help: try using one of the enum's variants | LL | let _: E = E::Fn; @@ -112,6 +116,7 @@ error[E0412]: cannot find type `Z` in this scope | LL | let _: Z = m::n::Z; | ^ + | help: an enum with a similar name exists | LL | let _: E = m::n::Z; @@ -126,6 +131,7 @@ error[E0423]: expected value, found enum `m::n::Z` | LL | let _: Z = m::n::Z; | ^^^^^^^ + | help: try using one of the enum's variants | LL | let _: Z = m::Z::Fn; @@ -140,6 +146,7 @@ error[E0412]: cannot find type `Z` in this scope | LL | let _: Z = m::n::Z::Fn; | ^ + | help: an enum with a similar name exists | LL | let _: E = m::n::Z::Fn; @@ -154,6 +161,7 @@ error[E0412]: cannot find type `Z` in this scope | LL | let _: Z = m::n::Z::Struct; | ^ + | help: an enum with a similar name exists | LL | let _: E = m::n::Z::Struct; @@ -179,6 +187,7 @@ error[E0412]: cannot find type `Z` in this scope | LL | let _: Z = m::n::Z::Unit {}; | ^ + | help: an enum with a similar name exists | LL | let _: E = m::n::Z::Unit {}; @@ -237,6 +246,7 @@ LL | let _ = Z::Unit(); | ^^^^^^^-- | | | call expression requires function + | help: `Z::Unit` is a unit variant, you need to write it without the parenthesis | LL | let _ = Z::Unit; @@ -267,6 +277,7 @@ LL | let _: E = m::E::Unit(); | ^^^^^^^^^^-- | | | call expression requires function + | help: `m::E::Unit` is a unit variant, you need to write it without the parenthesis | LL | let _: E = m::E::Unit; @@ -297,6 +308,7 @@ LL | let _: E = E::Unit(); | ^^^^^^^-- | | | call expression requires function + | help: `E::Unit` is a unit variant, you need to write it without the parenthesis | LL | let _: E = E::Unit; diff --git a/src/test/ui/resolve/privacy-struct-ctor.stderr b/src/test/ui/resolve/privacy-struct-ctor.stderr index 7d884d3a669..51928c32e31 100644 --- a/src/test/ui/resolve/privacy-struct-ctor.stderr +++ b/src/test/ui/resolve/privacy-struct-ctor.stderr @@ -29,6 +29,7 @@ error[E0423]: expected value, found struct `xcrate::S` | LL | xcrate::S; | ^^^^^^^^^ constructor is not visible here due to private fields + | help: possible better candidate is found in another module, you can import it into scope | LL | use m::S; diff --git a/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr b/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr index b7b158ce7ef..9a3d5feee04 100644 --- a/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr +++ b/src/test/ui/resolve/suggest-path-instead-of-mod-dot-item.stderr @@ -27,6 +27,7 @@ error[E0423]: expected value, found module `a::b` | LL | a::b.J | ^^^^ + | help: a constant with a similar name exists | LL | a::I.J @@ -57,6 +58,7 @@ error[E0423]: expected value, found module `a::b` | LL | a::b.f() | ^^^^ + | help: a constant with a similar name exists | LL | a::I.f() diff --git a/src/test/ui/resolve/use_suggestion_placement.stderr b/src/test/ui/resolve/use_suggestion_placement.stderr index 258b989387c..ef451ea847a 100644 --- a/src/test/ui/resolve/use_suggestion_placement.stderr +++ b/src/test/ui/resolve/use_suggestion_placement.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Path` in this scope | LL | type Bar = Path; | ^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use std::path::Path; @@ -13,6 +14,7 @@ error[E0425]: cannot find value `A` in this scope | LL | let _ = A; | ^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use m::A; @@ -23,6 +25,7 @@ error[E0412]: cannot find type `HashMap` in this scope | LL | type Dict<K, V> = HashMap<K, V>; | ^^^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use std::collections::HashMap; diff --git a/src/test/ui/rust-2018/dyn-trait-compatibility.stderr b/src/test/ui/rust-2018/dyn-trait-compatibility.stderr index e1f099e9190..01c4737de5e 100644 --- a/src/test/ui/rust-2018/dyn-trait-compatibility.stderr +++ b/src/test/ui/rust-2018/dyn-trait-compatibility.stderr @@ -3,6 +3,7 @@ error: expected identifier, found keyword `dyn` | LL | type A1 = dyn::dyn; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | type A1 = dyn::r#dyn; diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr b/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr index e0e846422d3..3515d422605 100644 --- a/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr +++ b/src/test/ui/rust-2018/edition-lint-infer-outlives-multispan.stderr @@ -19,6 +19,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -29,6 +30,7 @@ error: outlives requirements can be inferred | LL | struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -39,6 +41,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T, U: Debug> { @@ -49,6 +52,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T, U: Debug> { @@ -59,6 +63,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b { | ^^^^ ^^^^^^^^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereBee<'a, 'b, T, U> { @@ -69,6 +74,7 @@ error: outlives requirements can be inferred | LL | struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -79,6 +85,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug { | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -89,6 +96,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b { | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -99,6 +107,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -109,6 +118,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -119,6 +129,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> { | ^^^^ ^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeBee<'a, 'b, T> { @@ -129,6 +140,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> { | ^^^^ ^^^^^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeAyBee<'a, 'b, T> { @@ -139,6 +151,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b, T: Debug> { @@ -149,6 +162,7 @@ error: outlives requirements can be inferred | LL | struct BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b { | ^^^^^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -159,6 +173,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -169,6 +184,7 @@ error: outlives requirements can be inferred | LL | where U: 'a + Debug + 'b, 'b: 'a | ^^^^^ ^^^^^ ^^^^^^ + | help: remove these bounds | LL | where U: Debug, @@ -179,6 +195,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b>(&'a &'b T); | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyIsDebugBee<'a, 'b, T: Debug>(&'a &'b T); @@ -189,6 +206,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T>(&'a &'b T) where T: 'a + Debug + 'b; | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereOutlivesAyIsDebugBee<'a, 'b, T>(&'a &'b T) where T: Debug; @@ -199,6 +217,7 @@ error: outlives requirements can be inferred | LL | struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b>(T, &'a &'b U); | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug>(T, &'a &'b U); @@ -209,6 +228,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug>(&'a T, &'b U); | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooBeeIsDebug<'a, 'b, T, U: Debug>(&'a T, &'b U); @@ -219,6 +239,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b>(&'a T, &'b U); | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooIsDebugBee<'a, 'b, T, U: Debug>(&'a T, &'b U); @@ -229,6 +250,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: 'b; | ^^^^ ^^^^^^^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereBee<'a, 'b, T, U>(&'a T, &'b U) ; @@ -239,6 +261,7 @@ error: outlives requirements can be inferred | LL | struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U>(T, &'a &'b U) where U: 'a + Debug + 'b; | ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U>(T, &'a &'b U) where U: Debug; @@ -249,6 +272,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: 'b + Debug; | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U>(&'a T, &'b U) where U: Debug; @@ -259,6 +283,7 @@ error: outlives requirements can be inferred | LL | struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U>(&'a T, &'b U) where U: Debug + 'b; | ^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U>(&'a T, &'b U) where U: Debug; @@ -269,6 +294,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereAyYooWhereBeeIsDebug<'a, 'b, T, U>(&'a T, &'b U) where T: 'a, U: 'b + Debug; | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereAyYooWhereBeeIsDebug<'a, 'b, T, U>(&'a T, &'b U) where U: Debug; @@ -279,6 +305,7 @@ error: outlives requirements can be inferred | LL | struct TeeWhereAyYooWhereIsDebugBee<'a, 'b, T, U>(&'a T, &'b U) where T: 'a, U: Debug + 'b; | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | struct TeeWhereAyYooWhereIsDebugBee<'a, 'b, T, U>(&'a T, &'b U) where U: Debug; @@ -289,6 +316,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b>(&'a &'b T); | ^^^^ ^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeBee<'a, 'b, T>(&'a &'b T); @@ -299,6 +327,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b>(&'a &'b T); | ^^^^ ^^^^^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeAyBee<'a, 'b, T>(&'a &'b T); @@ -309,6 +338,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b>(&'a &'b T); | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b, T: Debug>(&'a &'b T); @@ -319,6 +349,7 @@ error: outlives requirements can be inferred | LL | struct BeeWhereAyTeeWhereAyIsDebugBee<'a, 'b, T>(&'a &'b T) where 'b: 'a, T: 'a + Debug + 'b; | ^^^^^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeWhereAyTeeWhereAyIsDebugBee<'a, 'b, T>(&'a &'b T) where T: Debug; @@ -329,6 +360,7 @@ error: outlives requirements can be inferred | LL | struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b>(T, &'a &'b U); | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | struct BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug>(T, &'a &'b U); @@ -339,6 +371,7 @@ error: outlives requirements can be inferred | LL | where U: 'a + Debug + 'b, 'b: 'a; | ^^^^^ ^^^^^ ^^^^^^ + | help: remove these bounds | LL | where U: Debug, ; @@ -349,6 +382,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b> { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyIsDebugBee<'a, 'b, T: Debug> { @@ -359,6 +393,7 @@ error: outlives requirements can be inferred | LL | enum TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -369,6 +404,7 @@ error: outlives requirements can be inferred | LL | enum TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -379,6 +415,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyYooBeeIsDebug<'a, 'b, T, U: Debug> { @@ -389,6 +426,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyYooIsDebugBee<'a, 'b, T, U: Debug> { @@ -399,6 +437,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b { | ^^^^ ^^^^^^^^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyYooWhereBee<'a, 'b, T, U> { @@ -409,6 +448,7 @@ error: outlives requirements can be inferred | LL | enum TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -419,6 +459,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug { | ^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -429,6 +470,7 @@ error: outlives requirements can be inferred | LL | enum TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b { | ^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -439,6 +481,7 @@ error: outlives requirements can be inferred | LL | enum TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -449,6 +492,7 @@ error: outlives requirements can be inferred | LL | enum TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | enum TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -459,6 +503,7 @@ error: outlives requirements can be inferred | LL | enum BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> { | ^^^^ ^^^^ + | help: remove these bounds | LL | enum BeeOutlivesAyTeeBee<'a, 'b, T> { @@ -469,6 +514,7 @@ error: outlives requirements can be inferred | LL | enum BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> { | ^^^^ ^^^^^^^^^ + | help: remove these bounds | LL | enum BeeOutlivesAyTeeAyBee<'a, 'b, T> { @@ -479,6 +525,7 @@ error: outlives requirements can be inferred | LL | enum BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b, T: Debug> { @@ -489,6 +536,7 @@ error: outlives requirements can be inferred | LL | enum BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b { | ^^^^^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -499,6 +547,7 @@ error: outlives requirements can be inferred | LL | enum BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | enum BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -509,6 +558,7 @@ error: outlives requirements can be inferred | LL | enum BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b, 'b: 'a { | ^^^^^ ^^^^^ ^^^^^^ + | help: remove these bounds | LL | enum BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: Debug, { @@ -519,6 +569,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyIsDebugBee<'a, 'b, T: 'a + Debug + 'b> { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyIsDebugBee<'a, 'b, T: Debug> { @@ -529,6 +580,7 @@ error: outlives requirements can be inferred | LL | union TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -539,6 +591,7 @@ error: outlives requirements can be inferred | LL | union TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: 'a + Debug + 'b> { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -549,6 +602,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyYooBeeIsDebug<'a, 'b, T: 'a, U: 'b + Debug> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyYooBeeIsDebug<'a, 'b, T, U: Debug> { @@ -559,6 +613,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyYooIsDebugBee<'a, 'b, T: 'a, U: Debug + 'b> { | ^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyYooIsDebugBee<'a, 'b, T, U: Debug> { @@ -569,6 +624,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyYooWhereBee<'a, 'b, T: 'a, U> where U: 'b { | ^^^^ ^^^^^^^^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyYooWhereBee<'a, 'b, T, U> { @@ -579,6 +635,7 @@ error: outlives requirements can be inferred | LL | union TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b { | ^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -589,6 +646,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T: 'a, U> where U: 'b + Debug { | ^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -599,6 +657,7 @@ error: outlives requirements can be inferred | LL | union TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T: 'a, U> where U: Debug + 'b { | ^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -609,6 +668,7 @@ error: outlives requirements can be inferred | LL | union TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where T: 'a, U: 'b + Debug { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeWhereOutlivesAyYooWhereBeeIsDebug<'a, 'b, T, U> where U: Debug { @@ -619,6 +679,7 @@ error: outlives requirements can be inferred | LL | union TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where T: 'a, U: Debug + 'b { | ^^^^^^^ ^^^^^ + | help: remove these bounds | LL | union TeeWhereOutlivesAyYooWhereIsDebugBee<'a, 'b, T, U> where U: Debug { @@ -629,6 +690,7 @@ error: outlives requirements can be inferred | LL | union BeeOutlivesAyTeeBee<'a, 'b: 'a, T: 'b> { | ^^^^ ^^^^ + | help: remove these bounds | LL | union BeeOutlivesAyTeeBee<'a, 'b, T> { @@ -639,6 +701,7 @@ error: outlives requirements can be inferred | LL | union BeeOutlivesAyTeeAyBee<'a, 'b: 'a, T: 'a + 'b> { | ^^^^ ^^^^^^^^^ + | help: remove these bounds | LL | union BeeOutlivesAyTeeAyBee<'a, 'b, T> { @@ -649,6 +712,7 @@ error: outlives requirements can be inferred | LL | union BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b: 'a, T: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | union BeeOutlivesAyTeeOutlivesAyIsDebugBee<'a, 'b, T: Debug> { @@ -659,6 +723,7 @@ error: outlives requirements can be inferred | LL | union BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where 'b: 'a, T: 'a + Debug + 'b { | ^^^^^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | union BeeWhereAyTeeWhereOutlivesAyIsDebugBee<'a, 'b, T> where T: Debug { @@ -669,6 +734,7 @@ error: outlives requirements can be inferred | LL | union BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b: 'a, T, U: 'a + Debug + 'b> { | ^^^^ ^^^^^ ^^^^^ + | help: remove these bounds | LL | union BeeOutlivesAyTeeYooOutlivesAyIsDebugBee<'a, 'b, T, U: Debug> { @@ -679,6 +745,7 @@ error: outlives requirements can be inferred | LL | union BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: 'a + Debug + 'b, 'b: 'a { | ^^^^^ ^^^^^ ^^^^^^ + | help: remove these bounds | LL | union BeeWhereAyTeeYooWhereOutlivesAyIsDebugBee<'a, 'b, T, U> where U: Debug, { diff --git a/src/test/ui/rust-2018/issue-52202-use-suggestions.stderr b/src/test/ui/rust-2018/issue-52202-use-suggestions.stderr index 973c486970e..c712fd048f1 100644 --- a/src/test/ui/rust-2018/issue-52202-use-suggestions.stderr +++ b/src/test/ui/rust-2018/issue-52202-use-suggestions.stderr @@ -3,6 +3,7 @@ error[E0422]: cannot find struct, variant or union type `Drain` in this scope | LL | let _d = Drain {}; | ^^^^^ not found in this scope + | help: possible candidates are found in other modules, you can import them into scope | LL | use crate::plumbing::Drain; diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.nll.stderr b/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.nll.stderr index a585b4fdbe6..713d4b75909 100644 --- a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.nll.stderr +++ b/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait-async.nll.stderr @@ -5,6 +5,7 @@ LL | async fn f(self: Pin<&Self>) -> impl Clone { self } | - ^^^^^^^^ returning this value requires that `'_` must outlive `'static` | | | lifetime `'_` defined here + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'_`, add `'_` as a constraint | LL | async fn f(self: Pin<&Self>) -> impl Clone + '_ { self } diff --git a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.nll.stderr b/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.nll.stderr index dcfc9ba511d..b46c6b9b713 100644 --- a/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.nll.stderr +++ b/src/test/ui/self/arbitrary_self_types_pin_lifetime_impl_trait.nll.stderr @@ -5,6 +5,7 @@ LL | fn f(self: Pin<&Self>) -> impl Clone { self } | - ^^^^^^^^^^ opaque type requires that `'1` must outlive `'static` | | | let's call the lifetime of this reference `'1` + | help: to allow this `impl Trait` to capture borrowed data with lifetime `'1`, add `'_` as a constraint | LL | fn f(self: Pin<&Self>) -> impl Clone + '_ { self } diff --git a/src/test/ui/self/self_type_keyword.stderr b/src/test/ui/self/self_type_keyword.stderr index 0af24dcedfb..e3b871bd867 100644 --- a/src/test/ui/self/self_type_keyword.stderr +++ b/src/test/ui/self/self_type_keyword.stderr @@ -65,6 +65,7 @@ error[E0531]: cannot find unit struct/variant or constant `Self` in this scope | LL | mut Self => (), | ^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use foo::Self; diff --git a/src/test/ui/shift-various-bad-types.stderr b/src/test/ui/shift-various-bad-types.stderr index 409fabb951a..c7a95883226 100644 --- a/src/test/ui/shift-various-bad-types.stderr +++ b/src/test/ui/shift-various-bad-types.stderr @@ -27,6 +27,7 @@ error[E0308]: mismatched types | LL | let _: i32 = 22_i64 >> 1_i32; | ^^^^^^^^^^^^^^^ expected i32, found i64 + | help: you can convert an `i64` to `i32` and panic if the converted value wouldn't fit | LL | let _: i32 = (22_i64 >> 1_i32).try_into().unwrap(); diff --git a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr b/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr index faaa7e2f1b0..25aa8bb6fb0 100644 --- a/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr +++ b/src/test/ui/single-use-lifetime/one-use-in-fn-argument.stderr @@ -23,6 +23,7 @@ LL | fn center<'m>(_: Single<'m>) {} | ^^ -- ...is used only here | | | this lifetime... + | help: elide the single-use lifetime | LL | fn center(_: Single<'_>) {} @@ -33,6 +34,7 @@ error: lifetime parameter `'y` only used once | LL | fn left<'x, 'y>(foo: Double<'x, 'y>) -> &'x u32 { foo.f } | ^^ this lifetime... -- ...is used only here + | help: elide the single-use lifetime | LL | fn left<'x>(foo: Double<'x, '_>) -> &'x u32 { foo.f } @@ -43,6 +45,7 @@ error: lifetime parameter `'x` only used once | LL | fn right<'x, 'y>(foo: Double<'x, 'y>) -> &'y u32 { foo.f } | ^^ this lifetime... -- ...is used only here + | help: elide the single-use lifetime | LL | fn right<'y>(foo: Double<'_, 'y>) -> &'y u32 { foo.f } diff --git a/src/test/ui/span/issue-35987.stderr b/src/test/ui/span/issue-35987.stderr index f73bf27110b..3245d8655e8 100644 --- a/src/test/ui/span/issue-35987.stderr +++ b/src/test/ui/span/issue-35987.stderr @@ -3,6 +3,7 @@ error[E0404]: expected trait, found type parameter `Add` | LL | impl<T: Clone, Add> Add for Foo<T> { | ^^^ not a trait + | help: possible better candidate is found in another module, you can import it into scope | LL | use std::ops::Add; diff --git a/src/test/ui/span/issue-39018.stderr b/src/test/ui/span/issue-39018.stderr index d8fbf841b61..2ce5b0c1171 100644 --- a/src/test/ui/span/issue-39018.stderr +++ b/src/test/ui/span/issue-39018.stderr @@ -6,6 +6,7 @@ LL | let x = "Hello " + "World!"; | | | | | `+` cannot be used to concatenate two `&str` strings | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let x = "Hello ".to_owned() + "World!"; @@ -29,6 +30,7 @@ LL | let x = "Hello " + "World!".to_owned(); | | | | | `+` cannot be used to concatenate a `&str` with a `String` | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let x = "Hello ".to_owned() + &"World!".to_owned(); @@ -42,6 +44,7 @@ LL | let _ = &a + &b; | | | | | `+` cannot be used to concatenate two `&str` strings | &std::string::String + | help: String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = a + &b; @@ -55,6 +58,7 @@ LL | let _ = &a + b; | | | | | `+` cannot be used to concatenate a `&str` with a `String` | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = a + &b; @@ -80,6 +84,7 @@ LL | let _ = e + b; | | | | | `+` cannot be used to concatenate a `&str` with a `String` | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = e.to_owned() + &b; @@ -93,6 +98,7 @@ LL | let _ = e + &b; | | | | | `+` cannot be used to concatenate two `&str` strings | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = e.to_owned() + &b; @@ -106,6 +112,7 @@ LL | let _ = e + d; | | | | | `+` cannot be used to concatenate two `&str` strings | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = e.to_owned() + d; @@ -119,6 +126,7 @@ LL | let _ = e + &d; | | | | | `+` cannot be used to concatenate two `&str` strings | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = e.to_owned() + &d; @@ -152,6 +160,7 @@ LL | let _ = c + &d; | | | | | `+` cannot be used to concatenate two `&str` strings | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = c.to_owned() + &d; @@ -165,6 +174,7 @@ LL | let _ = c + d; | | | | | `+` cannot be used to concatenate two `&str` strings | &str + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let _ = c.to_owned() + d; diff --git a/src/test/ui/span/missing-unit-argument.stderr b/src/test/ui/span/missing-unit-argument.stderr index f1a29bed32b..90a96e3f174 100644 --- a/src/test/ui/span/missing-unit-argument.stderr +++ b/src/test/ui/span/missing-unit-argument.stderr @@ -3,6 +3,7 @@ error[E0061]: this function takes 1 parameter but 0 parameters were supplied | LL | let _: Result<(), String> = Ok(); | ^^^^ + | help: expected the unit value `()`; create it with empty parentheses | LL | let _: Result<(), String> = Ok(()); @@ -34,6 +35,7 @@ LL | fn bar(():()) {} ... LL | bar(); | ^^^^^ + | help: expected the unit value `()`; create it with empty parentheses | LL | bar(()); @@ -47,6 +49,7 @@ LL | fn baz(self, (): ()) { } ... LL | S.baz(); | ^^^ + | help: expected the unit value `()`; create it with empty parentheses | LL | S.baz(()); @@ -60,6 +63,7 @@ LL | fn generic<T>(self, _: T) { } ... LL | S.generic::<()>(); | ^^^^^^^ + | help: expected the unit value `()`; create it with empty parentheses | LL | S.generic::<()>(()); diff --git a/src/test/ui/str/str-as-char.stderr b/src/test/ui/str/str-as-char.stderr index 540a1b55376..27d6336974c 100644 --- a/src/test/ui/str/str-as-char.stderr +++ b/src/test/ui/str/str-as-char.stderr @@ -3,6 +3,7 @@ error: character literal may only contain one codepoint | LL | println!('●●'); | ^^^^ + | help: if you meant to write a `str` literal, use double quotes | LL | println!("●●"); diff --git a/src/test/ui/str/str-concat-on-double-ref.stderr b/src/test/ui/str/str-concat-on-double-ref.stderr index 3e53cdc4d98..d193955af4b 100644 --- a/src/test/ui/str/str-concat-on-double-ref.stderr +++ b/src/test/ui/str/str-concat-on-double-ref.stderr @@ -6,6 +6,7 @@ LL | let c = a + b; | | | | | `+` cannot be used to concatenate two `&str` strings | &std::string::String + | help: `to_owned()` can be used to create an owned `String` from a string reference. String concatenation appends the string on the right to the string on the left and may require reallocation. This requires ownership of the string on the left | LL | let c = a.to_owned() + b; diff --git a/src/test/ui/struct-literal-variant-in-if.stderr b/src/test/ui/struct-literal-variant-in-if.stderr index a52ec6dc539..bfc8b24e8ac 100644 --- a/src/test/ui/struct-literal-variant-in-if.stderr +++ b/src/test/ui/struct-literal-variant-in-if.stderr @@ -3,6 +3,7 @@ error: struct literals are not allowed here | LL | if x == E::I { field1: true, field2: 42 } {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | if x == (E::I { field1: true, field2: 42 }) {} @@ -13,6 +14,7 @@ error: struct literals are not allowed here | LL | if x == E::V { field: false } {} | ^^^^^^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | if x == (E::V { field: false }) {} @@ -23,6 +25,7 @@ error: struct literals are not allowed here | LL | if x == E::J { field: -42 } {} | ^^^^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | if x == (E::J { field: -42 }) {} @@ -33,6 +36,7 @@ error: struct literals are not allowed here | LL | if x == E::K { field: "" } {} | ^^^^^^^^^^^^^^^^^^ + | help: surround the struct literal with parentheses | LL | if x == (E::K { field: "" }) {} diff --git a/src/test/ui/suggestions/no-extern-crate-in-type.stderr b/src/test/ui/suggestions/no-extern-crate-in-type.stderr index d4a5a956714..22aad3b0a9f 100644 --- a/src/test/ui/suggestions/no-extern-crate-in-type.stderr +++ b/src/test/ui/suggestions/no-extern-crate-in-type.stderr @@ -3,6 +3,7 @@ error[E0412]: cannot find type `Foo` in this scope | LL | type Output = Option<Foo>; | ^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use foo::Foo; diff --git a/src/test/ui/suggestions/suggest-closure-return-type-1.stderr b/src/test/ui/suggestions/suggest-closure-return-type-1.stderr index de2d29f1270..7ef95905380 100644 --- a/src/test/ui/suggestions/suggest-closure-return-type-1.stderr +++ b/src/test/ui/suggestions/suggest-closure-return-type-1.stderr @@ -3,6 +3,7 @@ error[E0282]: type annotations needed for the closure `fn() -> [_; 0]` | LL | let _v = || -> _ { [] }; | ^^ cannot infer type + | help: give this closure an explicit return type without `_` placeholders | LL | let _v = || -> [_; 0] { [] }; diff --git a/src/test/ui/suggestions/suggest-closure-return-type-2.stderr b/src/test/ui/suggestions/suggest-closure-return-type-2.stderr index 9dbd822fbb5..2a8d7dd5b85 100644 --- a/src/test/ui/suggestions/suggest-closure-return-type-2.stderr +++ b/src/test/ui/suggestions/suggest-closure-return-type-2.stderr @@ -3,6 +3,7 @@ error[E0282]: type annotations needed for the closure `fn() -> [_; 0]` | LL | let _v = || { [] }; | ^^ cannot infer type + | help: give this closure an explicit return type without `_` placeholders | LL | let _v = || -> [_; 0] { [] }; diff --git a/src/test/ui/suggestions/suggest-closure-return-type-3.stderr b/src/test/ui/suggestions/suggest-closure-return-type-3.stderr index ad0d4e41f78..67dc4d8fd69 100644 --- a/src/test/ui/suggestions/suggest-closure-return-type-3.stderr +++ b/src/test/ui/suggestions/suggest-closure-return-type-3.stderr @@ -3,6 +3,7 @@ error[E0282]: type annotations needed for the closure `fn() -> [_; 0]` | LL | let _v = || []; | ^^ cannot infer type + | help: give this closure an explicit return type without `_` placeholders | LL | let _v = || -> [_; 0] { [] }; diff --git a/src/test/ui/suggestions/suggest-labels.stderr b/src/test/ui/suggestions/suggest-labels.stderr index 02d46a3f596..079821e6490 100644 --- a/src/test/ui/suggestions/suggest-labels.stderr +++ b/src/test/ui/suggestions/suggest-labels.stderr @@ -3,6 +3,7 @@ error[E0426]: use of undeclared label `'fo` | LL | break 'fo; | ^^^ + | help: a label with a similar name exists in this scope | LL | break 'foo; @@ -13,6 +14,7 @@ error[E0426]: use of undeclared label `'bor` | LL | continue 'bor; | ^^^^ + | help: a label with a similar name exists in this scope | LL | continue 'bar; @@ -23,6 +25,7 @@ error[E0426]: use of undeclared label `'longlable` | LL | break 'longlable; | ^^^^^^^^^^ + | help: a label with a similar name exists in this scope | LL | break 'longlabel1; diff --git a/src/test/ui/suggestions/suggest-on-bare-closure-call.stderr b/src/test/ui/suggestions/suggest-on-bare-closure-call.stderr index 17001e3974c..28fef511e04 100644 --- a/src/test/ui/suggestions/suggest-on-bare-closure-call.stderr +++ b/src/test/ui/suggestions/suggest-on-bare-closure-call.stderr @@ -5,6 +5,7 @@ LL | let _ = ||{}(); | ^^-- | | | call expression requires function + | help: if you meant to create this closure and immediately call it, surround the closure with parenthesis | LL | let _ = (||{})(); diff --git a/src/test/ui/suggestions/suggest-std-when-using-type.stderr b/src/test/ui/suggestions/suggest-std-when-using-type.stderr index eecb4e60f9d..5199faa5c8e 100644 --- a/src/test/ui/suggestions/suggest-std-when-using-type.stderr +++ b/src/test/ui/suggestions/suggest-std-when-using-type.stderr @@ -3,6 +3,7 @@ error[E0223]: ambiguous associated type | LL | let pi = f32::consts::PI; | ^^^^^^^^^^^^^^^ + | help: you are looking for the module in `std`, not the primitive type | LL | let pi = std::f32::consts::PI; @@ -13,6 +14,7 @@ error[E0599]: no function or associated item named `from_utf8` found for type `s | LL | str::from_utf8(bytes) | ^^^^^^^^^ function or associated item not found in `str` + | help: you are looking for the module in `std`, not the primitive type | LL | std::str::from_utf8(bytes) diff --git a/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr b/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr index d273ec3fca5..098d76a5c48 100644 --- a/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr +++ b/src/test/ui/suggestions/use-type-argument-instead-of-assoc-type.stderr @@ -20,6 +20,7 @@ LL | i: Box<dyn T<usize, usize, usize, usize, B=usize>>, | | | associated type `A` must be specified | associated type `C` must be specified + | help: if you meant to specify the associated types, write | LL | i: Box<dyn T<usize, usize, A = usize, C = usize, B=usize>>, diff --git a/src/test/ui/traits/traits-multidispatch-bad.stderr b/src/test/ui/traits/traits-multidispatch-bad.stderr index 9e6c38ced0d..f4ce548314d 100644 --- a/src/test/ui/traits/traits-multidispatch-bad.stderr +++ b/src/test/ui/traits/traits-multidispatch-bad.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | test(22i32, 44i32); | ^^^^^ expected u32, found i32 + | help: change the type of the numeric literal from `i32` to `u32` | LL | test(22i32, 44u32); diff --git a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr b/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr index e9c28248044..5820e4699c1 100644 --- a/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr +++ b/src/test/ui/trivial-bounds/trivial-bounds-inconsistent-projection-error.stderr @@ -6,6 +6,7 @@ LL | fn global_bound_is_hidden() -> u8 ... LL | B::get_x() | ^^^^^^^^^^ expected u8, found i32 + | help: you can convert an `i32` to `u8` and panic if the converted value wouldn't fit | LL | B::get_x().try_into().unwrap() diff --git a/src/test/ui/try-block/try-block-in-edition2015.stderr b/src/test/ui/try-block/try-block-in-edition2015.stderr index c94e43131fa..7547dadf9e2 100644 --- a/src/test/ui/try-block/try-block-in-edition2015.stderr +++ b/src/test/ui/try-block/try-block-in-edition2015.stderr @@ -6,6 +6,7 @@ LL | let try_result: Option<_> = try { LL | LL | let x = 5; | ^^^ expected identifier, found keyword + | help: you can escape reserved keywords to use them as identifiers | LL | r#let x = 5; diff --git a/src/test/ui/tutorial-suffix-inference-test.stderr b/src/test/ui/tutorial-suffix-inference-test.stderr index f3e1cc41cad..ae0cf124673 100644 --- a/src/test/ui/tutorial-suffix-inference-test.stderr +++ b/src/test/ui/tutorial-suffix-inference-test.stderr @@ -12,6 +12,7 @@ error[E0308]: mismatched types | LL | identity_u16(y); | ^ expected u16, found i32 + | help: you can convert an `i32` to `u16` and panic if the converted value wouldn't fit | LL | identity_u16(y.try_into().unwrap()); @@ -22,6 +23,7 @@ error[E0308]: mismatched types | LL | identity_u16(a); | ^ expected u16, found isize + | help: you can convert an `isize` to `u16` and panic if the converted value wouldn't fit | LL | identity_u16(a.try_into().unwrap()); diff --git a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr index c6528e417d8..801ca5f013b 100644 --- a/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr +++ b/src/test/ui/type-alias-enum-variants/incorrect-variant-form-through-alias-caught.stderr @@ -26,6 +26,7 @@ LL | Alias::Unit(); | ^^^^^^^^^^^-- | | | call expression requires function + | help: `<Alias>::Unit` is a unit variant, you need to write it without the parenthesis | LL | <Alias>::Unit; diff --git a/src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr b/src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr index f749ed3f9d8..a6f24984c8b 100644 --- a/src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr +++ b/src/test/ui/ufcs/ufcs-qpath-self-mismatch.stderr @@ -11,6 +11,7 @@ error[E0308]: mismatched types | LL | <i32 as Add<i32>>::add(1u32, 2); | ^^^^ expected i32, found u32 + | help: change the type of the numeric literal from `u32` to `i32` | LL | <i32 as Add<i32>>::add(1i32, 2); @@ -21,6 +22,7 @@ error[E0308]: mismatched types | LL | <i32 as Add<i32>>::add(1, 2u32); | ^^^^ expected i32, found u32 + | help: change the type of the numeric literal from `u32` to `i32` | LL | <i32 as Add<i32>>::add(1, 2i32); diff --git a/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr b/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr index 758762fd5fd..2479f3e601e 100644 --- a/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr +++ b/src/test/ui/unboxed-closures/unboxed-closures-type-mismatch.stderr @@ -3,6 +3,7 @@ error[E0308]: mismatched types | LL | let z = f(1_usize, 2); | ^^^^^^^ expected isize, found usize + | help: change the type of the numeric literal from `usize` to `isize` | LL | let z = f(1_isize, 2); diff --git a/src/test/ui/use/use-super-global-path.stderr b/src/test/ui/use/use-super-global-path.stderr index 72b3deaaece..3ca30ebebba 100644 --- a/src/test/ui/use/use-super-global-path.stderr +++ b/src/test/ui/use/use-super-global-path.stderr @@ -15,6 +15,7 @@ error[E0425]: cannot find function `main` in this scope | LL | main(); | ^^^^ not found in this scope + | help: possible candidate is found in another module, you can import it into scope | LL | use main; diff --git a/src/test/ui/variants/variant-used-as-type.stderr b/src/test/ui/variants/variant-used-as-type.stderr index fdfc044d81f..096dd16c634 100644 --- a/src/test/ui/variants/variant-used-as-type.stderr +++ b/src/test/ui/variants/variant-used-as-type.stderr @@ -3,6 +3,7 @@ error[E0573]: expected type, found variant `Ty::A` | LL | B(Ty::A), | ^^^^^ not a type + | help: try using the variant's enum | LL | B(E), @@ -15,6 +16,7 @@ error[E0573]: expected type, found variant `E::A` | LL | impl E::A {} | ^^^^ not a type + | help: try using the variant's enum | LL | impl E {} |
