Skip to content

Commit 2ed0f29

Browse files
committed
Auto merge of rust-lang#100426 - matthiaskrgr:rollup-0ks4dou, r=matthiaskrgr
Rollup of 13 pull requests Successful merges: - rust-lang#93896 (rustdoc: make item-infos dimmer on dark theme) - rust-lang#99337 (rustdoc: simplify highlight.rs) - rust-lang#99421 (add crt-static for android) - rust-lang#99500 (Fix flags when using clang as linker for Fuchsia) - rust-lang#99511 (make raw_eq precondition more restrictive) - rust-lang#99992 (Add `x.sh` and `x.ps1` shell scripts) - rust-lang#100112 (Fix test: chunks_mut_are_send_and_sync) - rust-lang#100203 (provide correct size hint for unsupported platform `CommandArgs`) - rust-lang#100307 (Fix rust-lang#96847) - rust-lang#100350 (Stringify non-shorthand visibility correctly) - rust-lang#100374 (Improve crate selection on rustdoc search results page) - rust-lang#100392 (Simplify visitors) - rust-lang#100418 (Add stability attributes to BacktraceStatus variants) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents 20ffea6 + c7578b4 commit 2ed0f29

File tree

83 files changed

+456
-422
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+456
-422
lines changed

Cargo.lock

+2-2
Original file line numberDiff line numberDiff line change
@@ -2142,9 +2142,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
21422142

21432143
[[package]]
21442144
name = "libc"
2145-
version = "0.2.126"
2145+
version = "0.2.129"
21462146
source = "registry+https://github.com/rust-lang/crates.io-index"
2147-
checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
2147+
checksum = "64de3cc433455c14174d42e554d4027ee631c4d046d43e3ecc6efc4636cdc7a7"
21482148
dependencies = [
21492149
"rustc-std-workspace-core",
21502150
]

