diff options
| -rw-r--r-- | compiler/rustc_typeck/src/check/method/suggest.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/typeck/issue-89806.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/typeck/issue-89806.stderr | 26 |
3 files changed, 30 insertions, 0 deletions
diff --git a/compiler/rustc_typeck/src/check/method/suggest.rs b/compiler/rustc_typeck/src/check/method/suggest.rs index 28b19981c2d..934b83bd700 100644 --- a/compiler/rustc_typeck/src/check/method/suggest.rs +++ b/compiler/rustc_typeck/src/check/method/suggest.rs @@ -1251,6 +1251,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { self.tcx.lang_items().deref_trait(), self.tcx.lang_items().deref_mut_trait(), self.tcx.lang_items().drop_trait(), + self.tcx.get_diagnostic_item(sym::AsRef), ]; // Try alternative arbitrary self types that could fulfill this call. // FIXME: probe for all types that *could* be arbitrary self-types, not diff --git a/src/test/ui/typeck/issue-89806.rs b/src/test/ui/typeck/issue-89806.rs new file mode 100644 index 00000000000..69cec08652a --- /dev/null +++ b/src/test/ui/typeck/issue-89806.rs @@ -0,0 +1,3 @@ +fn main() { + 0u8.as_ref(); //~ ERROR no method named `as_ref` found for type `u8` in the current scope +} diff --git a/src/test/ui/typeck/issue-89806.stderr b/src/test/ui/typeck/issue-89806.stderr new file mode 100644 index 00000000000..9a54fac5261 --- /dev/null +++ b/src/test/ui/typeck/issue-89806.stderr @@ -0,0 +1,26 @@ +error[E0599]: no method named `as_ref` found for type `u8` in the current scope + --> $DIR/issue-89806.rs:2:9 + | +LL | 0u8.as_ref(); + | ^^^^^^ method not found in `u8` + | + ::: $SRC_DIR/core/src/pin.rs:LL:COL + | +LL | pub fn as_ref(&self) -> Pin<&P::Target> { + | ------ + | | + | the method is available for `Pin<&mut u8>` here + | the method is available for `Pin<&u8>` here + | +help: consider wrapping the receiver expression with the appropriate type + | +LL | Pin::new(&mut 0u8).as_ref(); + | +++++++++++++ + +help: consider wrapping the receiver expression with the appropriate type + | +LL | Pin::new(&0u8).as_ref(); + | ++++++++++ + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0599`. |
