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
--- /dev/null
+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`.