diff options
| author | Andrew Paseltiner <apaseltiner@gmail.com> | 2016-02-29 22:03:23 -0500 |
|---|---|---|
| committer | Andrew Paseltiner <apaseltiner@gmail.com> | 2016-03-01 18:51:46 -0500 |
| commit | f522d882373067ab79ea0fdc30be6150eeccb1fd (patch) | |
| tree | 16ba657f47d2e5fe3fcb0e5bc7b483062e400225 /src/test | |
| parent | 52cb8a9d39d05126a79e7b9a3adc31a5e3cdde94 (diff) | |
Explicitly opt out of `Sync` for `cell` and `mpsc` types
These types were already `!Sync`, but this improves error messages when they are used in contexts that require `Sync`, aligning them with conventions used with `Rc`, among others.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/comm-not-freeze-receiver.rs | 17 | ||||
| -rw-r--r-- | src/test/compile-fail/comm-not-freeze.rs | 17 | ||||
| -rw-r--r-- | src/test/compile-fail/no_share-rc.rs | 20 | ||||
| -rw-r--r-- | src/test/compile-fail/not-sync.rs | 34 |
4 files changed, 34 insertions, 54 deletions
diff --git a/src/test/compile-fail/comm-not-freeze-receiver.rs b/src/test/compile-fail/comm-not-freeze-receiver.rs deleted file mode 100644 index 305acfec401..00000000000 --- a/src/test/compile-fail/comm-not-freeze-receiver.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2013 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. - -use std::sync::mpsc::Receiver; - -fn test<T: Sync>() {} - -fn main() { - test::<Receiver<isize>>(); //~ ERROR: `core::marker::Sync` is not implemented -} diff --git a/src/test/compile-fail/comm-not-freeze.rs b/src/test/compile-fail/comm-not-freeze.rs deleted file mode 100644 index de2c96920c3..00000000000 --- a/src/test/compile-fail/comm-not-freeze.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2013 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. - -use std::sync::mpsc::Sender; - -fn test<T: Sync>() {} - -fn main() { - test::<Sender<isize>>(); //~ ERROR: `core::marker::Sync` is not implemented -} diff --git a/src/test/compile-fail/no_share-rc.rs b/src/test/compile-fail/no_share-rc.rs deleted file mode 100644 index 4bc3442871f..00000000000 --- a/src/test/compile-fail/no_share-rc.rs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2013 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. - -use std::rc::Rc; -use std::cell::RefCell; - -fn bar<T: Sync>(_: T) {} - -fn main() { - let x = Rc::new(RefCell::new(5)); - bar(x); - //~^ ERROR the trait `core::marker::Sync` is not implemented -} diff --git a/src/test/compile-fail/not-sync.rs b/src/test/compile-fail/not-sync.rs new file mode 100644 index 00000000000..a60138c6e1f --- /dev/null +++ b/src/test/compile-fail/not-sync.rs @@ -0,0 +1,34 @@ +// Copyright 2016 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. + +use std::cell::{Cell, RefCell}; +use std::rc::{Rc, Weak}; +use std::sync::mpsc::{Receiver, Sender, SyncSender}; + +fn test<T: Sync>() {} + +fn main() { + test::<Cell<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `core::cell::Cell<i32>` + test::<RefCell<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `core::cell::RefCell<i32>` + + test::<Rc<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `alloc::rc::Rc<i32>` + test::<Weak<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `alloc::rc::Weak<i32>` + + test::<Receiver<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `std::sync::mpsc::Receiver<i32>` + test::<Sender<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `std::sync::mpsc::Sender<i32>` + test::<SyncSender<i32>>(); + //~^ ERROR marker::Sync` is not implemented for the type `std::sync::mpsc::SyncSender<i32>` +} |
