diff options
Diffstat (limited to 'src/test/run-pass')
| -rw-r--r-- | src/test/run-pass/issue-11736.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issue2378c.rs | 23 | ||||
| -rw-r--r-- | src/test/run-pass/operator-overloading.rs | 8 | ||||
| -rw-r--r-- | src/test/run-pass/overload-index-operator.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/overloaded-index.rs | 53 |
5 files changed, 63 insertions, 29 deletions
diff --git a/src/test/run-pass/issue-11736.rs b/src/test/run-pass/issue-11736.rs index 255807b4c0e..10d6e0158f6 100644 --- a/src/test/run-pass/issue-11736.rs +++ b/src/test/run-pass/issue-11736.rs @@ -16,13 +16,13 @@ use std::collections::Bitv; fn main() { // Generate sieve of Eratosthenes for n up to 1e6 let n = 1000000u; - let sieve = Bitv::with_capacity(n+1, true); + let mut sieve = Bitv::with_capacity(n+1, true); let limit: uint = (n as f32).sqrt() as uint; for i in range(2, limit+1) { if sieve[i] { let mut j = 0; while i*i + j*i <= n { - sieve[i*i+j*i] = false; + sieve.set(i*i+j*i, false); j += 1; } } diff --git a/src/test/run-pass/issue2378c.rs b/src/test/run-pass/issue2378c.rs deleted file mode 100644 index c453a538c7e..00000000000 --- a/src/test/run-pass/issue2378c.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012-2014 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. - -// aux-build:issue2378a.rs -// aux-build:issue2378b.rs - -extern crate issue2378a; -extern crate issue2378b; - -use issue2378a::{just}; -use issue2378b::{two_maybes}; - -pub fn main() { - let x = two_maybes{a: just(3i), b: just(5i)}; - assert_eq!(x[0u], (3, 5)); -} diff --git a/src/test/run-pass/operator-overloading.rs b/src/test/run-pass/operator-overloading.rs index 00e19b8481f..a36d8132b26 100644 --- a/src/test/run-pass/operator-overloading.rs +++ b/src/test/run-pass/operator-overloading.rs @@ -43,8 +43,12 @@ impl ops::Not<Point> for Point { } impl ops::Index<bool,int> for Point { - fn index(&self, x: &bool) -> int { - if *x { self.x } else { self.y } + fn index<'a>(&'a self, x: &bool) -> &'a int { + if *x { + &self.x + } else { + &self.y + } } } diff --git a/src/test/run-pass/overload-index-operator.rs b/src/test/run-pass/overload-index-operator.rs index de5456ef1c0..6b1ac0b821c 100644 --- a/src/test/run-pass/overload-index-operator.rs +++ b/src/test/run-pass/overload-index-operator.rs @@ -31,10 +31,10 @@ impl<K,V> AssociationList<K,V> { } impl<K:PartialEq,V:Clone> Index<K,V> for AssociationList<K,V> { - fn index(&self, index: &K) -> V { + fn index<'a>(&'a self, index: &K) -> &'a V { for pair in self.pairs.iter() { if pair.key == *index { - return pair.value.clone(); + return &pair.value } } fail!("No value found for key: {:?}", index); diff --git a/src/test/run-pass/overloaded-index.rs b/src/test/run-pass/overloaded-index.rs new file mode 100644 index 00000000000..9d7c068cccd --- /dev/null +++ b/src/test/run-pass/overloaded-index.rs @@ -0,0 +1,53 @@ +// Copyright 2014 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. + +struct Foo { + x: int, + y: int, +} + +impl Index<int,int> for Foo { + fn index<'a>(&'a self, z: &int) -> &'a int { + if *z == 0 { + &self.x + } else { + &self.y + } + } +} + +impl IndexMut<int,int> for Foo { + fn index_mut<'a>(&'a mut self, z: &int) -> &'a mut int { + if *z == 0 { + &mut self.x + } else { + &mut self.y + } + } +} + +fn main() { + let mut f = Foo { + x: 1, + y: 2, + }; + assert_eq!(f[1], 2); + f[0] = 3; + assert_eq!(f[0], 3); + { + let p = &mut f[1]; + *p = 4; + } + { + let p = &f[1]; + assert_eq!(*p, 4); + } +} + |
