From f796fcd623c6e21544accb2315344be176c43e77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Esteban=20K=C3=BCber?= Date: Wed, 15 Nov 2017 22:18:52 -0800 Subject: [PATCH] Point to ADT definition when not finding variant, method, assoc type --- src/librustc_typeck/check/method/suggest.rs | 67 +++--- src/test/compile-fail/bogus-tag.rs | 1 + src/test/compile-fail/issue-22933-2.rs | 2 +- src/test/compile-fail/issue-23173.rs | 1 + src/test/compile-fail/issue-23217.rs | 2 +- src/test/compile-fail/issue-28971.rs | 2 +- ...e-21659-show-relevant-trait-impls-3.stderr | 3 + .../method-suggestion-no-duplication.stderr | 3 + .../no-method-suggested-traits.stderr | 200 +++++++++++++----- src/test/ui/method-call-err-msg.stderr | 3 + .../ui/mismatched_types/issue-36053-2.stderr | 21 +- .../method-help-unsatisfied-bound.stderr | 19 +- .../no-double-error.stderr | 2 +- src/test/ui/span/issue-7575.stderr | 3 + .../issue-18343.stderr | 3 + .../issue-2392.stderr | 33 +++ .../issue-32128.stderr | 3 + .../private-field.stderr | 3 + .../ui/suggestions/suggest-methods.stderr | 20 +- 19 files changed, 286 insertions(+), 105 deletions(-) diff --git a/src/librustc_typeck/check/method/suggest.rs b/src/librustc_typeck/check/method/suggest.rs index ba7a2b4fb33a..78062460584f 100644 --- a/src/librustc_typeck/check/method/suggest.rs +++ b/src/librustc_typeck/check/method/suggest.rs @@ -175,32 +175,49 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { let tcx = self.tcx; let actual = self.resolve_type_vars_if_possible(&rcvr_ty); - let mut err = if !actual.references_error() { - struct_span_err!(tcx.sess, span, E0599, - "no {} named `{}` found for type `{}` in the \ - current scope", - if mode == Mode::MethodCall { - "method" - } else if actual.is_enum() { - "variant" - } else { - let fresh_ty = actual.is_fresh_ty(); - match (item_name.as_str().chars().next(), fresh_ty) { - (Some(name), false) if name.is_lowercase() => { - "function or associated item" - } - (Some(_), false) => "associated item", - (Some(_), true) | (None, false) => { - "variant or associated item" - } - (None, true) => "variant", - } - }, - item_name, - self.ty_to_string(actual)) + let ty_string = self.ty_to_string(actual); + let type_str = if mode == Mode::MethodCall { + "method" + } else if actual.is_enum() { + "variant" } else { - self.tcx.sess.diagnostic().struct_dummy() + match (item_name.as_str().chars().next(), actual.is_fresh_ty()) { + (Some(name), false) if name.is_lowercase() => { + "function or associated item" + } + (Some(_), false) => "associated item", + (Some(_), true) | (None, false) => { + "variant or associated item" + } + (None, true) => "variant", + } }; + let mut err = if !actual.references_error() { + struct_span_err!( + tcx.sess, + span, + E0599, + "no {} named `{}` found for type `{}` in the current scope", + type_str, + item_name, + ty_string + ) + } else { + tcx.sess.diagnostic().struct_dummy() + }; + + if let Some(def) = actual.ty_adt_def() { + let full_sp = tcx.def_span(def.did); + let def_sp = tcx.sess.codemap().def_span(full_sp); + err.span_label(def_sp, format!("{} `{}` not found {}", + type_str, + item_name, + if def.is_enum() { + "here" + } else { + "for this" + })); + } // If the method name is the name of a field with a function or closure type, // give a helping note that it has to be called as (x.f)(...). @@ -243,6 +260,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { _ => {} } } + } else { + err.span_label(span, format!("{} not found in `{}`", type_str, ty_string)); } if self.is_fn_ty(&rcvr_ty, span) { diff --git a/src/test/compile-fail/bogus-tag.rs b/src/test/compile-fail/bogus-tag.rs index 65daa9a82eab..b592457fb4af 100644 --- a/src/test/compile-fail/bogus-tag.rs +++ b/src/test/compile-fail/bogus-tag.rs @@ -10,6 +10,7 @@ enum color { rgb(isize, isize, isize), rgba(isize, isize, isize, isize), } +//~^ NOTE variant `hsl` not found here fn main() { let red: color = color::rgb(255, 0, 0); diff --git a/src/test/compile-fail/issue-22933-2.rs b/src/test/compile-fail/issue-22933-2.rs index e887c7760d69..9b070f03bc0f 100644 --- a/src/test/compile-fail/issue-22933-2.rs +++ b/src/test/compile-fail/issue-22933-2.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -enum Delicious { +enum Delicious { //~ NOTE variant `PIE` not found here Pie = 0x1, Apple = 0x2, ApplePie = Delicious::Apple as isize | Delicious::PIE as isize, diff --git a/src/test/compile-fail/issue-23173.rs b/src/test/compile-fail/issue-23173.rs index 0ad583e52839..08e9eaa68aba 100644 --- a/src/test/compile-fail/issue-23173.rs +++ b/src/test/compile-fail/issue-23173.rs @@ -9,6 +9,7 @@ // except according to those terms. enum Token { LeftParen, RightParen, Plus, Minus, /* etc */ } +//~^ NOTE variant `Homura` not found here fn use_token(token: &Token) { unimplemented!() } diff --git a/src/test/compile-fail/issue-23217.rs b/src/test/compile-fail/issue-23217.rs index dc51adf42aad..a1740bb681d6 100644 --- a/src/test/compile-fail/issue-23217.rs +++ b/src/test/compile-fail/issue-23217.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -pub enum SomeEnum { +pub enum SomeEnum { //~ NOTE variant `A` not found here B = SomeEnum::A, //~^ ERROR no variant named `A` found for type `SomeEnum` } diff --git a/src/test/compile-fail/issue-28971.rs b/src/test/compile-fail/issue-28971.rs index e553fee5a62f..f5ad8840ebb0 100644 --- a/src/test/compile-fail/issue-28971.rs +++ b/src/test/compile-fail/issue-28971.rs @@ -10,7 +10,7 @@ // This should not cause an ICE -enum Foo { +enum Foo { //~ NOTE variant `Baz` not found here Bar(u8) } fn main(){ diff --git a/src/test/ui/impl-trait/issue-21659-show-relevant-trait-impls-3.stderr b/src/test/ui/impl-trait/issue-21659-show-relevant-trait-impls-3.stderr index 3bc281726ef3..297694568493 100644 --- a/src/test/ui/impl-trait/issue-21659-show-relevant-trait-impls-3.stderr +++ b/src/test/ui/impl-trait/issue-21659-show-relevant-trait-impls-3.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `foo` found for type `Bar` in the current scope --> $DIR/issue-21659-show-relevant-trait-impls-3.rs:30:8 | +23 | struct Bar; + | ----------- method `foo` not found for this +... 30 | f1.foo(1usize); | ^^^ | diff --git a/src/test/ui/impl-trait/method-suggestion-no-duplication.stderr b/src/test/ui/impl-trait/method-suggestion-no-duplication.stderr index d3dbb77490b8..52d3931011a7 100644 --- a/src/test/ui/impl-trait/method-suggestion-no-duplication.stderr +++ b/src/test/ui/impl-trait/method-suggestion-no-duplication.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `is_empty` found for type `Foo` in the current scope --> $DIR/method-suggestion-no-duplication.rs:19:15 | +14 | struct Foo; + | ----------- method `is_empty` not found for this +... 19 | foo(|s| s.is_empty()); | ^^^^^^^^ | diff --git a/src/test/ui/impl-trait/no-method-suggested-traits.stderr b/src/test/ui/impl-trait/no-method-suggested-traits.stderr index 23f115858cd5..55d93a6c3288 100644 --- a/src/test/ui/impl-trait/no-method-suggested-traits.stderr +++ b/src/test/ui/impl-trait/no-method-suggested-traits.stderr @@ -12,17 +12,22 @@ error[E0599]: no method named `method` found for type `u32` in the current scope candidate #4: `use no_method_suggested_traits::Reexported;` error[E0599]: no method named `method` found for type `std::rc::Rc<&mut std::boxed::Box<&u32>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:38:44 - | -38 | std::rc::Rc::new(&mut Box::new(&1u32)).method(); - | ^^^^^^ - | - = help: items from traits can only be used if the trait is in scope - = note: the following traits are implemented but not in scope, perhaps add a `use` for one of them: - candidate #1: `use foo::Bar;` - candidate #2: `use no_method_suggested_traits::foo::PubPub;` - candidate #3: `use no_method_suggested_traits::qux::PrivPub;` - candidate #4: `use no_method_suggested_traits::Reexported;` + --> $DIR/no-method-suggested-traits.rs:38:44 + | +38 | std::rc::Rc::new(&mut Box::new(&1u32)).method(); + | ^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method` not found for this + | + = help: items from traits can only be used if the trait is in scope + = note: the following traits are implemented but not in scope, perhaps add a `use` for one of them: + candidate #1: `use foo::Bar;` + candidate #2: `use no_method_suggested_traits::foo::PubPub;` + candidate #3: `use no_method_suggested_traits::qux::PrivPub;` + candidate #4: `use no_method_suggested_traits::Reexported;` error[E0599]: no method named `method` found for type `char` in the current scope --> $DIR/no-method-suggested-traits.rs:44:9 @@ -35,14 +40,19 @@ error[E0599]: no method named `method` found for type `char` in the current scop candidate #1: `use foo::Bar;` error[E0599]: no method named `method` found for type `std::rc::Rc<&mut std::boxed::Box<&char>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:48:43 - | -48 | std::rc::Rc::new(&mut Box::new(&'a')).method(); - | ^^^^^^ - | - = help: items from traits can only be used if the trait is in scope - = note: the following trait is implemented but not in scope, perhaps add a `use` for it: - candidate #1: `use foo::Bar;` + --> $DIR/no-method-suggested-traits.rs:48:43 + | +48 | std::rc::Rc::new(&mut Box::new(&'a')).method(); + | ^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method` not found for this + | + = help: items from traits can only be used if the trait is in scope + = note: the following trait is implemented but not in scope, perhaps add a `use` for it: + candidate #1: `use foo::Bar;` error[E0599]: no method named `method` found for type `i32` in the current scope --> $DIR/no-method-suggested-traits.rs:53:10 @@ -55,18 +65,25 @@ error[E0599]: no method named `method` found for type `i32` in the current scope candidate #1: `use no_method_suggested_traits::foo::PubPub;` error[E0599]: no method named `method` found for type `std::rc::Rc<&mut std::boxed::Box<&i32>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:57:44 - | -57 | std::rc::Rc::new(&mut Box::new(&1i32)).method(); - | ^^^^^^ - | - = help: items from traits can only be used if the trait is in scope - = note: the following trait is implemented but not in scope, perhaps add a `use` for it: - candidate #1: `use no_method_suggested_traits::foo::PubPub;` + --> $DIR/no-method-suggested-traits.rs:57:44 + | +57 | std::rc::Rc::new(&mut Box::new(&1i32)).method(); + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method` not found for this + | + = help: items from traits can only be used if the trait is in scope + = note: the following trait is implemented but not in scope, perhaps add a `use` for it: + candidate #1: `use no_method_suggested_traits::foo::PubPub;` error[E0599]: no method named `method` found for type `Foo` in the current scope --> $DIR/no-method-suggested-traits.rs:62:9 | +14 | struct Foo; + | ----------- method `method` not found for this +... 62 | Foo.method(); | ^^^^^^ | @@ -80,19 +97,24 @@ error[E0599]: no method named `method` found for type `Foo` in the current scope candidate #6: `no_method_suggested_traits::Reexported` error[E0599]: no method named `method` found for type `std::rc::Rc<&mut std::boxed::Box<&Foo>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:71:43 - | -71 | std::rc::Rc::new(&mut Box::new(&Foo)).method(); - | ^^^^^^ - | - = help: items from traits can only be used if the trait is implemented and in scope - = note: the following traits define an item `method`, perhaps you need to implement one of them: - candidate #1: `foo::Bar` - candidate #2: `no_method_suggested_traits::foo::PubPub` - candidate #3: `no_method_suggested_traits::bar::PubPriv` - candidate #4: `no_method_suggested_traits::qux::PrivPub` - candidate #5: `no_method_suggested_traits::quz::PrivPriv` - candidate #6: `no_method_suggested_traits::Reexported` + --> $DIR/no-method-suggested-traits.rs:71:43 + | +71 | std::rc::Rc::new(&mut Box::new(&Foo)).method(); + | ^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method` not found for this + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following traits define an item `method`, perhaps you need to implement one of them: + candidate #1: `foo::Bar` + candidate #2: `no_method_suggested_traits::foo::PubPub` + candidate #3: `no_method_suggested_traits::bar::PubPriv` + candidate #4: `no_method_suggested_traits::qux::PrivPub` + candidate #5: `no_method_suggested_traits::quz::PrivPriv` + candidate #6: `no_method_suggested_traits::Reexported` error[E0599]: no method named `method2` found for type `u64` in the current scope --> $DIR/no-method-suggested-traits.rs:81:10 @@ -105,40 +127,60 @@ error[E0599]: no method named `method2` found for type `u64` in the current scop candidate #1: `foo::Bar` error[E0599]: no method named `method2` found for type `std::rc::Rc<&mut std::boxed::Box<&u64>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:85:44 - | -85 | std::rc::Rc::new(&mut Box::new(&1u64)).method2(); - | ^^^^^^^ - | - = help: items from traits can only be used if the trait is implemented and in scope - = note: the following trait defines an item `method2`, perhaps you need to implement it: - candidate #1: `foo::Bar` + --> $DIR/no-method-suggested-traits.rs:85:44 + | +85 | std::rc::Rc::new(&mut Box::new(&1u64)).method2(); + | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method2` not found for this + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following trait defines an item `method2`, perhaps you need to implement it: + candidate #1: `foo::Bar` error[E0599]: no method named `method2` found for type `no_method_suggested_traits::Foo` in the current scope --> $DIR/no-method-suggested-traits.rs:90:37 | 90 | no_method_suggested_traits::Foo.method2(); | ^^^^^^^ + | + ::: $DIR/auxiliary/no_method_suggested_traits.rs + | +13 | pub struct Foo; + | --------------- method `method2` not found for this | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `method2`, perhaps you need to implement it: candidate #1: `foo::Bar` error[E0599]: no method named `method2` found for type `std::rc::Rc<&mut std::boxed::Box<&no_method_suggested_traits::Foo>>` in the current scope - --> $DIR/no-method-suggested-traits.rs:94:71 - | -94 | std::rc::Rc::new(&mut Box::new(&no_method_suggested_traits::Foo)).method2(); - | ^^^^^^^ - | - = help: items from traits can only be used if the trait is implemented and in scope - = note: the following trait defines an item `method2`, perhaps you need to implement it: - candidate #1: `foo::Bar` + --> $DIR/no-method-suggested-traits.rs:94:71 + | +94 | std::rc::Rc::new(&mut Box::new(&no_method_suggested_traits::Foo)).method2(); + | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method2` not found for this + | + = help: items from traits can only be used if the trait is implemented and in scope + = note: the following trait defines an item `method2`, perhaps you need to implement it: + candidate #1: `foo::Bar` error[E0599]: no method named `method2` found for type `no_method_suggested_traits::Bar` in the current scope --> $DIR/no-method-suggested-traits.rs:98:40 | 98 | no_method_suggested_traits::Bar::X.method2(); | ^^^^^^^ + | + ::: $DIR/auxiliary/no_method_suggested_traits.rs + | +14 | pub enum Bar { X } + | ------------ method `method2` not found here | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `method2`, perhaps you need to implement it: @@ -149,6 +191,11 @@ error[E0599]: no method named `method2` found for type `std::rc::Rc<&mut std::bo | 102 | std::rc::Rc::new(&mut Box::new(&no_method_suggested_traits::Bar::X)).method2(); | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method2` not found for this | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `method2`, perhaps you need to implement it: @@ -157,6 +204,9 @@ error[E0599]: no method named `method2` found for type `std::rc::Rc<&mut std::bo error[E0599]: no method named `method3` found for type `Foo` in the current scope --> $DIR/no-method-suggested-traits.rs:107:9 | +14 | struct Foo; + | ----------- method `method3` not found for this +... 107 | Foo.method3(); | ^^^^^^^ | @@ -169,6 +219,11 @@ error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::bo | 111 | std::rc::Rc::new(&mut Box::new(&Foo)).method3(); | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method3` not found for this | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `method3`, perhaps you need to implement it: @@ -177,6 +232,9 @@ error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::bo error[E0599]: no method named `method3` found for type `Bar` in the current scope --> $DIR/no-method-suggested-traits.rs:115:12 | +15 | enum Bar { X } + | -------- method `method3` not found here +... 115 | Bar::X.method3(); | ^^^^^^^ | @@ -189,6 +247,11 @@ error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::bo | 119 | std::rc::Rc::new(&mut Box::new(&Bar::X)).method3(); | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method3` not found for this | = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `method3`, perhaps you need to implement it: @@ -205,30 +268,55 @@ error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::bo | 126 | std::rc::Rc::new(&mut Box::new(&1_usize)).method3(); //~ ERROR no method named | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method3` not found for this error[E0599]: no method named `method3` found for type `no_method_suggested_traits::Foo` in the current scope --> $DIR/no-method-suggested-traits.rs:127:37 | 127 | no_method_suggested_traits::Foo.method3(); //~ ERROR no method named | ^^^^^^^ + | + ::: $DIR/auxiliary/no_method_suggested_traits.rs + | +13 | pub struct Foo; + | --------------- method `method3` not found for this error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::boxed::Box<&no_method_suggested_traits::Foo>>` in the current scope --> $DIR/no-method-suggested-traits.rs:128:71 | 128 | std::rc::Rc::new(&mut Box::new(&no_method_suggested_traits::Foo)).method3(); | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method3` not found for this error[E0599]: no method named `method3` found for type `no_method_suggested_traits::Bar` in the current scope --> $DIR/no-method-suggested-traits.rs:130:40 | 130 | no_method_suggested_traits::Bar::X.method3(); //~ ERROR no method named | ^^^^^^^ + | + ::: $DIR/auxiliary/no_method_suggested_traits.rs + | +14 | pub enum Bar { X } + | ------------ method `method3` not found here error[E0599]: no method named `method3` found for type `std::rc::Rc<&mut std::boxed::Box<&no_method_suggested_traits::Bar>>` in the current scope --> $DIR/no-method-suggested-traits.rs:131:74 | 131 | std::rc::Rc::new(&mut Box::new(&no_method_suggested_traits::Bar::X)).method3(); | ^^^^^^^ + | + ::: /checkout/src/liballoc/rc.rs + | +284 | pub struct Rc { + | ------------------------ method `method3` not found for this error: aborting due to 24 previous errors diff --git a/src/test/ui/method-call-err-msg.stderr b/src/test/ui/method-call-err-msg.stderr index c39c62daf9ef..1d4558cad671 100644 --- a/src/test/ui/method-call-err-msg.stderr +++ b/src/test/ui/method-call-err-msg.stderr @@ -28,6 +28,9 @@ error[E0061]: this function takes 2 parameters but 1 parameter was supplied error[E0599]: no method named `take` found for type `Foo` in the current scope --> $DIR/method-call-err-msg.rs:34:7 | +13 | pub struct Foo; + | --------------- method `take` not found for this +... 34 | .take() //~ ERROR no method named `take` found for type `Foo` in the current scope | ^^^^ | diff --git a/src/test/ui/mismatched_types/issue-36053-2.stderr b/src/test/ui/mismatched_types/issue-36053-2.stderr index 71a3a0a5714e..1d50f809c3b1 100644 --- a/src/test/ui/mismatched_types/issue-36053-2.stderr +++ b/src/test/ui/mismatched_types/issue-36053-2.stderr @@ -1,12 +1,17 @@ error[E0599]: no method named `count` found for type `std::iter::Filter>, [closure@$DIR/issue-36053-2.rs:17:39: 17:53]>` in the current scope - --> $DIR/issue-36053-2.rs:17:55 - | -17 | once::<&str>("str").fuse().filter(|a: &str| true).count(); - | ^^^^^ - | - = note: the method `count` exists but the following trait bounds were not satisfied: - `std::iter::Filter>, [closure@$DIR/issue-36053-2.rs:17:39: 17:53]> : std::iter::Iterator` - `&mut std::iter::Filter>, [closure@$DIR/issue-36053-2.rs:17:39: 17:53]> : std::iter::Iterator` + --> $DIR/issue-36053-2.rs:17:55 + | +17 | once::<&str>("str").fuse().filter(|a: &str| true).count(); + | ^^^^^ + | + ::: /checkout/src/libcore/iter/mod.rs + | +1200 | pub struct Filter { + | ----------------------- method `count` not found for this + | + = note: the method `count` exists but the following trait bounds were not satisfied: + `std::iter::Filter>, [closure@$DIR/issue-36053-2.rs:17:39: 17:53]> : std::iter::Iterator` + `&mut std::iter::Filter>, [closure@$DIR/issue-36053-2.rs:17:39: 17:53]> : std::iter::Iterator` error[E0631]: type mismatch in closure arguments --> $DIR/issue-36053-2.rs:17:32 diff --git a/src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr b/src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr index ab5b3e179152..7469ec96b39d 100644 --- a/src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr +++ b/src/test/ui/mismatched_types/method-help-unsatisfied-bound.stderr @@ -1,11 +1,16 @@ error[E0599]: no method named `unwrap` found for type `std::result::Result<(), Foo>` in the current scope - --> $DIR/method-help-unsatisfied-bound.rs:15:7 - | -15 | a.unwrap(); - | ^^^^^^ - | - = note: the method `unwrap` exists but the following trait bounds were not satisfied: - `Foo : std::fmt::Debug` + --> $DIR/method-help-unsatisfied-bound.rs:15:7 + | +15 | a.unwrap(); + | ^^^^^^ + | + ::: /checkout/src/libcore/result.rs + | +256 | pub enum Result { + | --------------------- method `unwrap` not found here + | + = note: the method `unwrap` exists but the following trait bounds were not satisfied: + `Foo : std::fmt::Debug` error: aborting due to previous error diff --git a/src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr b/src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr index da065eea897b..4a83b606dccd 100644 --- a/src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr +++ b/src/test/ui/rfc-2005-default-binding-mode/no-double-error.stderr @@ -2,7 +2,7 @@ error[E0599]: no associated item named `XXX` found for type `u32` in the current --> $DIR/no-double-error.rs:18:9 | 18 | u32::XXX => { } - | ^^^^^^^^ + | ^^^^^^^^ associated item not found in `u32` error: aborting due to previous error diff --git a/src/test/ui/span/issue-7575.stderr b/src/test/ui/span/issue-7575.stderr index 08ec2a87fcdc..9b248f49e08b 100644 --- a/src/test/ui/span/issue-7575.stderr +++ b/src/test/ui/span/issue-7575.stderr @@ -33,6 +33,9 @@ note: candidate #3 is defined in the trait `UnusedTrait` error[E0599]: no method named `fff` found for type `Myisize` in the current scope --> $DIR/issue-7575.rs:74:30 | +48 | struct Myisize(isize); + | ---------------------- method `fff` not found for this +... 74 | u.f8(42) + u.f9(342) + m.fff(42) | ^^^ | diff --git a/src/test/ui/suggestions/confuse-field-and-method/issue-18343.stderr b/src/test/ui/suggestions/confuse-field-and-method/issue-18343.stderr index 0ca61127634b..bbe8fe7345aa 100644 --- a/src/test/ui/suggestions/confuse-field-and-method/issue-18343.stderr +++ b/src/test/ui/suggestions/confuse-field-and-method/issue-18343.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `closure` found for type `Obj<[closure@$DIR/issue-18343.rs:16:28: 16:33]>` in the current scope --> $DIR/issue-18343.rs:17:7 | +11 | struct Obj where F: FnMut() -> u32 { + | ------------------------------------- method `closure` not found for this +... 17 | o.closure(); | ^^^^^^^ field, not a method | diff --git a/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr b/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr index c6f134f118db..a9211e1864e3 100644 --- a/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr +++ b/src/test/ui/suggestions/confuse-field-and-method/issue-2392.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `closure` found for type `Obj<[closure@$DIR/issue-2392.rs:49:36: 49:41]>` in the current scope --> $DIR/issue-2392.rs:50:15 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `closure` not found for this +... 50 | o_closure.closure(); //~ ERROR no method named `closure` found | ^^^^^^^ field, not a method | @@ -9,6 +12,9 @@ error[E0599]: no method named `closure` found for type `Obj<[closure@$DIR/issue- error[E0599]: no method named `not_closure` found for type `Obj<[closure@$DIR/issue-2392.rs:49:36: 49:41]>` in the current scope --> $DIR/issue-2392.rs:54:15 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `not_closure` not found for this +... 54 | o_closure.not_closure(); | ^^^^^^^^^^^ field, not a method | @@ -17,6 +23,9 @@ error[E0599]: no method named `not_closure` found for type `Obj<[closure@$DIR/is error[E0599]: no method named `closure` found for type `Obj u32 {func}>` in the current scope --> $DIR/issue-2392.rs:60:12 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `closure` not found for this +... 60 | o_func.closure(); //~ ERROR no method named `closure` found | ^^^^^^^ field, not a method | @@ -25,6 +34,9 @@ error[E0599]: no method named `closure` found for type `Obj u32 {func}>` error[E0599]: no method named `boxed_closure` found for type `BoxedObj` in the current scope --> $DIR/issue-2392.rs:65:14 | +30 | struct BoxedObj { + | --------------- method `boxed_closure` not found for this +... 65 | boxed_fn.boxed_closure();//~ ERROR no method named `boxed_closure` found | ^^^^^^^^^^^^^ field, not a method | @@ -33,6 +45,9 @@ error[E0599]: no method named `boxed_closure` found for type `BoxedObj` in the c error[E0599]: no method named `boxed_closure` found for type `BoxedObj` in the current scope --> $DIR/issue-2392.rs:70:19 | +30 | struct BoxedObj { + | --------------- method `boxed_closure` not found for this +... 70 | boxed_closure.boxed_closure();//~ ERROR no method named `boxed_closure` found | ^^^^^^^^^^^^^ field, not a method | @@ -41,6 +56,9 @@ error[E0599]: no method named `boxed_closure` found for type `BoxedObj` in the c error[E0599]: no method named `closure` found for type `Obj u32 {func}>` in the current scope --> $DIR/issue-2392.rs:77:12 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `closure` not found for this +... 77 | w.wrap.closure();//~ ERROR no method named `closure` found | ^^^^^^^ field, not a method | @@ -49,6 +67,9 @@ error[E0599]: no method named `closure` found for type `Obj u32 {func}>` error[E0599]: no method named `not_closure` found for type `Obj u32 {func}>` in the current scope --> $DIR/issue-2392.rs:81:12 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `not_closure` not found for this +... 81 | w.wrap.not_closure(); | ^^^^^^^^^^^ field, not a method | @@ -57,6 +78,9 @@ error[E0599]: no method named `not_closure` found for type `Obj u32 {fun error[E0599]: no method named `closure` found for type `Obj + 'static>>` in the current scope --> $DIR/issue-2392.rs:86:24 | +25 | struct Obj where F: FnOnce() -> u32 { + | -------------------------------------- method `closure` not found for this +... 86 | check_expression().closure();//~ ERROR no method named `closure` found | ^^^^^^^ field, not a method | @@ -65,6 +89,9 @@ error[E0599]: no method named `closure` found for type `Obj $DIR/issue-2392.rs:94:31 | +15 | struct FuncContainer { + | -------------------- method `f1` not found for this +... 94 | (*self.container).f1(1); //~ ERROR no method named `f1` found | ^^ field, not a method | @@ -73,6 +100,9 @@ error[E0599]: no method named `f1` found for type `FuncContainer` in the current error[E0599]: no method named `f2` found for type `FuncContainer` in the current scope --> $DIR/issue-2392.rs:97:31 | +15 | struct FuncContainer { + | -------------------- method `f2` not found for this +... 97 | (*self.container).f2(1); //~ ERROR no method named `f2` found | ^^ field, not a method | @@ -81,6 +111,9 @@ error[E0599]: no method named `f2` found for type `FuncContainer` in the current error[E0599]: no method named `f3` found for type `FuncContainer` in the current scope --> $DIR/issue-2392.rs:100:31 | +15 | struct FuncContainer { + | -------------------- method `f3` not found for this +... 100 | (*self.container).f3(1); //~ ERROR no method named `f3` found | ^^ field, not a method | diff --git a/src/test/ui/suggestions/confuse-field-and-method/issue-32128.stderr b/src/test/ui/suggestions/confuse-field-and-method/issue-32128.stderr index a45e70d48c99..d6a837a17ae1 100644 --- a/src/test/ui/suggestions/confuse-field-and-method/issue-32128.stderr +++ b/src/test/ui/suggestions/confuse-field-and-method/issue-32128.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `example` found for type `Example` in the current scope --> $DIR/issue-32128.rs:22:10 | +11 | struct Example { + | -------------- method `example` not found for this +... 22 | demo.example(1); | ^^^^^^^ field, not a method | diff --git a/src/test/ui/suggestions/confuse-field-and-method/private-field.stderr b/src/test/ui/suggestions/confuse-field-and-method/private-field.stderr index 945192662602..dd0081782f41 100644 --- a/src/test/ui/suggestions/confuse-field-and-method/private-field.stderr +++ b/src/test/ui/suggestions/confuse-field-and-method/private-field.stderr @@ -1,6 +1,9 @@ error[E0599]: no method named `dog_age` found for type `animal::Dog` in the current scope --> $DIR/private-field.rs:26:23 | +12 | pub struct Dog { + | -------------- method `dog_age` not found for this +... 26 | let dog_age = dog.dog_age(); | ^^^^^^^ private field, not a method diff --git a/src/test/ui/suggestions/suggest-methods.stderr b/src/test/ui/suggestions/suggest-methods.stderr index 41beb73b1bc3..7b7653d927c0 100644 --- a/src/test/ui/suggestions/suggest-methods.stderr +++ b/src/test/ui/suggestions/suggest-methods.stderr @@ -1,18 +1,26 @@ error[E0599]: no method named `bat` found for type `Foo` in the current scope --> $DIR/suggest-methods.rs:28:7 | +11 | struct Foo; + | ----------- method `bat` not found for this +... 28 | f.bat(1.0); | ^^^ | = help: did you mean `bar`? error[E0599]: no method named `is_emtpy` found for type `std::string::String` in the current scope - --> $DIR/suggest-methods.rs:31:15 - | -31 | let _ = s.is_emtpy(); - | ^^^^^^^^ - | - = help: did you mean `is_empty`? + --> $DIR/suggest-methods.rs:31:15 + | +31 | let _ = s.is_emtpy(); + | ^^^^^^^^ + | + ::: /checkout/src/liballoc/string.rs + | +294 | pub struct String { + | ----------------- method `is_emtpy` not found for this + | + = help: did you mean `is_empty`? error[E0599]: no method named `count_eos` found for type `u32` in the current scope --> $DIR/suggest-methods.rs:35:19