Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename PointerSized to PointerLike #107769

Merged
merged 1 commit into from
Feb 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion compiler/rustc_const_eval/src/interpret/cast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ impl<'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> InterpCx<'mir, 'tcx, M> {
let vtable = self.get_vtable_ptr(src.layout.ty, data.principal())?;
let vtable = Scalar::from_maybe_pointer(vtable, self);
let data = self.read_immediate(src)?.to_scalar();
let _assert_pointer_sized = data.to_pointer(self)?;
let _assert_pointer_like = data.to_pointer(self)?;
let val = Immediate::ScalarPair(data, vtable);
self.write_immediate(val, dest)?;
} else {
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir/src/lang_items.rs
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ language_item_table! {
TryTraitBranch, sym::branch, branch_fn, Target::Method(MethodKind::Trait { body: false }), GenericRequirement::None;
TryTraitFromYeet, sym::from_yeet, from_yeet_fn, Target::Fn, GenericRequirement::None;

PointerSized, sym::pointer_sized, pointer_sized, Target::Trait, GenericRequirement::Exact(0);
PointerLike, sym::pointer_like, pointer_like, Target::Trait, GenericRequirement::Exact(0);

Poll, sym::Poll, poll, Target::Enum, GenericRequirement::None;
PollReady, sym::Ready, poll_ready_variant, Target::Variant, GenericRequirement::None;
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_hir_typeck/src/coercion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -765,7 +765,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
self.cause.clone(),
self.param_env,
ty::Binder::dummy(
self.tcx.at(self.cause.span).mk_trait_ref(hir::LangItem::PointerSized, [a]),
self.tcx.at(self.cause.span).mk_trait_ref(hir::LangItem::PointerLike, [a]),
),
));

Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_span/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1084,7 +1084,7 @@ symbols! {
plugins,
pointee_trait,
pointer,
pointer_sized,
pointer_like,
poll,
position,
post_dash_lto: "post-lto",
Expand Down
8 changes: 4 additions & 4 deletions compiler/rustc_trait_selection/src/solve/assembly.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ pub(super) trait GoalKind<'tcx>: TypeFoldable<'tcx> + Copy + Eq {
goal: Goal<'tcx, Self>,
) -> QueryResult<'tcx>;

// A type is `PointerSized` if we can compute its layout, and that layout
// A type is `PointerLike` if we can compute its layout, and that layout
// matches the layout of `usize`.
fn consider_builtin_pointer_sized_candidate(
fn consider_builtin_pointer_like_candidate(
ecx: &mut EvalCtxt<'_, 'tcx>,
goal: Goal<'tcx, Self>,
) -> QueryResult<'tcx>;
Expand Down Expand Up @@ -312,8 +312,8 @@ impl<'tcx> EvalCtxt<'_, 'tcx> {
|| lang_items.clone_trait() == Some(trait_def_id)
{
G::consider_builtin_copy_clone_candidate(self, goal)
} else if lang_items.pointer_sized() == Some(trait_def_id) {
G::consider_builtin_pointer_sized_candidate(self, goal)
} else if lang_items.pointer_like() == Some(trait_def_id) {
G::consider_builtin_pointer_like_candidate(self, goal)
} else if let Some(kind) = self.tcx().fn_trait_kind_from_def_id(trait_def_id) {
G::consider_builtin_fn_trait_candidates(self, goal, kind)
} else if lang_items.tuple_trait() == Some(trait_def_id) {
Expand Down
4 changes: 2 additions & 2 deletions compiler/rustc_trait_selection/src/solve/project_goals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -370,11 +370,11 @@ impl<'tcx> assembly::GoalKind<'tcx> for ProjectionPredicate<'tcx> {
bug!("`Copy`/`Clone` does not have an associated type: {:?}", goal);
}

fn consider_builtin_pointer_sized_candidate(
fn consider_builtin_pointer_like_candidate(
_ecx: &mut EvalCtxt<'_, 'tcx>,
goal: Goal<'tcx, Self>,
) -> QueryResult<'tcx> {
bug!("`PointerSized` does not have an associated type: {:?}", goal);
bug!("`PointerLike` does not have an associated type: {:?}", goal);
}

fn consider_builtin_fn_trait_candidates(
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_trait_selection/src/solve/trait_goals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ impl<'tcx> assembly::GoalKind<'tcx> for TraitPredicate<'tcx> {
)
}

fn consider_builtin_pointer_sized_candidate(
fn consider_builtin_pointer_like_candidate(
ecx: &mut EvalCtxt<'_, 'tcx>,
goal: Goal<'tcx, Self>,
) -> QueryResult<'tcx> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
self.assemble_candidates_for_transmutability(obligation, &mut candidates);
} else if lang_items.tuple_trait() == Some(def_id) {
self.assemble_candidate_for_tuple(obligation, &mut candidates);
} else if lang_items.pointer_sized() == Some(def_id) {
} else if lang_items.pointer_like() == Some(def_id) {
self.assemble_candidate_for_ptr_sized(obligation, &mut candidates);
} else {
if lang_items.clone_trait() == Some(def_id) {
Expand Down
11 changes: 6 additions & 5 deletions library/core/src/marker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -872,13 +872,14 @@ pub trait Destruct {}
pub trait Tuple {}

/// A marker for things
#[unstable(feature = "pointer_sized_trait", issue = "none")]
#[lang = "pointer_sized"]
#[unstable(feature = "pointer_like_trait", issue = "none")]
#[cfg_attr(bootstrap, lang = "pointer_sized")]
#[cfg_attr(not(bootstrap), lang = "pointer_like")]
#[rustc_on_unimplemented(
message = "`{Self}` needs to be a pointer-sized type",
label = "`{Self}` needs to be a pointer-sized type"
message = "`{Self}` needs to have the same alignment and size as a pointer",
label = "`{Self}` needs to be a pointer-like type"
)]
pub trait PointerSized {}
pub trait PointerLike {}

/// Implementations of `Copy` for primitive types.
///
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/dyn-star/align.over_aligned.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ LL | #![feature(dyn_star)]
= note: see issue #102425 <https://github.com/rust-lang/rust/issues/102425> for more information
= note: `#[warn(incomplete_features)]` on by default

error[E0277]: `AlignedUsize` needs to be a pointer-sized type
error[E0277]: `AlignedUsize` needs to have the same alignment and size as a pointer
--> $DIR/align.rs:15:13
|
LL | let x = AlignedUsize(12) as dyn* Debug;
| ^^^^^^^^^^^^^^^^ `AlignedUsize` needs to be a pointer-sized type
| ^^^^^^^^^^^^^^^^ `AlignedUsize` needs to be a pointer-like type
|
= help: the trait `PointerSized` is not implemented for `AlignedUsize`
= help: the trait `PointerLike` is not implemented for `AlignedUsize`

error: aborting due to previous error; 1 warning emitted

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/dyn-star/align.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ struct AlignedUsize(usize);

fn main() {
let x = AlignedUsize(12) as dyn* Debug;
//[over_aligned]~^ ERROR `AlignedUsize` needs to be a pointer-sized type
//[over_aligned]~^ ERROR `AlignedUsize` needs to have the same alignment and size as a pointer
}
2 changes: 1 addition & 1 deletion tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fn dyn_debug(_: (dyn* Debug + '_)) {

fn polymorphic<T: Debug + ?Sized>(t: &T) {
dyn_debug(t);
//~^ ERROR `&T` needs to be a pointer-sized type
//~^ ERROR `&T` needs to have the same alignment and size as a pointer
}

fn main() {}
10 changes: 5 additions & 5 deletions tests/ui/dyn-star/check-size-at-cast-polymorphic-bad.stderr
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
error[E0277]: `&T` needs to be a pointer-sized type
error[E0277]: `&T` needs to have the same alignment and size as a pointer
--> $DIR/check-size-at-cast-polymorphic-bad.rs:11:15
|
LL | dyn_debug(t);
| ^ `&T` needs to be a pointer-sized type
| ^ `&T` needs to be a pointer-like type
|
= help: the trait `PointerSized` is not implemented for `&T`
= help: the trait `PointerLike` is not implemented for `&T`
help: consider introducing a `where` clause, but there might be an alternative better way to express this requirement
|
LL | fn polymorphic<T: Debug + ?Sized>(t: &T) where &T: PointerSized {
| ++++++++++++++++++++++
LL | fn polymorphic<T: Debug + ?Sized>(t: &T) where &T: PointerLike {
| +++++++++++++++++++++

error: aborting due to previous error

Expand Down
2 changes: 1 addition & 1 deletion tests/ui/dyn-star/check-size-at-cast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ use std::fmt::Debug;

fn main() {
let i = [1, 2, 3, 4] as dyn* Debug;
//~^ ERROR `[i32; 4]` needs to be a pointer-sized type
//~^ ERROR `[i32; 4]` needs to have the same alignment and size as a pointer
dbg!(i);
}
6 changes: 3 additions & 3 deletions tests/ui/dyn-star/check-size-at-cast.stderr
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
error[E0277]: `[i32; 4]` needs to be a pointer-sized type
error[E0277]: `[i32; 4]` needs to have the same alignment and size as a pointer
--> $DIR/check-size-at-cast.rs:7:13
|
LL | let i = [1, 2, 3, 4] as dyn* Debug;
| ^^^^^^^^^^^^ `[i32; 4]` needs to be a pointer-sized type
| ^^^^^^^^^^^^ `[i32; 4]` needs to be a pointer-like type
|
= help: the trait `PointerSized` is not implemented for `[i32; 4]`
= help: the trait `PointerLike` is not implemented for `[i32; 4]`

error: aborting due to previous error

Expand Down
6 changes: 3 additions & 3 deletions tests/ui/dyn-star/upcast.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ LL | #![feature(dyn_star, trait_upcasting)]
= note: see issue #102425 <https://github.com/rust-lang/rust/issues/102425> for more information
= note: `#[warn(incomplete_features)]` on by default

error[E0277]: `dyn* Foo` needs to be a pointer-sized type
error[E0277]: `dyn* Foo` needs to have the same alignment and size as a pointer
--> $DIR/upcast.rs:30:23
|
LL | let w: dyn* Bar = w;
| ^ `dyn* Foo` needs to be a pointer-sized type
| ^ `dyn* Foo` needs to be a pointer-like type
|
= help: the trait `PointerSized` is not implemented for `dyn* Foo`
= help: the trait `PointerLike` is not implemented for `dyn* Foo`

error: aborting due to previous error; 1 warning emitted

Expand Down
14 changes: 14 additions & 0 deletions tests/ui/traits/new-solver/pointer-like.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// compile-flags: -Ztrait-solver=next

#![feature(pointer_like_trait)]
compiler-errors marked this conversation as resolved.
Show resolved Hide resolved

use std::marker::PointerLike;

fn require_(_: impl PointerLike) {}

fn main() {
require_(1usize);
require_(1u16);
//~^ ERROR `u16` needs to have the same alignment and size as a pointer
require_(&1i16);
}
24 changes: 24 additions & 0 deletions tests/ui/traits/new-solver/pointer-like.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
error[E0277]: `u16` needs to have the same alignment and size as a pointer
--> $DIR/pointer-like.rs:11:14
|
LL | require_(1u16);
| -------- ^^^^ the trait `PointerLike` is not implemented for `u16`
| |
| required by a bound introduced by this call
|
= note: the trait bound `u16: PointerLike` is not satisfied
note: required by a bound in `require_`
--> $DIR/pointer-like.rs:7:21
|
LL | fn require_(_: impl PointerLike) {}
| ^^^^^^^^^^^ required by this bound in `require_`
help: consider borrowing here
|
LL | require_(&1u16);
| +
LL | require_(&mut 1u16);
| ++++

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
12 changes: 0 additions & 12 deletions tests/ui/traits/new-solver/pointer-sized.rs

This file was deleted.

24 changes: 0 additions & 24 deletions tests/ui/traits/new-solver/pointer-sized.stderr

This file was deleted.