Skip to content

Commit 660c966

Browse files
committed
Auto merge of rust-lang#110324 - JohnTitor:rollup-jq31pd1, r=JohnTitor
Rollup of 7 pull requests Successful merges: - rust-lang#103682 (Stabilize rustdoc `--test-run-directory`) - rust-lang#106249 (Create "suggested tests" tool in `rustbuild`) - rust-lang#110047 (Add link to `collections` docs to `extend` trait) - rust-lang#110269 (Add `tidy-alphabetical` to features in `core`) - rust-lang#110292 (Add `tidy-alphabetical` to features in `alloc` & `std`) - rust-lang#110305 (rustdoc-search: use ES6 `Map` and `Set` where they make sense) - rust-lang#110315 (Add a stable MIR way to get the main function) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents b0884a3 + 4259133 commit 660c966

File tree

28 files changed

+577
-139
lines changed

28 files changed

+577
-139
lines changed

Cargo.lock

+11-2
Original file line numberDiff line numberDiff line change
@@ -3451,9 +3451,9 @@ dependencies = [
34513451

34523452
[[package]]
34533453
name = "once_cell"
3454-
version = "1.16.0"
3454+
version = "1.17.1"
34553455
source = "registry+https://github.com/rust-lang/crates.io-index"
3456-
checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
3456+
checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
34573457

34583458
[[package]]
34593459
name = "opener"
@@ -6101,6 +6101,15 @@ version = "2.4.1"
61016101
source = "registry+https://github.com/rust-lang/crates.io-index"
61026102
checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
61036103

6104+
[[package]]
6105+
name = "suggest-tests"
6106+
version = "0.1.0"
6107+
dependencies = [
6108+
"build_helper",
6109+
"glob",
6110+
"once_cell",
6111+
]
6112+
61046113
[[package]]
61056114
name = "syn"
61066115
version = "1.0.102"

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ members = [
4444
"src/tools/lld-wrapper",
4545
"src/tools/collect-license-metadata",
4646
"src/tools/generate-copyright",
47+
"src/tools/suggest-tests",
4748
]
4849

4950
exclude = [

compiler/rustc_smir/src/rustc_smir/mod.rs

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ pub fn all_local_items() -> stable_mir::CrateItems {
4040
with(|tcx| tcx.mir_keys(()).iter().map(|item| crate_item(item.to_def_id())).collect())
4141
}
4242

43+
pub fn entry_fn() -> Option<stable_mir::CrateItem> {
44+
with(|tcx| Some(crate_item(tcx.entry_fn(())?.0)))
45+
}
46+
4347
/// Build a stable mir crate from a given crate number.
4448
fn smir_crate(tcx: TyCtxt<'_>, crate_num: CrateNum) -> stable_mir::Crate {
4549
let crate_name = tcx.crate_name(crate_num).to_string();

compiler/rustc_smir/src/stable_mir/mod.rs

+7
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ impl CrateItem {
4545
}
4646
}
4747

48+
/// Return the function where execution starts if the current
49+
/// crate defines that. This is usually `main`, but could be
50+
/// `start` if the crate is a no-std crate.
51+
pub fn entry_fn() -> Option<CrateItem> {
52+
crate::rustc_smir::entry_fn()
53+
}
54+
4855
/// Access to the local crate.
4956
pub fn local_crate() -> Crate {
5057
crate::rustc_smir::local_crate()

library/alloc/src/lib.rs

+25-21
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,11 @@
9090
#![warn(multiple_supertrait_upcastable)]
9191
//
9292
// Library features:
93+
// tidy-alphabetical-start
94+
#![cfg_attr(not(no_global_oom_handling), feature(const_alloc_error))]
95+
#![cfg_attr(not(no_global_oom_handling), feature(const_btree_len))]
96+
#![cfg_attr(test, feature(is_sorted))]
97+
#![cfg_attr(test, feature(new_uninit))]
9398
#![feature(alloc_layout_extra)]
9499
#![feature(allocator_api)]
95100
#![feature(array_chunks)]
@@ -99,23 +104,21 @@
99104
#![feature(assert_matches)]
100105
#![feature(async_iterator)]
101106
#![feature(coerce_unsized)]
102-
#![cfg_attr(not(no_global_oom_handling), feature(const_alloc_error))]
107+
#![feature(const_align_of_val)]
103108
#![feature(const_box)]
104-
#![cfg_attr(not(no_global_oom_handling), feature(const_btree_len))]
105-
#![feature(const_cow_is_borrowed)]
106109
#![feature(const_convert)]
107-
#![feature(const_size_of_val)]
108-
#![feature(const_align_of_val)]
109-
#![feature(const_ptr_read)]
110-
#![feature(const_maybe_uninit_zeroed)]
111-
#![feature(const_maybe_uninit_write)]
110+
#![feature(const_cow_is_borrowed)]
111+
#![feature(const_eval_select)]
112112
#![feature(const_maybe_uninit_as_mut_ptr)]
113+
#![feature(const_maybe_uninit_write)]
114+
#![feature(const_maybe_uninit_zeroed)]
115+
#![feature(const_pin)]
116+
#![feature(const_ptr_read)]
113117
#![feature(const_refs_to_cell)]
118+
#![feature(const_size_of_val)]
119+
#![feature(const_waker)]
114120
#![feature(core_intrinsics)]
115121
#![feature(core_panic)]
116-
#![feature(const_eval_select)]
117-
#![feature(const_pin)]
118-
#![feature(const_waker)]
119122
#![feature(dispatch_from_dyn)]
120123
#![feature(error_generic_member_access)]
121124
#![feature(error_in_core)]
@@ -126,15 +129,13 @@
126129
#![feature(hasher_prefixfree_extras)]
127130
#![feature(inline_const)]
128131
#![feature(inplace_iteration)]
129-
#![cfg_attr(test, feature(is_sorted))]
130132
#![feature(iter_advance_by)]
131133
#![feature(iter_next_chunk)]
132134
#![feature(iter_repeat_n)]
133135
#![feature(layout_for_ptr)]
134136
#![feature(maybe_uninit_slice)]
135137
#![feature(maybe_uninit_uninit_array)]
136138
#![feature(maybe_uninit_uninit_array_transpose)]
137-
#![cfg_attr(test, feature(new_uninit))]
138139
#![feature(pattern)]
139140
#![feature(pointer_byte_offsets)]
140141
#![feature(provide_any)]
@@ -150,6 +151,7 @@
150151
#![feature(slice_ptr_get)]
151152
#![feature(slice_ptr_len)]
152153
#![feature(slice_range)]
154+
#![feature(std_internals)]
153155
#![feature(str_internals)]
154156
#![feature(strict_provenance)]
155157
#![feature(trusted_len)]
@@ -160,41 +162,43 @@
160162
#![feature(unicode_internals)]
161163
#![feature(unsize)]
162164
#![feature(utf8_chunks)]
163-
#![feature(std_internals)]
165+
// tidy-alphabetical-end
164166
//
165167
// Language features:
168+
// tidy-alphabetical-start
169+
#![cfg_attr(not(test), feature(generator_trait))]
170+
#![cfg_attr(test, feature(panic_update_hook))]
171+
#![cfg_attr(test, feature(test))]
166172
#![feature(allocator_internals)]
167173
#![feature(allow_internal_unstable)]
168174
#![feature(associated_type_bounds)]
175+
#![feature(c_unwind)]
169176
#![feature(cfg_sanitize)]
170177
#![feature(const_deref)]
171178
#![feature(const_mut_refs)]
172-
#![feature(const_ptr_write)]
173179
#![feature(const_precise_live_drops)]
180+
#![feature(const_ptr_write)]
174181
#![feature(const_trait_impl)]
175182
#![feature(const_try)]
176183
#![feature(dropck_eyepatch)]
177184
#![feature(exclusive_range_pattern)]
178185
#![feature(fundamental)]
179-
#![cfg_attr(not(test), feature(generator_trait))]
180186
#![feature(hashmap_internals)]
181187
#![feature(lang_items)]
182188
#![feature(min_specialization)]
189+
#![feature(multiple_supertrait_upcastable)]
183190
#![feature(negative_impls)]
184191
#![feature(never_type)]
192+
#![feature(pointer_is_aligned)]
185193
#![feature(rustc_allow_const_fn_unstable)]
186194
#![feature(rustc_attrs)]
187-
#![feature(pointer_is_aligned)]
188195
#![feature(slice_internals)]
189196
#![feature(staged_api)]
190197
#![feature(stmt_expr_attributes)]
191-
#![cfg_attr(test, feature(test))]
192198
#![feature(unboxed_closures)]
193199
#![feature(unsized_fn_params)]
194-
#![feature(c_unwind)]
195200
#![feature(with_negative_coherence)]
196-
#![cfg_attr(test, feature(panic_update_hook))]
197-
#![feature(multiple_supertrait_upcastable)]
201+
// tidy-alphabetical-end
198202
//
199203
// Rustdoc features:
200204
#![feature(doc_cfg)]

library/core/src/lib.rs

+28-22
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,14 @@
9898
#![warn(multiple_supertrait_upcastable)]
9999
//
100100
// Library features:
101-
#![feature(const_align_offset)]
101+
// tidy-alphabetical-start
102+
#![feature(char_indices_offset)]
102103
#![feature(const_align_of_val)]
103104
#![feature(const_align_of_val_raw)]
105+
#![feature(const_align_offset)]
104106
#![feature(const_alloc_layout)]
105107
#![feature(const_arguments_as_str)]
108+
#![feature(const_array_from_ref)]
106109
#![feature(const_array_into_iter_constructors)]
107110
#![feature(const_bigint_helper_methods)]
108111
#![feature(const_black_box)]
@@ -111,6 +114,9 @@
111114
#![feature(const_char_from_u32_unchecked)]
112115
#![feature(const_clone)]
113116
#![feature(const_cmp)]
117+
#![feature(const_convert)]
118+
#![feature(const_cstr_methods)]
119+
#![feature(const_default_impls)]
114120
#![feature(const_discriminant)]
115121
#![feature(const_eval_select)]
116122
#![feature(const_exact_div)]
@@ -119,17 +125,17 @@
119125
#![feature(const_fmt_arguments_new)]
120126
#![feature(const_hash)]
121127
#![feature(const_heap)]
122-
#![feature(const_convert)]
123128
#![feature(const_index_range_slice_index)]
124129
#![feature(const_inherent_unchecked_arith)]
125130
#![feature(const_int_unchecked_arith)]
126131
#![feature(const_intrinsic_forget)]
127132
#![feature(const_ipv4)]
128133
#![feature(const_ipv6)]
134+
#![feature(const_is_char_boundary)]
129135
#![feature(const_likely)]
130-
#![feature(const_maybe_uninit_uninit_array)]
131136
#![feature(const_maybe_uninit_as_mut_ptr)]
132137
#![feature(const_maybe_uninit_assume_init)]
138+
#![feature(const_maybe_uninit_uninit_array)]
133139
#![feature(const_nonnull_new)]
134140
#![feature(const_num_from_num)]
135141
#![feature(const_ops)]
@@ -138,58 +144,57 @@
138144
#![feature(const_pin)]
139145
#![feature(const_pointer_byte_offsets)]
140146
#![feature(const_pointer_is_aligned)]
141-
#![feature(const_ptr_sub_ptr)]
142-
#![feature(const_replace)]
143-
#![feature(const_result_drop)]
144147
#![feature(const_ptr_as_ref)]
145148
#![feature(const_ptr_is_null)]
146149
#![feature(const_ptr_read)]
150+
#![feature(const_ptr_sub_ptr)]
147151
#![feature(const_ptr_write)]
148152
#![feature(const_raw_ptr_comparison)]
153+
#![feature(const_replace)]
154+
#![feature(const_result_drop)]
149155
#![feature(const_size_of_val)]
150156
#![feature(const_size_of_val_raw)]
151157
#![feature(const_slice_from_raw_parts_mut)]
158+
#![feature(const_slice_from_ref)]
159+
#![feature(const_slice_index)]
152160
#![feature(const_slice_ptr_len)]
153161
#![feature(const_slice_split_at_mut)]
154162
#![feature(const_str_from_utf8_unchecked_mut)]
155163
#![feature(const_swap)]
156164
#![feature(const_trait_impl)]
165+
#![feature(const_transmute_copy)]
157166
#![feature(const_try)]
158167
#![feature(const_type_id)]
159168
#![feature(const_type_name)]
160-
#![feature(const_default_impls)]
161169
#![feature(const_unicode_case_lookup)]
162170
#![feature(const_unsafecell_get_mut)]
163171
#![feature(const_waker)]
164172
#![feature(core_panic)]
165-
#![feature(char_indices_offset)]
166173
#![feature(duration_consts_float)]
174+
#![feature(ip)]
175+
#![feature(is_ascii_octdigit)]
167176
#![feature(maybe_uninit_uninit_array)]
168177
#![feature(ptr_alignment_type)]
169178
#![feature(ptr_metadata)]
170179
#![feature(set_ptr_value)]
171180
#![feature(slice_ptr_get)]
172181
#![feature(slice_split_at_unchecked)]
173182
#![feature(str_internals)]
174-
#![feature(str_split_remainder)]
175183
#![feature(str_split_inclusive_remainder)]
184+
#![feature(str_split_remainder)]
176185
#![feature(strict_provenance)]
177186
#![feature(utf16_extra)]
178187
#![feature(utf16_extra_const)]
179188
#![feature(variant_count)]
180-
#![feature(const_array_from_ref)]
181-
#![feature(const_slice_from_ref)]
182-
#![feature(const_slice_index)]
183-
#![feature(const_is_char_boundary)]
184-
#![feature(const_cstr_methods)]
185-
#![feature(ip)]
186-
#![feature(is_ascii_octdigit)]
189+
// tidy-alphabetical-end
187190
//
188191
// Language features:
192+
// tidy-alphabetical-start
189193
#![feature(abi_unadjusted)]
190194
#![feature(adt_const_params)]
191195
#![feature(allow_internal_unsafe)]
192196
#![feature(allow_internal_unstable)]
197+
#![feature(asm_const)]
193198
#![feature(associated_type_bounds)]
194199
#![feature(auto_traits)]
195200
#![feature(c_unwind)]
@@ -206,13 +211,12 @@
206211
#![feature(deprecated_suggestion)]
207212
#![feature(derive_const)]
208213
#![feature(doc_cfg)]
214+
#![feature(doc_cfg_hide)]
209215
#![feature(doc_notable_trait)]
210-
#![feature(generic_arg_infer)]
211-
#![feature(rustdoc_internals)]
212216
#![feature(exhaustive_patterns)]
213-
#![feature(doc_cfg_hide)]
214217
#![feature(extern_types)]
215218
#![feature(fundamental)]
219+
#![feature(generic_arg_infer)]
216220
#![feature(if_let_guard)]
217221
#![feature(inline_const)]
218222
#![feature(intra_doc_pointers)]
@@ -221,6 +225,7 @@
221225
#![feature(link_llvm_intrinsics)]
222226
#![feature(macro_metavar_expr)]
223227
#![feature(min_specialization)]
228+
#![feature(multiple_supertrait_upcastable)]
224229
#![feature(must_not_suspend)]
225230
#![feature(negative_impls)]
226231
#![feature(never_type)]
@@ -231,6 +236,7 @@
231236
#![feature(repr_simd)]
232237
#![feature(rustc_allow_const_fn_unstable)]
233238
#![feature(rustc_attrs)]
239+
#![feature(rustdoc_internals)]
234240
#![feature(simd_ffi)]
235241
#![feature(staged_api)]
236242
#![feature(stmt_expr_attributes)]
@@ -240,11 +246,10 @@
240246
#![feature(try_blocks)]
241247
#![feature(unboxed_closures)]
242248
#![feature(unsized_fn_params)]
243-
#![feature(asm_const)]
244-
#![feature(const_transmute_copy)]
245-
#![feature(multiple_supertrait_upcastable)]
249+
// tidy-alphabetical-end
246250
//
247251
// Target features:
252+
// tidy-alphabetical-start
248253
#![feature(arm_target_feature)]
249254
#![feature(avx512_target_feature)]
250255
#![feature(hexagon_target_feature)]
@@ -255,6 +260,7 @@
255260
#![feature(sse4a_target_feature)]
256261
#![feature(tbm_target_feature)]
257262
#![feature(wasm_target_feature)]
263+
// tidy-alphabetical-end
258264

259265
// allow using `core::` in intra-doc links
260266
#[allow(unused_extern_crates)]

library/std/src/collections/mod.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,8 @@
172172
//!
173173
//! ## Iterators
174174
//!
175-
//! Iterators are a powerful and robust mechanism used throughout Rust's
175+
//! [Iterators][crate::iter]
176+
//! are a powerful and robust mechanism used throughout Rust's
176177
//! standard libraries. Iterators provide a sequence of values in a generic,
177178
//! safe, efficient and convenient way. The contents of an iterator are usually
178179
//! *lazily* evaluated, so that only the values that are actually needed are
@@ -252,7 +253,9 @@
252253
//!
253254
//! Several other collection methods also return iterators to yield a sequence
254255
//! of results but avoid allocating an entire collection to store the result in.
255-
//! This provides maximum flexibility as `collect` or `extend` can be called to
256+
//! This provides maximum flexibility as
257+
//! [`collect`][crate::iter::Iterator::collect] or
258+
//! [`extend`][crate::iter::Extend::extend] can be called to
256259
//! "pipe" the sequence into any collection if desired. Otherwise, the sequence
257260
//! can be looped over with a `for` loop. The iterator can also be discarded
258261
//! after partial use, preventing the computation of the unused items.

0 commit comments

Comments
 (0)