Skip to content

Commit 2ddcce9

Browse files
authored
Unrolled build for rust-lang#130225
Rollup merge of rust-lang#130225 - adetaylor:rename-old-receiver, r=wesleywiser Rename Receiver -> LegacyReceiver As part of the "arbitrary self types v2" project, we are going to replace the current `Receiver` trait with a new mechanism based on a new, different `Receiver` trait. This PR renames the old trait to get it out the way. Naming is hard. Options considered included: * HardCodedReceiver (because it should only be used for things in the standard library, and hence is sort-of hard coded) * LegacyReceiver * TargetLessReceiver * OldReceiver These are all bad names, but fortunately this will be temporary. Assuming the new mechanism proceeds to stabilization as intended, the legacy trait will be removed altogether. Although we expect this trait to be used only in the standard library, we suspect it may be in use elsehwere, so we're landing this change separately to identify any surprising breakages. It's known that this trait is used within the Rust for Linux project; a patch is in progress to remove their dependency. This is a part of the arbitrary self types v2 project, rust-lang/rfcs#3519 rust-lang#44874 r? `@wesleywiser`
2 parents b8bb296 + 8f85b90 commit 2ddcce9

File tree

19 files changed

+63
-57
lines changed

19 files changed

+63
-57
lines changed

Diff for: compiler/rustc_codegen_cranelift/example/mini_core.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ impl<T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<*const U> for *const T {}
4747
impl<T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<*mut U> for *mut T {}
4848
impl<T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<Box<U>> for Box<T> {}
4949

50-
#[lang = "receiver"]
51-
pub trait Receiver {}
50+
#[lang = "legacy_receiver"]
51+
pub trait LegacyReceiver {}
5252

53-
impl<T: ?Sized> Receiver for &T {}
54-
impl<T: ?Sized> Receiver for &mut T {}
55-
impl<T: ?Sized> Receiver for Box<T> {}
53+
impl<T: ?Sized> LegacyReceiver for &T {}
54+
impl<T: ?Sized> LegacyReceiver for &mut T {}
55+
impl<T: ?Sized> LegacyReceiver for Box<T> {}
5656

5757
#[lang = "copy"]
5858
pub unsafe trait Copy {}

Diff for: compiler/rustc_codegen_gcc/example/mini_core.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ impl<T: ?Sized+Unsize<U>, U: ?Sized> DispatchFromDyn<*const U> for *const T {}
4444
impl<T: ?Sized+Unsize<U>, U: ?Sized> DispatchFromDyn<*mut U> for *mut T {}
4545
impl<T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<Box<U, ()>> for Box<T, ()> {}
4646

47-
#[lang = "receiver"]
48-
pub trait Receiver {}
47+
#[lang = "legacy_receiver"]
48+
pub trait LegacyReceiver {}
4949

50-
impl<T: ?Sized> Receiver for &T {}
51-
impl<T: ?Sized> Receiver for &mut T {}
52-
impl<T: ?Sized, A: Allocator> Receiver for Box<T, A> {}
50+
impl<T: ?Sized> LegacyReceiver for &T {}
51+
impl<T: ?Sized> LegacyReceiver for &mut T {}
52+
impl<T: ?Sized, A: Allocator> LegacyReceiver for Box<T, A> {}
5353

5454
#[lang = "copy"]
5555
pub unsafe trait Copy {}

Diff for: compiler/rustc_hir/src/lang_items.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ language_item_table! {
241241
DerefMut, sym::deref_mut, deref_mut_trait, Target::Trait, GenericRequirement::Exact(0);
242242
DerefPure, sym::deref_pure, deref_pure_trait, Target::Trait, GenericRequirement::Exact(0);
243243
DerefTarget, sym::deref_target, deref_target, Target::AssocTy, GenericRequirement::None;
244-
Receiver, sym::receiver, receiver_trait, Target::Trait, GenericRequirement::None;
244+
LegacyReceiver, sym::legacy_receiver, legacy_receiver_trait, Target::Trait, GenericRequirement::None;
245245

246246
Fn, kw::Fn, fn_trait, Target::Trait, GenericRequirement::Exact(1);
247247
FnMut, sym::fn_mut, fn_mut_trait, Target::Trait, GenericRequirement::Exact(1);

Diff for: compiler/rustc_hir_analysis/src/check/wfcheck.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1801,7 +1801,7 @@ fn receiver_is_valid<'tcx>(
18011801
autoderef = autoderef.include_raw_pointers();
18021802
}
18031803