compiler/rustc_ast/src/ast.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2601,7 +2601,7 @@ pub struct Visibility {
26012601
#[derive(Clone, Encodable, Decodable, Debug)]
26022602
pub enum VisibilityKind {
26032603
Public,
2604-
Restricted { path: P<Path>, id: NodeId },
2604+
Restricted { path: P<Path>, id: NodeId, shorthand: bool },
26052605
Inherited,
26062606
}
26072607

compiler/rustc_ast/src/mut_visit.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1487,7 +1487,7 @@ pub fn noop_flat_map_stmt_kind<T: MutVisitor>(
14871487
pub fn noop_visit_vis<T: MutVisitor>(visibility: &mut Visibility, vis: &mut T) {
14881488
match &mut visibility.kind {
14891489
VisibilityKind::Public | VisibilityKind::Inherited => {}
1490-
VisibilityKind::Restricted { path, id } => {
1490+
VisibilityKind::Restricted { path, id, shorthand: _ } => {
14911491
vis.visit_path(path);
14921492
vis.visit_id(id);
14931493
}

compiler/rustc_ast/src/visit.rs

+10-24
Original file line numberDiff line numberDiff line change
@@ -168,23 +168,17 @@ pub trait Visitor<'ast>: Sized {
168168
fn visit_param_bound(&mut self, bounds: &'ast GenericBound, _ctxt: BoundKind) {
169169
walk_param_bound(self, bounds)
170170
}
171-
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef, m: &'ast TraitBoundModifier) {
172-
walk_poly_trait_ref(self, t, m)
171+
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef) {
172+
walk_poly_trait_ref(self, t)
173173
}
174174
fn visit_variant_data(&mut self, s: &'ast VariantData) {
175175
walk_struct_def(self, s)
176176
}
177177
fn visit_field_def(&mut self, s: &'ast FieldDef) {
178178
walk_field_def(self, s)
179179
}
180-
fn visit_enum_def(
181-
&mut self,
182-
enum_definition: &'ast EnumDef,
183-
generics: &'ast Generics,
184-
item_id: NodeId,
185-
_: Span,
186-
) {
187-
walk_enum_def(self, enum_definition, generics, item_id)
180+
fn visit_enum_def(&mut self, enum_definition: &'ast EnumDef) {
181+
walk_enum_def(self, enum_definition)
188182
}
189183
fn visit_variant(&mut self, v: &'ast Variant) {
190184
walk_variant(self, v)
@@ -287,11 +281,8 @@ pub fn walk_lifetime<'a, V: Visitor<'a>>(visitor: &mut V, lifetime: &'a Lifetime
287281
visitor.visit_ident(lifetime.ident);
288282
}
289283

290-
pub fn walk_poly_trait_ref<'a, V>(
291-
visitor: &mut V,
292-
trait_ref: &'a PolyTraitRef,
293-
_: &TraitBoundModifier,
294-
) where
284+
pub fn walk_poly_trait_ref<'a, V>(visitor: &mut V, trait_ref: &'a PolyTraitRef)
285+
where
295286
V: Visitor<'a>,
296287
{
297288
walk_list!(visitor, visit_generic_param, &trait_ref.bound_generic_params);
@@ -334,7 +325,7 @@ pub fn walk_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a Item) {
334325
}
335326
ItemKind::Enum(ref enum_definition, ref generics) => {
336327
visitor.visit_generics(generics);
337-
visitor.visit_enum_def(enum_definition, generics, item.id, item.span)
328+
visitor.visit_enum_def(enum_definition)
338329
}
339330
ItemKind::Impl(box Impl {
340331
defaultness: _,
@@ -377,12 +368,7 @@ pub fn walk_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a Item) {
377368
walk_list!(visitor, visit_attribute, &item.attrs);
378369
}
379370

380-
pub fn walk_enum_def<'a, V: Visitor<'a>>(
381-
visitor: &mut V,
382-
enum_definition: &'a EnumDef,
383-
_: &'a Generics,
384-
_: NodeId,
385-
) {
371+
pub fn walk_enum_def<'a, V: Visitor<'a>>(visitor: &mut V, enum_definition: &'a EnumDef) {
386372
walk_list!(visitor, visit_variant, &enum_definition.variants);
387373
}
388374

@@ -598,7 +584,7 @@ pub fn walk_foreign_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a ForeignI
598584

599585
pub fn walk_param_bound<'a, V: Visitor<'a>>(visitor: &mut V, bound: &'a GenericBound) {
600586
match *bound {
601-
GenericBound::Trait(ref typ, ref modifier) => visitor.visit_poly_trait_ref(typ, modifier),
587+
GenericBound::Trait(ref typ, ref _modifier) => visitor.visit_poly_trait_ref(typ),
602588
GenericBound::Outlives(ref lifetime) => {
603589
visitor.visit_lifetime(lifetime, LifetimeCtxt::Bound)
604590
}
@@ -936,7 +922,7 @@ pub fn walk_arm<'a, V: Visitor<'a>>(visitor: &mut V, arm: &'a Arm) {
936922
}
937923

938924
pub fn walk_vis<'a, V: Visitor<'a>>(visitor: &mut V, vis: &'a Visibility) {
939-
if let VisibilityKind::Restricted { ref path, id } = vis.kind {
925+
if let VisibilityKind::Restricted { ref path, id, shorthand: _ } = vis.kind {
940926
visitor.visit_path(path, id);
941927
}
942928
}

compiler/rustc_ast_lowering/src/expr.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -1536,15 +1536,13 @@ impl<'hir> LoweringContext<'_, 'hir> {
15361536
hir::MatchSource::ForLoopDesugar,
15371537
));
15381538

1539-
let attrs: Vec<_> = e.attrs.iter().map(|a| self.lower_attr(a)).collect();
1540-
15411539
// This is effectively `{ let _result = ...; _result }`.
15421540
// The construct was introduced in #21984 and is necessary to make sure that
15431541
// temporaries in the `head` expression are dropped and do not leak to the
15441542
// surrounding scope of the `match` since the `match` is not a terminating scope.
15451543
//
15461544
// Also, add the attributes to the outer returned expr node.
1547-
self.expr_drop_temps_mut(for_span, match_expr, attrs.into())
1545+
self.expr_drop_temps_mut(for_span, match_expr, e.attrs.clone())
15481546
}
15491547

15501548
/// Desugar `ExprKind::Try` from: `<expr>?` into:

compiler/rustc_ast_lowering/src/index.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -295,14 +295,14 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
295295
self.insert(lifetime.span, lifetime.hir_id, Node::Lifetime(lifetime));
296296
}
297297

298-
fn visit_variant(&mut self, v: &'hir Variant<'hir>, g: &'hir Generics<'hir>, item_id: HirId) {
298+
fn visit_variant(&mut self, v: &'hir Variant<'hir>) {
299299
self.insert(v.span, v.id, Node::Variant(v));
300300
self.with_parent(v.id, |this| {
301301
// Register the constructor of this variant.
302302
if let Some(ctor_hir_id) = v.data.ctor_hir_id() {
303303
this.insert(v.span, ctor_hir_id, Node::Ctor(&v.data));
304304
}
305-
intravisit::walk_variant(this, v, g, item_id);
305+
intravisit::walk_variant(this, v);
306306
});
307307
}
308308

compiler/rustc_ast_lowering/src/lifetime_collector.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
use super::ResolverAstLoweringExt;
22
use rustc_ast::visit::{self, BoundKind, LifetimeCtxt, Visitor};
3-
use rustc_ast::{
4-
FnRetTy, GenericBounds, Lifetime, NodeId, PathSegment, PolyTraitRef, TraitBoundModifier, Ty,
5-
TyKind,
6-
};
3+
use rustc_ast::{FnRetTy, GenericBounds, Lifetime, NodeId, PathSegment, PolyTraitRef, Ty, TyKind};
74
use rustc_hir::def::LifetimeRes;
85
use rustc_middle::span_bug;
96
use rustc_middle::ty::ResolverAstLowering;
@@ -71,10 +68,10 @@ impl<'ast> Visitor<'ast> for LifetimeCollectVisitor<'ast> {
7168
visit::walk_path_segment(self, path_span, path_segment);
7269
}
7370

74-
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef, m: &'ast TraitBoundModifier) {
71+
fn visit_poly_trait_ref(&mut self, t: &'ast PolyTraitRef) {
7572
self.current_binders.push(t.trait_ref.ref_id);
7673

77-
visit::walk_poly_trait_ref(self, t, m);
74+
visit::walk_poly_trait_ref(self, t);
7875

7976
self.current_binders.pop();
8077
}

compiler/rustc_ast_passes/src/ast_validation.rs

+4-12
Original file line numberDiff line numberDiff line change
@@ -1536,25 +1536,17 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
15361536
visit::walk_param_bound(self, bound)
15371537
}
15381538

1539-
fn visit_poly_trait_ref(&mut self, t: &'a PolyTraitRef, m: &'a TraitBoundModifier) {
1539+
fn visit_poly_trait_ref(&mut self, t: &'a PolyTraitRef) {
15401540
self.check_late_bound_lifetime_defs(&t.bound_generic_params);
1541-
visit::walk_poly_trait_ref(self, t, m);
1541+
visit::walk_poly_trait_ref(self, t);
15421542
}
15431543

15441544
fn visit_variant_data(&mut self, s: &'a VariantData) {
15451545
self.with_banned_assoc_ty_bound(|this| visit::walk_struct_def(this, s))
15461546
}
15471547

1548-
fn visit_enum_def(
1549-
&mut self,
1550-
enum_definition: &'a EnumDef,
1551-
generics: &'a Generics,
1552-
item_id: NodeId,
1553-
_: Span,
1554-
) {
1555-
self.with_banned_assoc_ty_bound(|this| {
1556-
visit::walk_enum_def(this, enum_definition, generics, item_id)
1557-
})
1548+
fn visit_enum_def(&mut self, enum_definition: &'a EnumDef) {
1549+
self.with_banned_assoc_ty_bound(|this| visit::walk_enum_def(this, enum_definition))
15581550
}
15591551

15601552
fn visit_fn(&mut self, fk: FnKind<'a>, span: Span, id: NodeId) {

compiler/rustc_ast_passes/src/node_count.rs

+4-10
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,9 @@ impl<'ast> Visitor<'ast> for NodeCounter {
7979
self.count += 1;
8080
walk_param_bound(self, bounds)
8181
}
82-
fn visit_poly_trait_ref(&mut self, t: &PolyTraitRef, m: &TraitBoundModifier) {
82+
fn visit_poly_trait_ref(&mut self, t: &PolyTraitRef) {
8383
self.count += 1;
84-
walk_poly_trait_ref(self, t, m)
84+
walk_poly_trait_ref(self, t)
8585
}
8686
fn visit_variant_data(&mut self, s: &VariantData) {
8787
self.count += 1;
@@ -91,15 +91,9 @@ impl<'ast> Visitor<'ast> for NodeCounter {
9191
self.count += 1;
9292
walk_field_def(self, s)
9393
}
94-
fn visit_enum_def(
95-
&mut self,
96-
enum_definition: &EnumDef,
97-
generics: &Generics,
98-
item_id: NodeId,
99-
_: Span,
100-
) {
94+
fn visit_enum_def(&mut self, enum_definition: &EnumDef) {
10195
self.count += 1;
102-
walk_enum_def(self, enum_definition, generics, item_id)
96+
walk_enum_def(self, enum_definition)
10397
}
10498
fn visit_variant(&mut self, v: &Variant) {
10599
self.count += 1;

compiler/rustc_ast_pretty/src/pprust/state/item.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,9 @@ impl<'a> State<'a> {
412412
pub(crate) fn print_visibility(&mut self, vis: &ast::Visibility) {
413413
match vis.kind {
414414
ast::VisibilityKind::Public => self.word_nbsp("pub"),
415-
ast::VisibilityKind::Restricted { ref path, .. } => {
415+
ast::VisibilityKind::Restricted { ref path, id: _, shorthand } => {
416416
let path = Self::to_string(|s| s.print_path(path, false, 0));
417-
if path == "crate" || path == "self" || path == "super" {
417+
if shorthand && (path == "crate" || path == "self" || path == "super") {
418418
self.word_nbsp(format!("pub({})", path))
419419
} else {
420420
self.word_nbsp(format!("pub(in {})", path))

compiler/rustc_builtin_macros/src/deriving/generic/mod.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -383,16 +383,12 @@ fn find_type_parameters(
383383
}
384384

385385
// Place bound generic params on a stack, to extract them when a type is encountered.
386-
fn visit_poly_trait_ref(
387-
&mut self,
388-
trait_ref: &'a ast::PolyTraitRef,
389-
modifier: &'a ast::TraitBoundModifier,
390-
) {
386+
fn visit_poly_trait_ref(&mut self, trait_ref: &'a ast::PolyTraitRef) {
391387
let stack_len = self.bound_generic_params_stack.len();
392388
self.bound_generic_params_stack
393389
.extend(trait_ref.bound_generic_params.clone().into_iter());
394390

395-
visit::walk_poly_trait_ref(self, trait_ref, modifier);
391+
visit::walk_poly_trait_ref(self, trait_ref);
396392

397393
self.bound_generic_params_stack.truncate(stack_len);
398394
}

compiler/rustc_codegen_ssa/src/back/link.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -1583,12 +1583,21 @@ fn crt_objects_fallback(sess: &Session, crate_type: CrateType) -> bool {
15831583
fn add_pre_link_objects(
15841584
cmd: &mut dyn Linker,
15851585
sess: &Session,
1586+
flavor: LinkerFlavor,
15861587
link_output_kind: LinkOutputKind,
15871588
self_contained: bool,
15881589
) {
1590+
// FIXME: we are currently missing some infra here (per-linker-flavor CRT objects),
1591+
// so Fuchsia has to be special-cased.
15891592
let opts = &sess.target;
1590-
let objects =
1591-
if self_contained { &opts.pre_link_objects_fallback } else { &opts.pre_link_objects };
1593+
let empty = Default::default();
1594+
let objects = if self_contained {
1595+
&opts.pre_link_objects_fallback
1596+
} else if !(sess.target.os == "fuchsia" && flavor == LinkerFlavor::Gcc) {
1597+
&opts.pre_link_objects
1598+
} else {
1599+
&empty
1600+
};
15921601
for obj in objects.get(&link_output_kind).iter().copied().flatten() {
15931602
cmd.add_object(&get_object_file_path(sess, obj, self_contained));
15941603
}
@@ -1914,7 +1923,7 @@ fn linker_with_args<'a>(
19141923
// ------------ Object code and libraries, order-dependent ------------
19151924

19161925
// Pre-link CRT objects.
1917-
add_pre_link_objects(cmd, sess, link_output_kind, crt_objects_fallback);
1926+
add_pre_link_objects(cmd, sess, flavor, link_output_kind, crt_objects_fallback);
19181927

19191928
add_linked_symbol_object(
19201929
cmd,
@@ -2070,7 +2079,10 @@ fn add_order_independent_options(
20702079

20712080
add_link_script(cmd, sess, tmpdir, crate_type);
20722081

2073-
if sess.target.os == "fuchsia" && crate_type == CrateType::Executable {
2082+
if sess.target.os == "fuchsia"
2083+
&& crate_type == CrateType::Executable
2084+
&& flavor != LinkerFlavor::Gcc
2085+
{
20742086
let prefix = if sess.opts.unstable_opts.sanitizer.contains(SanitizerSet::ADDRESS) {
20752087
"asan/"
20762088
} else {

compiler/rustc_hir/src/intravisit.rs

+10-41
Original file line numberDiff line numberDiff line change
@@ -385,30 +385,17 @@ pub trait Visitor<'v>: Sized {
385385
fn visit_poly_trait_ref(&mut self, t: &'v PolyTraitRef<'v>, m: TraitBoundModifier) {
386386
walk_poly_trait_ref(self, t, m)
387387
}
388-
fn visit_variant_data(
389-
&mut self,
390-
s: &'v VariantData<'v>,
391-
_: Symbol,
392-
_: &'v Generics<'v>,
393-
_parent_id: HirId,
394-
_: Span,
395-
) {
388+
fn visit_variant_data(&mut self, s: &'v VariantData<'v>) {
396389
walk_struct_def(self, s)
397390
}
398391
fn visit_field_def(&mut self, s: &'v FieldDef<'v>) {
399392
walk_field_def(self, s)
400393
}
401-
fn visit_enum_def(
402-
&mut self,
403-
enum_definition: &'v EnumDef<'v>,
404-
generics: &'v Generics<'v>,
405-
item_id: HirId,
406-
_: Span,
407-
) {
408-
walk_enum_def(self, enum_definition, generics, item_id)
394+
fn visit_enum_def(&mut self, enum_definition: &'v EnumDef<'v>, item_id: HirId) {
395+
walk_enum_def(self, enum_definition, item_id)
409396
}
410-
fn visit_variant(&mut self, v: &'v Variant<'v>, g: &'v Generics<'v>, item_id: HirId) {
411-
walk_variant(self, v, g, item_id)
397+
fn visit_variant(&mut self, v: &'v Variant<'v>) {
398+
walk_variant(self, v)
412399
}
413400
fn visit_label(&mut self, label: &'v Label) {
414401
walk_label(self, label)
@@ -572,7 +559,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item<'v>) {
572559
ItemKind::Enum(ref enum_definition, ref generics) => {
573560
visitor.visit_generics(generics);
574561
// `visit_enum_def()` takes care of visiting the `Item`'s `HirId`.
575-
visitor.visit_enum_def(enum_definition, generics, item.hir_id(), item.span)
562+
visitor.visit_enum_def(enum_definition, item.hir_id())
576563
}
577564
ItemKind::Impl(Impl {
578565
unsafety: _,
@@ -595,13 +582,7 @@ pub fn walk_item<'v, V: Visitor<'v>>(visitor: &mut V, item: &'v Item<'v>) {
595582
| ItemKind::Union(ref struct_definition, ref generics) => {
596583
visitor.visit_generics(generics);
597584
visitor.visit_id(item.hir_id());
598-
visitor.visit_variant_data(
599-
struct_definition,
600-
item.ident.name,
601-
generics,
602-
item.hir_id(),
603-
item.span,
604-
);
585+
visitor.visit_variant_data(struct_definition);
605586
}
606587
ItemKind::Trait(.., ref generics, bounds, trait_item_refs) => {
607588
visitor.visit_id(item.hir_id());
@@ -649,28 +630,16 @@ pub fn walk_use<'v, V: Visitor<'v>>(visitor: &mut V, path: &'v Path<'v>, hir_id:
649630
pub fn walk_enum_def<'v, V: Visitor<'v>>(
650631
visitor: &mut V,
651632
enum_definition: &'v EnumDef<'v>,
652-
generics: &'v Generics<'v>,
653633
item_id: HirId,
654634
) {
655635
visitor.visit_id(item_id);
656-
walk_list!(visitor, visit_variant, enum_definition.variants, generics, item_id);
636+
walk_list!(visitor, visit_variant, enum_definition.variants);
657637
}
658638

659-
pub fn walk_variant<'v, V: Visitor<'v>>(
660-
visitor: &mut V,
661-
variant: &'v Variant<'v>,
662-
generics: &'v Generics<'v>,
663-
parent_item_id: HirId,
664-
) {
639+
pub fn walk_variant<'v, V: Visitor<'v>>(visitor: &mut V, variant: &'v Variant<'v>) {
665640
visitor.visit_ident(variant.ident);
666641
visitor.visit_id(variant.id);
667-
visitor.visit_variant_data(
668-
&variant.data,
669-
variant.ident.name,
670-
generics,
671-
parent_item_id,
672-
variant.span,
673-
);
642+
visitor.visit_variant_data(&variant.data);
674643
walk_list!(visitor, visit_anon_const, &variant.disr_expr);
675644
}
676645

0 commit comments

Comments
 (0)