about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2015-08-21 11:44:20 -0400
committerNiko Matsakis <niko@alum.mit.edu>2015-08-21 11:44:20 -0400
commit10b8941bce6d678fafe437bacaf25499d8c6ecf9 (patch)
tree002ada42fdaddffbf1a96270512301eccaaf6f8d
parentaa469a994cced0db89fc889322430d41fa6f40eb (diff)
downloadrust-10b8941bce6d678fafe437bacaf25499d8c6ecf9.tar.gz
rust-10b8941bce6d678fafe437bacaf25499d8c6ecf9.zip
fix accidental reversal of 'static, and add a test
-rw-r--r--src/librustc/middle/free_region.rs2
-rw-r--r--src/test/run-pass/regions-free-region-outlives-static-outlives-free-region.rs25
2 files changed, 26 insertions, 1 deletions
diff --git a/src/librustc/middle/free_region.rs b/src/librustc/middle/free_region.rs
index 787303231b0..98c3c390d33 100644
--- a/src/librustc/middle/free_region.rs
+++ b/src/librustc/middle/free_region.rs
@@ -93,7 +93,7 @@ impl FreeRegionMap {
         let result = sub == sup || {
             let sub = ty::ReFree(sub);
             let sup = ty::ReFree(sup);
-            self.relation.contains(&sub, &sup) || self.relation.contains(&sup, &ty::ReStatic)
+            self.relation.contains(&sub, &sup) || self.relation.contains(&ty::ReStatic, &sup)
         };
         debug!("sub_free_region(sub={:?}, sup={:?}) = {:?}", sub, sup, result);
         result
diff --git a/src/test/run-pass/regions-free-region-outlives-static-outlives-free-region.rs b/src/test/run-pass/regions-free-region-outlives-static-outlives-free-region.rs
new file mode 100644
index 00000000000..09c8d1f23a2
--- /dev/null
+++ b/src/test/run-pass/regions-free-region-outlives-static-outlives-free-region.rs
@@ -0,0 +1,25 @@
+// Copyright 2012 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.
+
+// Test that we recognize that if you have
+//
+//     'a : 'static
+//
+// then
+//
+//     'a : 'b
+
+fn test<'a,'b>(x: &'a i32) -> &'b i32
+    where 'a: 'static
+{
+    x
+}
+
+fn main() { }