--- /dev/null
+fn warn(_: &str) {}
+
+macro_rules! intrinsic_match {
+ ($intrinsic:expr) => {
+ warn(format!("unsupported intrinsic {}", $intrinsic));
+ //^~ ERROR mismatched types
+ };
+}
+
+fn main() {
+ intrinsic_match! {
+ "abc"
+ };
+}
--- /dev/null
+error[E0308]: mismatched types
+ --> $DIR/dont-suggest-deref-inside-macro-issue-58298.rs:10:5
+ |
+LL | intrinsic_match! {
+ | _____^
+ | |_____|
+ | ||
+LL | || "abc"
+LL | || };
+ | || ^
+ | ||______|
+ | |_______expected &str, found struct `std::string::String`
+ | in this macro invocation
+ |
+ = note: expected type `&str`
+ found type `std::string::String`
+ = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.