diff --git a/src/libcore/marker.rs b/src/libcore/marker.rs index 1b866501b8ea1a3d0fb62d347f1af1af990ddabf..e980858c443bc8eeb7f20ec6c3fa65f5f245a1aa 100644 --- a/src/libcore/marker.rs +++ b/src/libcore/marker.rs @@ -39,6 +39,8 @@ pub unsafe trait Send : MarkerTrait { // empty. } +impl Send for .. { } + impl !Send for *const T { } impl !Send for *mut T { } impl !Send for Managed { } @@ -203,6 +205,8 @@ pub unsafe trait Sync : MarkerTrait { // Empty } +impl Sync for .. { } + impl !Sync for *const T { } impl !Sync for *mut T { } impl !Sync for Managed { } diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 99c35c6e5425824a20b3e8ba2144f5d885dd4aba..c4fcf882cfb03e68fd9929496a6baf8ec60a78e6 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -5980,10 +5980,7 @@ pub fn item_variances(tcx: &ctxt, item_id: ast::DefId) -> Rc { pub fn trait_has_default_impl(tcx: &ctxt, trait_def_id: DefId) -> bool { populate_implementations_for_trait_if_necessary(tcx, trait_def_id); - match tcx.lang_items.to_builtin_kind(trait_def_id) { - Some(BoundSend) | Some(BoundSync) => true, - _ => tcx.traits_with_default_impls.borrow().contains_key(&trait_def_id), - } + tcx.traits_with_default_impls.borrow().contains_key(&trait_def_id) } /// Records a trait-to-implementation mapping.