about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Koropoff <bkoropoff@gmail.com>2014-09-19 21:09:59 -0700
committerBrian Koropoff <bkoropoff@gmail.com>2014-09-20 00:18:08 -0700
commit31f6d45a181859e10595ee1de43dfaee9f16963d (patch)
tree95483afe324b976e5d30f2953345c61f3777cf3e
parent3b6e880fffb8e09b15bc6fc41d5b23f21bf5056d (diff)
downloadrust-31f6d45a181859e10595ee1de43dfaee9f16963d.tar.gz
rust-31f6d45a181859e10595ee1de43dfaee9f16963d.zip
Do not attempt to autoderef `!`
This prevents error spam when attempting to look up overload traits.
-rw-r--r--src/librustc/middle/typeck/check/mod.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index c8728d375f6..8d67c04f687 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -2156,6 +2156,10 @@ pub fn autoderef<T>(fcx: &FnCtxt, sp: Span, base_ty: ty::t,
     for autoderefs in range(0, fcx.tcx().sess.recursion_limit.get()) {
         let resolved_t = structurally_resolved_type(fcx, sp, t);
 
+        if ty::type_is_bot(resolved_t) {
+            return (resolved_t, autoderefs, None);
+        }
+
         match should_stop(resolved_t, autoderefs) {
             Some(x) => return (resolved_t, autoderefs, Some(x)),
             None => {}