about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Cann <shum@canndrew.org>2017-02-05 16:41:32 +0800
committerAndrew Cann <shum@canndrew.org>2017-02-05 16:41:32 +0800
commit0dbb1e4fee5218b338ed1c8307665342c2b99e4f (patch)
tree6d1043afbf065d670899aa0c90c4cd939a0cc630
parenta1f42cd8930d465bf616d5b2bc5d7b1b945177ab (diff)
downloadrust-0dbb1e4fee5218b338ed1c8307665342c2b99e4f.tar.gz
rust-0dbb1e4fee5218b338ed1c8307665342c2b99e4f.zip
Remove use of ptr::eq
-rw-r--r--src/librustc_const_eval/check_match.rs31
-rw-r--r--src/librustc_const_eval/lib.rs1
2 files changed, 18 insertions, 14 deletions
diff --git a/src/librustc_const_eval/check_match.rs b/src/librustc_const_eval/check_match.rs
index ce478f1a450..f53d451152f 100644
--- a/src/librustc_const_eval/check_match.rs
+++ b/src/librustc_const_eval/check_match.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use std::ptr;
 use _match::{MatchCheckCtxt, Matrix, expand_pattern, is_useful};
 use _match::Usefulness::*;
 use _match::WitnessPreference::*;
@@ -274,7 +273,7 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>,
     let mut seen = Matrix::empty();
     let mut catchall = None;
     let mut printed_if_let_err = false;
-    for &(ref pats, guard) in arms {
+    for (arm_index, &(ref pats, guard)) in arms.iter().enumerate() {
         for &(pat, hir_pat) in pats {
             let v = vec![pat];
 
@@ -305,17 +304,23 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>,
                             let span = first_pat.0.span;
 
                             // check which arm we're on.
-                            if ptr::eq(first_arm_pats, pats) {
-                                let mut diagnostic = Diagnostic::new(Level::Warning,
-                                                                     "unreachable pattern");
-                                diagnostic.set_span(pat.span);
-                                cx.tcx.sess.add_lint_diagnostic(lint::builtin::UNREACHABLE_PATTERNS,
-                                                                hir_pat.id, diagnostic);
-                            } else {
-                                struct_span_err!(cx.tcx.sess, span, E0165,
-                                                 "irrefutable while-let pattern")
-                                    .span_label(span, &format!("irrefutable pattern"))
-                                    .emit();
+                            match arm_index {
+                                // The arm with the user-specified pattern.
+                                0 => {
+                                    let mut diagnostic = Diagnostic::new(Level::Warning,
+                                                                         "unreachable pattern");
+                                    diagnostic.set_span(pat.span);
+                                    cx.tcx.sess.add_lint_diagnostic(lint::builtin::UNREACHABLE_PATTERNS,
+                                                                    hir_pat.id, diagnostic);
+                                },
+                                // The arm with the wildcard pattern.
+                                1 => {
+                                    struct_span_err!(cx.tcx.sess, span, E0165,
+                                                     "irrefutable while-let pattern")
+                                        .span_label(span, &format!("irrefutable pattern"))
+                                        .emit();
+                                },
+                                _ => bug!(),
                             }
                         },
 
diff --git a/src/librustc_const_eval/lib.rs b/src/librustc_const_eval/lib.rs
index 7c579f44e79..198e49daabc 100644
--- a/src/librustc_const_eval/lib.rs
+++ b/src/librustc_const_eval/lib.rs
@@ -30,7 +30,6 @@
 #![feature(box_syntax)]
 #![feature(const_fn)]
 #![feature(i128_type)]
-#![feature(ptr_eq)]
 
 extern crate arena;
 #[macro_use] extern crate syntax;