Skip to content

Commit

Permalink
auto merge of #15310 : pcwalton/rust/tests-for-12223, r=brson
Browse files Browse the repository at this point in the history
still in scope".

This issue was fixed by PR #12828 and #5781. All that was left was to
add tests.

Closes #12223.
  • Loading branch information
bors committed Jul 2, 2014
2 parents 3fb3568 + 8b27223 commit cb220a8
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 0 deletions.
19 changes: 19 additions & 0 deletions src/test/compile-fail/drop-with-active-borrows-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// 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.

fn main() {
let a = "".to_string();
let b: Vec<&str> = a.as_slice().lines().collect();
drop(a); //~ ERROR cannot move out of `a` because it is borrowed
for s in b.iter() {
println!("{}", *s);
}
}

19 changes: 19 additions & 0 deletions src/test/compile-fail/drop-with-active-borrows-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// 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.

fn read_lines_borrowed() -> Vec<&str> {
let raw_lines: Vec<String> = vec!("foo ".to_string(), " bar".to_string());
raw_lines.iter().map(|l| l.as_slice().trim()).collect()
//~^ ERROR `raw_lines` does not live long enough
}

fn main() {
println!("{}", read_lines_borrowed());
}
17 changes: 17 additions & 0 deletions src/test/run-pass/drop-with-type-ascription-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// 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.

fn main() {
let foo = "hello".to_string();
let foo: Vec<&str> = foo.as_slice().words().collect();
let invalid_string = foo.get(0);
assert_eq!(*invalid_string, "hello");
}

17 changes: 17 additions & 0 deletions src/test/run-pass/drop-with-type-ascription-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// 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.

fn main() {
let args = vec!("foobie", "asdf::asdf");
let arr: Vec<&str> = args.get(1).as_slice().split_str("::").collect();
assert_eq!(*arr.get(0), "asdf");
assert_eq!(*arr.get(0), "asdf");
}

0 comments on commit cb220a8

Please sign in to comment.