diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-03-16 16:26:28 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-03-17 08:34:25 -0400 |
| commit | 277b4f035aa7e42330aabbc243a8fcb5cf4cc8bd (patch) | |
| tree | b786a1665596c39a64d27b8b672b911be898bafe /src/test | |
| parent | 5f5ed62298e5e366b931363b804631305178df5c (diff) | |
| download | rust-277b4f035aa7e42330aabbc243a8fcb5cf4cc8bd.tar.gz rust-277b4f035aa7e42330aabbc243a8fcb5cf4cc8bd.zip | |
Fix soundness hole when unsizing boxes.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/borrowck-consume-unsize-vec.rs | 22 | ||||
| -rw-r--r-- | src/test/compile-fail/borrowck-consume-upcast-box.rs | 24 |
2 files changed, 46 insertions, 0 deletions
diff --git a/src/test/compile-fail/borrowck-consume-unsize-vec.rs b/src/test/compile-fail/borrowck-consume-unsize-vec.rs new file mode 100644 index 00000000000..32490e0dc7d --- /dev/null +++ b/src/test/compile-fail/borrowck-consume-unsize-vec.rs @@ -0,0 +1,22 @@ +// Copyright 2015 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. + +// Check that we report an error if an upcast box is moved twice. + +fn consume(_: Box<[i32]>) { +} + +fn foo(b: Box<[i32;5]>) { + consume(b); + consume(b); //~ ERROR use of moved value +} + +fn main() { +} diff --git a/src/test/compile-fail/borrowck-consume-upcast-box.rs b/src/test/compile-fail/borrowck-consume-upcast-box.rs new file mode 100644 index 00000000000..5bcafa675c7 --- /dev/null +++ b/src/test/compile-fail/borrowck-consume-upcast-box.rs @@ -0,0 +1,24 @@ +// Copyright 2015 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. + +// Check that we report an error if an upcast box is moved twice. + +trait Foo { fn dummy(&self); } + +fn consume(_: Box<Foo>) { +} + +fn foo(b: Box<Foo+Send>) { + consume(b); + consume(b); //~ ERROR use of moved value +} + +fn main() { +} |
