about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-08-15 11:46:52 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-08-15 11:46:52 -0700
commitfbf1efb949b9d76b4964b7b6a7a606de116ecb46 (patch)
tree91cd4bb80505f6eaab4aea72c81aa75ce995cd49
parentf7af19c279b8b7ea3d2c21fcbd67164af8d5d968 (diff)
downloadrust-fbf1efb949b9d76b4964b7b6a7a606de116ecb46.tar.gz
rust-fbf1efb949b9d76b4964b7b6a7a606de116ecb46.zip
Do not suggest `try_into` for base types inside of macro expansions
-rw-r--r--src/librustc_typeck/check/demand.rs4
-rw-r--r--src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs3
-rw-r--r--src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr11
3 files changed, 18 insertions, 0 deletions
diff --git a/src/librustc_typeck/check/demand.rs b/src/librustc_typeck/check/demand.rs
index ed25601208a..f3b56b31b77 100644
--- a/src/librustc_typeck/check/demand.rs
+++ b/src/librustc_typeck/check/demand.rs
@@ -554,6 +554,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
             // FIXME(estebank): modify once we decide to suggest `as` casts
             return false;
         }
+        if !self.tcx.sess.source_map().span_to_filename(expr.span).is_real() {
+            // Ignore if span is from within a macro.
+            return false;
+        }
 
         // If casting this expression to a given numeric type would be appropriate in case of a type
         // mismatch.
diff --git a/src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs b/src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs
new file mode 100644
index 00000000000..d625199c937
--- /dev/null
+++ b/src/test/ui/suggestions/dont-suggest-try_into-in-macros.rs
@@ -0,0 +1,3 @@
+fn main() {
+    assert_eq!(10u64, 10usize); //~ ERROR mismatched types
+}
diff --git a/src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr b/src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr
new file mode 100644
index 00000000000..f04306997a9
--- /dev/null
+++ b/src/test/ui/suggestions/dont-suggest-try_into-in-macros.stderr
@@ -0,0 +1,11 @@
+error[E0308]: mismatched types
+  --> $DIR/dont-suggest-try_into-in-macros.rs:2:5
+   |
+LL |     assert_eq!(10u64, 10usize);
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u64, found usize
+   |
+   = 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`.