about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-09-13 17:26:57 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-09-13 17:31:59 -0400
commit298f06f267383ecfa4e461f6cfbc12a4366d391d (patch)
tree88696d32982c4e319a5c9c33e02abb0b12a34ee6 /src
parentb81743e69c56cbfeb5f1fa8b5dc03eff9a34bc52 (diff)
downloadrust-298f06f267383ecfa4e461f6cfbc12a4366d391d.tar.gz
rust-298f06f267383ecfa4e461f6cfbc12a4366d391d.zip
make ! support the equality/ordering operators
An expression such as `bottom == not_bottom` or `not_bottom == bottom`
already compiled, but this fixes the case where both sides are `bottom`.
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/ty.rs2
-rw-r--r--src/test/run-fail/binop-fail-3.rs13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index e4b459bc34b..9abee133290 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -4326,7 +4326,7 @@ pub fn is_binopable(cx: ctxt, ty: t, op: ast::BinOp) -> bool {
     /*char*/    [f, f, f, f,     t,   t,  f,   f],
     /*int*/     [t, t, t, t,     t,   t,  t,   f],
     /*float*/   [t, t, t, f,     t,   t,  f,   f],
-    /*bot*/     [t, t, t, t,     f,   f,  t,   t],
+    /*bot*/     [t, t, t, t,     t,   t,  t,   t],
     /*raw ptr*/ [f, f, f, f,     t,   t,  f,   f]];
 
     return tbl[tycat(cx, ty)][opcat(op)];
diff --git a/src/test/run-fail/binop-fail-3.rs b/src/test/run-fail/binop-fail-3.rs
new file mode 100644
index 00000000000..150544f16af
--- /dev/null
+++ b/src/test/run-fail/binop-fail-3.rs
@@ -0,0 +1,13 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// error-pattern:quux
+fn foo() -> ! { fail!("quux"); }
+fn main() { foo() == foo(); }