diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-08-21 11:44:20 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-08-21 11:44:20 -0400 |
| commit | 10b8941bce6d678fafe437bacaf25499d8c6ecf9 (patch) | |
| tree | 002ada42fdaddffbf1a96270512301eccaaf6f8d | |
| parent | aa469a994cced0db89fc889322430d41fa6f40eb (diff) | |
| download | rust-10b8941bce6d678fafe437bacaf25499d8c6ecf9.tar.gz rust-10b8941bce6d678fafe437bacaf25499d8c6ecf9.zip | |
fix accidental reversal of 'static, and add a test
| -rw-r--r-- | src/librustc/middle/free_region.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/regions-free-region-outlives-static-outlives-free-region.rs | 25 |
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() { } |
