Skip to content
Merged
2 changes: 1 addition & 1 deletion compiler/rustc_expand/src/mbe/macro_rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,7 @@ pub fn compile_declarative_macro(
kinds |= MacroKinds::DERIVE;
let derive_keyword_span = p.prev_token.span;
if !features.macro_derive() {
feature_err(sess, sym::macro_attr, span, "`macro_rules!` derives are unstable")
feature_err(sess, sym::macro_derive, span, "`macro_rules!` derives are unstable")
.emit();
}
if let Some(guar) = check_no_eof(sess, &p, "expected `()` after `derive`") {
Expand Down
42 changes: 18 additions & 24 deletions compiler/rustc_hir_typeck/src/method/suggest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2194,7 +2194,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
fn suggest_associated_call_syntax(
&self,
err: &mut Diag<'_>,
static_candidates: &Vec<CandidateSource>,
static_candidates: &[CandidateSource],
rcvr_ty: Ty<'tcx>,
source: SelfSource<'tcx>,
item_name: Ident,
Expand Down Expand Up @@ -2422,7 +2422,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {

let span_included = match parent_expr.kind {
hir::ExprKind::Struct(_, eps, _) => {
eps.len() > 0 && eps.last().is_some_and(|ep| ep.span.contains(span))
eps.last().is_some_and(|ep| ep.span.contains(span))
}
// `..=` desugars into `::std::ops::RangeInclusive::new(...)`.
hir::ExprKind::Call(func, ..) => func.span.contains(span),
Expand Down Expand Up @@ -2484,7 +2484,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
simplify_type(tcx, ty, TreatParams::InstantiateWithInfer)
.and_then(|simp| {
tcx.incoherent_impls(simp)
.into_iter()
.iter()
.find_map(|&id| self.associated_value(id, item_name))
})
.is_some()
Expand Down Expand Up @@ -2617,7 +2617,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {

if let Node::Expr(call_expr) = self.tcx.parent_hir_node(seg1.hir_id)
&& let ControlFlow::Break(Some(expr)) =
(LetVisitor { ident_name: seg1.ident.name }).visit_body(&body)
(LetVisitor { ident_name: seg1.ident.name }).visit_body(body)
&& let Some(self_ty) = self.node_ty_opt(expr.hir_id)
{
let probe = self.lookup_probe_for_diagnostic(
Expand Down Expand Up @@ -2960,14 +2960,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
.collect::<Vec<_>>()
.into();
for pred in &local_preds {
match pred.self_ty().kind() {
ty::Adt(def, _) => {
local_spans.push_span_label(
self.tcx.def_span(def.did()),
format!("must implement `{}`", pred.trait_ref.print_trait_sugared()),
);
}
_ => {}
if let ty::Adt(def, _) = pred.self_ty().kind() {
local_spans.push_span_label(
self.tcx.def_span(def.did()),
format!("must implement `{}`", pred.trait_ref.print_trait_sugared()),
);
}
}
if local_spans.primary_span().is_some() {
Expand Down Expand Up @@ -3006,14 +3003,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
.collect::<Vec<_>>()
.into();
for pred in &foreign_preds {
match pred.self_ty().kind() {
ty::Adt(def, _) => {
foreign_spans.push_span_label(
self.tcx.def_span(def.did()),
format!("not implement `{}`", pred.trait_ref.print_trait_sugared()),
);
}
_ => {}
if let ty::Adt(def, _) = pred.self_ty().kind() {
foreign_spans.push_span_label(
self.tcx.def_span(def.did()),
format!("not implement `{}`", pred.trait_ref.print_trait_sugared()),
);
}
}
if foreign_spans.primary_span().is_some() {
Expand Down Expand Up @@ -3595,7 +3589,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
// would take care of them.
&& !skippable.contains(&Some(pick.item.container_id(self.tcx)))
// Do not suggest pinning when the method is directly on `Pin`.
&& pick.item.impl_container(self.tcx).map_or(true, |did| {
&& pick.item.impl_container(self.tcx).is_none_or(|did| {
match self.tcx.type_of(did).skip_binder().kind() {
ty::Adt(def, _) => Some(def.did()) != self.tcx.lang_items().pin_type(),
_ => true,
Expand Down Expand Up @@ -3653,7 +3647,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
vec![
(
rcvr.span.shrink_to_lo(),
format!("let mut pinned = std::pin::pin!("),
"let mut pinned = std::pin::pin!(".to_string(),
),
(
rcvr.span.shrink_to_hi(),
Expand Down Expand Up @@ -4128,7 +4122,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
);
let trait_span = self.tcx.def_span(trait_def_id);
let mut multi_span: MultiSpan = trait_span.into();
multi_span.push_span_label(trait_span, format!("this is the trait that is needed"));
multi_span.push_span_label(trait_span, "this is the trait that is needed".to_string());
let descr = self.tcx.associated_item(item_def_id).descr();
let rcvr_ty =
rcvr_ty.map(|t| format!("`{t}`")).unwrap_or_else(|| "the receiver".to_string());
Expand All @@ -4146,7 +4140,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
}
multi_span.push_span_label(
self.tcx.def_span(def_id),
format!("this is the trait that was imported"),
"this is the trait that was imported".to_string(),
);
}
err.span_note(multi_span, msg);
Expand Down
8 changes: 4 additions & 4 deletions compiler/rustc_hir_typeck/src/op.rs
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
rhs_ty,
lhs_expr,
lhs_ty,
|lhs_ty, rhs_ty| is_compatible_after_call(lhs_ty, rhs_ty),
is_compatible_after_call,
) {
// Cool
}
Expand Down Expand Up @@ -1170,8 +1170,8 @@ fn deref_ty_if_possible(ty: Ty<'_>) -> Ty<'_> {
}
}

/// Returns `true` if this is a built-in arithmetic operation (e.g., u32
/// + u32, i16x4 == i16x4) and false if these types would have to be
/// Returns `true` if this is a built-in arithmetic operation (e.g.,
/// u32 + u32, i16x4 == i16x4) and false if these types would have to be
/// overloaded to be legal. There are two reasons that we distinguish
/// builtin operations from overloaded ones (vs trying to drive
/// everything uniformly through the trait system and intrinsics or
Expand All @@ -1191,7 +1191,7 @@ fn is_builtin_binop<'tcx>(lhs: Ty<'tcx>, rhs: Ty<'tcx>, category: BinOpCategory)
// (See https://github.com/rust-lang/rust/issues/57447.)
let (lhs, rhs) = (deref_ty_if_possible(lhs), deref_ty_if_possible(rhs));

match category.into() {
match category {
BinOpCategory::Shortcircuit => true,
BinOpCategory::Shift => {
lhs.references_error()
Expand Down
8 changes: 7 additions & 1 deletion library/alloc/src/collections/btree/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ struct LeafNode<K, V> {

impl<K, V> LeafNode<K, V> {
/// Initializes a new `LeafNode` in-place.
///
/// # Safety
///
/// The caller must ensure that `this` points to a (possibly uninitialized) `LeafNode`
unsafe fn init(this: *mut Self) {
// As a general policy, we leave fields uninitialized if they can be, as this should
// be both slightly faster and easier to track in Valgrind.
Expand All @@ -79,9 +83,11 @@ impl<K, V> LeafNode<K, V> {

/// Creates a new boxed `LeafNode`.
fn new<A: Allocator + Clone>(alloc: A) -> Box<Self, A> {
let mut leaf = Box::new_uninit_in(alloc);
unsafe {
let mut leaf = Box::new_uninit_in(alloc);
// SAFETY: `leaf` points to a `LeafNode`
LeafNode::init(leaf.as_mut_ptr());
// SAFETY: `leaf` was just initialized
leaf.assume_init()
}
}
Expand Down
4 changes: 3 additions & 1 deletion library/core/src/cmp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1351,7 +1351,9 @@ pub macro Ord($item:item) {
#[rustc_diagnostic_item = "PartialOrd"]
#[allow(multiple_supertrait_upcastable)] // FIXME(sized_hierarchy): remove this
#[rustc_const_unstable(feature = "const_cmp", issue = "143800")]
pub const trait PartialOrd<Rhs: PointeeSized = Self>: PartialEq<Rhs> + PointeeSized {
pub const trait PartialOrd<Rhs: PointeeSized = Self>:
[const] PartialEq<Rhs> + PointeeSized
{
/// This method returns an ordering between `self` and `other` values if one exists.
///
/// # Examples
Expand Down
4 changes: 2 additions & 2 deletions tests/ui/feature-gates/feature-gate-macro-derive.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ error[E0658]: `macro_rules!` derives are unstable
LL | macro_rules! MyDerive { derive() {} => {} }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #83527 <https://github.com/rust-lang/rust/issues/83527> for more information
= help: add `#![feature(macro_attr)]` to the crate attributes to enable
= note: see issue #143549 <https://github.com/rust-lang/rust/issues/143549> for more information
= help: add `#![feature(macro_derive)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error: aborting due to 1 previous error
Expand Down
3 changes: 2 additions & 1 deletion x
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ realpath() {
if [ -L "$path" ]; then
readlink -f "$path"
elif [ -d "$path" ]; then
(cd -P "$path" && pwd)
# "cd" is not always silent (e.g. when CDPATH is set), so discard its output.
(cd -P "$path" >/dev/null && pwd)
else
echo "$(realpath "$(dirname "$path")")/$(basename "$path")"
fi
Expand Down
Loading