diff options
| author | bors <bors@rust-lang.org> | 2014-09-16 15:25:59 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-09-16 15:25:59 +0000 |
| commit | 946654a721d6fd5eeb91e93293cdc2cba83c78b9 (patch) | |
| tree | 284ceef62c9e2c207acb9c497cadfa53f59994b3 /src/libsync/comm | |
| parent | cdd46f8592a0ca7eb69110bff0569094951ccc67 (diff) | |
| parent | eafeb335a0731b4bfcd8be6203d0d29a3668cd76 (diff) | |
| download | rust-946654a721d6fd5eeb91e93293cdc2cba83c78b9.tar.gz rust-946654a721d6fd5eeb91e93293cdc2cba83c78b9.zip | |
auto merge of #17197 : nikomatsakis/rust/issue-5527-trait-reform-revisited, r=pcwalton
This patch does not make many functional changes, but does a lot of restructuring towards the goals of #5527. This is the biggest patch, basically, that should enable most of the other patches in a relatively straightforward way. Major changes: - Do not track impls through trans, instead recompute as needed. - Isolate trait matching code into its own module, carefully structure to distinguish various phases (selection vs confirmation vs fulfillment) - Consider where clauses in their more general form - Integrate checking of builtin bounds into the trait matching process, rather than doing it separately in kind.rs (important for opt-in builtin bounds) What is not included: - Where clauses are still not generalized. This should be a straightforward follow-up patch. - Caching. I did not include much caching. I have plans for various kinds of caching we can do. Should be straightforward. Preliminary perf measurements suggested that this branch keeps compilation times roughly what they are. - Method resolution. The initial algorithm I proposed for #5527 does not work as well as I hoped. I have a revised plan which is much more similar to what we do today. - Deref vs deref-mut. The initial fix I had worked great for autoderef, but not for explicit deref. - Permitting blanket impls to overlap with specific impls. Initial plan to consider all nested obligations before considering an impl to match caused many compilation errors. We have a revised plan but it is not implemented here, should be a relatively straightforward extension.
Diffstat (limited to 'src/libsync/comm')
| -rw-r--r-- | src/libsync/comm/mod.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/libsync/comm/mod.rs b/src/libsync/comm/mod.rs index c8b86c47c90..9177fa4a6b4 100644 --- a/src/libsync/comm/mod.rs +++ b/src/libsync/comm/mod.rs @@ -379,7 +379,7 @@ pub struct Receiver<T> { inner: UnsafeCell<Flavor<T>>, receives: Cell<uint>, // can't share in an arc - marker: marker::NoSync, + _marker: marker::NoSync, } /// An iterator over messages on a receiver, this iterator will block @@ -397,7 +397,7 @@ pub struct Sender<T> { inner: UnsafeCell<Flavor<T>>, sends: Cell<uint>, // can't share in an arc - marker: marker::NoSync, + _marker: marker::NoSync, } /// The sending-half of Rust's synchronous channel type. This half can only be @@ -406,7 +406,7 @@ pub struct Sender<T> { pub struct SyncSender<T> { inner: Arc<UnsafeCell<sync::Packet<T>>>, // can't share in an arc - marker: marker::NoSync, + _marker: marker::NoSync, } /// This enumeration is the list of the possible reasons that try_recv could not @@ -543,7 +543,7 @@ impl<T: Send> Sender<T> { Sender { inner: UnsafeCell::new(inner), sends: Cell::new(0), - marker: marker::NoSync, + _marker: marker::NoSync, } } @@ -719,7 +719,7 @@ impl<T: Send> Drop for Sender<T> { impl<T: Send> SyncSender<T> { fn new(inner: Arc<UnsafeCell<sync::Packet<T>>>) -> SyncSender<T> { - SyncSender { inner: inner, marker: marker::NoSync } + SyncSender { inner: inner, _marker: marker::NoSync } } /// Sends a value on this synchronous channel. @@ -807,7 +807,7 @@ impl<T: Send> Drop for SyncSender<T> { impl<T: Send> Receiver<T> { fn new(inner: Flavor<T>) -> Receiver<T> { - Receiver { inner: UnsafeCell::new(inner), receives: Cell::new(0), marker: marker::NoSync } + Receiver { inner: UnsafeCell::new(inner), receives: Cell::new(0), _marker: marker::NoSync } } /// Blocks waiting for a value on this receiver |
