}
}
- fn is_str_ref<'tcx>(ty: Ty<'tcx>) -> bool {
+ fn is_str_ref(ty: Ty<'_>) -> bool {
match ty.sty {
ty::Str => true,
ty::Ref(_, ty, _) => is_str_ref(&ty),
--- /dev/null
+fn foo1(s: &str) {
+ s.as_str();
+ //~^ ERROR no method named `as_str` found for type `&str` in the current scope
+}
+
+fn foo2<'a>(s: &'a str) {
+ s.as_str();
+ //~^ ERROR no method named `as_str` found for type `&'a str` in the current scope
+}
+
+fn foo3(s: &mut str) {
+ s.as_str();
+ //~^ ERROR no method named `as_str` found for type `&mut str` in the current scope
+}
+
+fn foo4(s: &&str) {
+ s.as_str();
+ //~^ ERROR no method named `as_str` found for type `&&str` in the current scope
+}
+
+fn main() {}
--- /dev/null
+error[E0599]: no method named `as_str` found for type `&str` in the current scope
+ --> $DIR/remove-as_str.rs:2:7
+ |
+LL | s.as_str();
+ | ^^^^^^ help: try to remove `as_str`
+
+error[E0599]: no method named `as_str` found for type `&'a str` in the current scope
+ --> $DIR/remove-as_str.rs:7:7
+ |
+LL | s.as_str();
+ | ^^^^^^ help: try to remove `as_str`
+
+error[E0599]: no method named `as_str` found for type `&mut str` in the current scope
+ --> $DIR/remove-as_str.rs:12:7
+ |
+LL | s.as_str();
+ | ^^^^^^ help: try to remove `as_str`
+
+error[E0599]: no method named `as_str` found for type `&&str` in the current scope
+ --> $DIR/remove-as_str.rs:17:7
+ |
+LL | s.as_str();
+ | ^^^^^^ help: try to remove `as_str`
+
+error: aborting due to 4 previous errors
+
+For more information about this error, try `rustc --explain E0599`.