1804-
let receiver_trait_def_id = tcx.require_lang_item(LangItem::Receiver, Some(span));
1804+
let receiver_trait_def_id = tcx.require_lang_item(LangItem::LegacyReceiver, Some(span));
18051805

18061806
// Keep dereferencing `receiver_ty` until we get to `self_ty`.
18071807
while let Some((potential_self_ty, _)) = autoderef.next() {

Diff for: compiler/rustc_span/src/symbol.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1133,6 +1133,7 @@ symbols! {
11331133
lazy_normalization_consts,
11341134
lazy_type_alias,
11351135
le,
1136+
legacy_receiver,
11361137
len,
11371138
let_chains,
11381139
let_else,
@@ -1573,7 +1574,6 @@ symbols! {
15731574
readonly,
15741575
realloc,
15751576
reason,
1576-
receiver,
15771577
recursion_limit,
15781578
reexport_test_harness_main,
15791579
ref_pat_eat_one_layer_2024,

Diff for: library/alloc/src/boxed.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ use core::marker::{Tuple, Unsize};
196196
use core::mem::{self, SizedTypeProperties};
197197
use core::ops::{
198198
AsyncFn, AsyncFnMut, AsyncFnOnce, CoerceUnsized, Coroutine, CoroutineState, Deref, DerefMut,
199-
DerefPure, DispatchFromDyn, Receiver,
199+
DerefPure, DispatchFromDyn, LegacyReceiver,
200200
};
201201
use core::pin::{Pin, PinCoerceUnsized};
202202
use core::ptr::{self, NonNull, Unique};
@@ -2378,8 +2378,8 @@ impl<T: ?Sized, A: Allocator> DerefMut for Box<T, A> {
23782378
#[unstable(feature = "deref_pure_trait", issue = "87121")]
23792379
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Box<T, A> {}
23802380

2381-
#[unstable(feature = "receiver_trait", issue = "none")]
2382-
impl<T: ?Sized, A: Allocator> Receiver for Box<T, A> {}
2381+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2382+
impl<T: ?Sized, A: Allocator> LegacyReceiver for Box<T, A> {}
23832383

23842384
#[stable(feature = "rust1", since = "1.0.0")]
23852385
impl<I: Iterator + ?Sized, A: Allocator> Iterator for Box<I, A> {

Diff for: library/alloc/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
#![feature(iter_advance_by)]
130130
#![feature(iter_next_chunk)]
131131
#![feature(layout_for_ptr)]
132+
#![feature(legacy_receiver_trait)]
132133
#![feature(local_waker)]
133134
#![feature(maybe_uninit_slice)]
134135
#![feature(maybe_uninit_uninit_array_transpose)]
@@ -138,7 +139,6 @@
138139
#![feature(ptr_internals)]
139140
#![feature(ptr_metadata)]
140141
#![feature(ptr_sub_ptr)]
141-
#![feature(receiver_trait)]
142142
#![feature(set_ptr_value)]
143143
#![feature(sized_type_properties)]
144144
#![feature(slice_from_ptr_range)]

Diff for: library/alloc/src/rc.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ use core::intrinsics::abort;
252252
use core::iter;
253253
use core::marker::{PhantomData, Unsize};
254254
use core::mem::{self, ManuallyDrop, align_of_val_raw};
255-
use core::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, Receiver};
255+
use core::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, LegacyReceiver};
256256
use core::panic::{RefUnwindSafe, UnwindSafe};
257257
#[cfg(not(no_global_oom_handling))]
258258
use core::pin::Pin;
@@ -2222,8 +2222,8 @@ unsafe impl<T: ?Sized, A: Allocator> PinCoerceUnsized for Weak<T, A> {}
22222222
#[unstable(feature = "deref_pure_trait", issue = "87121")]
22232223
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Rc<T, A> {}
22242224

2225-
#[unstable(feature = "receiver_trait", issue = "none")]
2226-
impl<T: ?Sized> Receiver for Rc<T> {}
2225+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2226+
impl<T: ?Sized> LegacyReceiver for Rc<T> {}
22272227

22282228
#[stable(feature = "rust1", since = "1.0.0")]
22292229
unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Rc<T, A> {

Diff for: library/alloc/src/sync.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use core::intrinsics::abort;
1818
use core::iter;
1919
use core::marker::{PhantomData, Unsize};
2020
use core::mem::{self, ManuallyDrop, align_of_val_raw};
21-
use core::ops::{CoerceUnsized, Deref, DerefPure, DispatchFromDyn, Receiver};
21+
use core::ops::{CoerceUnsized, Deref, DerefPure, DispatchFromDyn, LegacyReceiver};
2222
use core::panic::{RefUnwindSafe, UnwindSafe};
2323
use core::pin::{Pin, PinCoerceUnsized};
2424
use core::ptr::{self, NonNull};
@@ -2189,8 +2189,8 @@ unsafe impl<T: ?Sized, A: Allocator> PinCoerceUnsized for Weak<T, A> {}
21892189
#[unstable(feature = "deref_pure_trait", issue = "87121")]
21902190
unsafe impl<T: ?Sized, A: Allocator> DerefPure for Arc<T, A> {}
21912191

2192-
#[unstable(feature = "receiver_trait", issue = "none")]
2193-
impl<T: ?Sized> Receiver for Arc<T> {}
2192+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
2193+
impl<T: ?Sized> LegacyReceiver for Arc<T> {}
21942194

21952195
#[cfg(not(no_global_oom_handling))]
21962196
impl<T: ?Sized + CloneToUninit, A: Allocator + Clone> Arc<T, A> {

Diff for: library/core/src/ops/deref.rs

+13-7
Original file line numberDiff line numberDiff line change
@@ -297,15 +297,21 @@ unsafe impl<T: ?Sized> DerefPure for &mut T {}
297297
/// Indicates that a struct can be used as a method receiver, without the
298298
/// `arbitrary_self_types` feature. This is implemented by stdlib pointer types like `Box<T>`,
299299
/// `Rc<T>`, `&T`, and `Pin<P>`.
300-
#[lang = "receiver"]
301-
#[unstable(feature = "receiver_trait", issue = "none")]
300+
///
301+
/// This trait will shortly be removed and replaced with a more generic
302+
/// facility based around the current "arbitrary self types" unstable feature.
303+
/// That new facility will use a replacement trait called `Receiver` which is
304+
/// why this is now named `LegacyReceiver`.
305+
#[cfg_attr(bootstrap, lang = "receiver")]
306+
#[cfg_attr(not(bootstrap), lang = "legacy_receiver")]
307+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
302308
#[doc(hidden)]
303-
pub trait Receiver {
309+
pub trait LegacyReceiver {
304310
// Empty.
305311
}
306312

307-
#[unstable(feature = "receiver_trait", issue = "none")]
308-
impl<T: ?Sized> Receiver for &T {}
313+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
314+
impl<T: ?Sized> LegacyReceiver for &T {}
309315

310-
#[unstable(feature = "receiver_trait", issue = "none")]
311-
impl<T: ?Sized> Receiver for &mut T {}
316+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
317+
impl<T: ?Sized> LegacyReceiver for &mut T {}

Diff for: library/core/src/ops/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ pub use self::control_flow::ControlFlow;
168168
pub use self::coroutine::{Coroutine, CoroutineState};
169169
#[unstable(feature = "deref_pure_trait", issue = "87121")]
170170
pub use self::deref::DerefPure;
171-
#[unstable(feature = "receiver_trait", issue = "none")]
172-
pub use self::deref::Receiver;
171+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
172+
pub use self::deref::LegacyReceiver;
173173
#[stable(feature = "rust1", since = "1.0.0")]
174174
pub use self::deref::{Deref, DerefMut};
175175
#[stable(feature = "rust1", since = "1.0.0")]

Diff for: library/core/src/pin.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,7 @@
921921
#![stable(feature = "pin", since = "1.33.0")]
922922

923923
use crate::hash::{Hash, Hasher};
924-
use crate::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, Receiver};
924+
use crate::ops::{CoerceUnsized, Deref, DerefMut, DerefPure, DispatchFromDyn, LegacyReceiver};
925925
#[allow(unused_imports)]
926926
use crate::{
927927
cell::{RefCell, UnsafeCell},
@@ -1692,8 +1692,8 @@ impl<Ptr: DerefMut<Target: Unpin>> DerefMut for Pin<Ptr> {
16921692
#[unstable(feature = "deref_pure_trait", issue = "87121")]
16931693
unsafe impl<Ptr: DerefPure> DerefPure for Pin<Ptr> {}
16941694

1695-
#[unstable(feature = "receiver_trait", issue = "none")]
1696-
impl<Ptr: Receiver> Receiver for Pin<Ptr> {}
1695+
#[unstable(feature = "legacy_receiver_trait", issue = "none")]
1696+
impl<Ptr: LegacyReceiver> LegacyReceiver for Pin<Ptr> {}
16971697

16981698
#[stable(feature = "pin", since = "1.33.0")]
16991699
impl<Ptr: fmt::Debug> fmt::Debug for Pin<Ptr> {

Diff for: tests/codegen/avr/avr-func-addrspace.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ pub trait Sized {}
1818
#[lang = "copy"]
1919
pub trait Copy {}
2020
impl<T: ?Sized> Copy for *const T {}
21-
#[lang = "receiver"]
22-
pub trait Receiver {}
21+
#[lang = "legacy_receiver"]
22+
pub trait LegacyReceiver {}
2323
#[lang = "tuple_trait"]
2424
pub trait Tuple {}
2525

Diff for: tests/codegen/sanitizer/kcfi/emit-type-metadata-trait-objects.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ trait Sized {}
1616
#[lang = "copy"]
1717
trait Copy {}
1818
impl<T: ?Sized> Copy for &T {}
19-
#[lang = "receiver"]
20-
trait Receiver {}
19+
#[lang = "legacy_receiver"]
20+
trait LegacyReceiver {}
2121
#[lang = "dispatch_from_dyn"]
2222
trait DispatchFromDyn<T> {}
2323
impl<'a, T: ?Sized + Unsize<U>, U: ?Sized> DispatchFromDyn<&'a U> for &'a T {}

Diff for: tests/rustdoc-json/impls/auto.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
#[lang = "sized"]
55
trait Sized {}
66

7-
#[lang = "receiver"]
8-
pub trait Receiver {}
7+
#[lang = "legacy_receiver"]
8+
pub trait LegacyReceiver {}
99

1010
pub auto trait Bar {}
1111

Diff for: tests/ui/abi/compatibility.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,10 @@ mod prelude {
7979
#[lang = "sized"]
8080
pub trait Sized {}
8181

82-
#[lang = "receiver"]
83-
pub trait Receiver {}
84-
impl<T: ?Sized> Receiver for &T {}
85-
impl<T: ?Sized> Receiver for &mut T {}
82+
#[lang = "legacy_receiver"]
83+
pub trait LegacyReceiver {}
84+
impl<T: ?Sized> LegacyReceiver for &T {}
85+
impl<T: ?Sized> LegacyReceiver for &mut T {}
8686

8787
#[lang = "copy"]
8888
pub trait Copy: Sized {}

Diff for: tests/ui/privacy/privacy1.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ pub trait Deref {
1212
type Target;
1313
}
1414

15-
#[lang="receiver"]
16-
pub trait Receiver: Deref {}
15+
#[lang="legacy_receiver"]
16+
pub trait LegacyReceiver: Deref {}
1717

1818
impl<'a, T> Deref for &'a T {
1919
type Target = T;
2020
}
2121

22-
impl<'a, T> Receiver for &'a T {}
22+
impl<'a, T> LegacyReceiver for &'a T {}
2323

2424
mod bar {
2525
// shouldn't bring in too much

Diff for: tests/ui/traits/const-traits/const-fns-are-early-bound.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ trait Copy {}
8282
#[lang = "tuple_trait"]
8383
trait Tuple {}
8484

85-
#[lang = "receiver"]
86-
trait Receiver {}
85+
#[lang = "legacy_receiver"]
86+
trait LegacyReceiver {}
8787

88-
impl<T: ?Sized> Receiver for &T {}
88+
impl<T: ?Sized> LegacyReceiver for &T {}
8989

90-
impl<T: ?Sized> Receiver for &mut T {}
90+
impl<T: ?Sized> LegacyReceiver for &mut T {}
9191

9292
#[stable(feature = "minicore", since = "1.0.0")]
9393
pub mod effects {

Diff for: tests/ui/traits/const-traits/effects/minicore.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,12 @@ macro_rules! impl_fn_mut_tuple {
137137
//impl_fn_mut_tuple!(A B C D);
138138
//impl_fn_mut_tuple!(A B C D E);
139139

140-
#[lang = "receiver"]
141-
trait Receiver {}
140+
#[lang = "legacy_receiver"]
141+
trait LegacyReceiver {}
142142

143-
impl<T: ?Sized> Receiver for &T {}
143+
impl<T: ?Sized> LegacyReceiver for &T {}
144144

145-
impl<T: ?Sized> Receiver for &mut T {}
145+
impl<T: ?Sized> LegacyReceiver for &mut T {}
146146

147147
#[lang = "destruct"]
148148
#[const_trait]
@@ -454,7 +454,7 @@ impl<T> /* const */ Deref for Option<T> {
454454
}
455455
}
456456

457-
impl<P: Receiver> Receiver for Pin<P> {}
457+
impl<P: LegacyReceiver> LegacyReceiver for Pin<P> {}
458458

459459
impl<T: Clone> Clone for RefCell<T> {
460460
fn clone(&self) -> RefCell<T> {

0 commit comments

Comments
 (0)