Skip to content

Commit d6ddee6

Browse files
committed
Auto merge of rust-lang#111066 - matthiaskrgr:rollup-4k6rj23, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - rust-lang#109540 (std docs: edit `PathBuf::set_file_name` example) - rust-lang#110093 (Add 64-bit `time_t` support on 32-bit glibc Linux to `set_times`) - rust-lang#110987 (update wasi_clock_time_api ref.) - rust-lang#111038 (Leave promoteds untainted by errors when borrowck fails) - rust-lang#111042 (Add `#[no_coverage]` to the test harness's `fn main`) - rust-lang#111057 (Make sure the implementation of TcpStream::as_raw_fd is fully inlined) - rust-lang#111065 (Explicitly document how Send and Sync relate to references) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents dbba594 + 15eebac commit d6ddee6

File tree

37 files changed

+180
-16
lines changed

37 files changed

+180
-16
lines changed

compiler/rustc_builtin_macros/src/test_harness.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ fn generate_test_harness(
232232
let expn_id = ext_cx.resolver.expansion_for_ast_pass(
233233
DUMMY_SP,
234234
AstPass::TestHarness,
235-
&[sym::test, sym::rustc_attrs],
235+
&[sym::test, sym::rustc_attrs, sym::no_coverage],
236236
None,
237237
);
238238
let def_site = DUMMY_SP.with_def_site_ctxt(expn_id.to_expn_id());
@@ -313,6 +313,8 @@ fn mk_main(cx: &mut TestCtxt<'_>) -> P<ast::Item> {
313313

314314
// #[rustc_main]
315315
let main_attr = ecx.attr_word(sym::rustc_main, sp);
316+
// #[no_coverage]
317+
let no_coverage_attr = ecx.attr_word(sym::no_coverage, sp);
316318

317319
// pub fn main() { ... }
318320
let main_ret_ty = ecx.ty(sp, ast::TyKind::Tup(ThinVec::new()));
@@ -342,7 +344,7 @@ fn mk_main(cx: &mut TestCtxt<'_>) -> P<ast::Item> {
342344

343345
let main = P(ast::Item {
344346
ident: main_id,
345-
attrs: thin_vec![main_attr],
347+
attrs: thin_vec![main_attr, no_coverage_attr],
346348
id: ast::DUMMY_NODE_ID,
347349
kind: main,
348350
vis: ast::Visibility { span: sp, kind: ast::VisibilityKind::Public, tokens: None },

compiler/rustc_mir_transform/src/lib.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -616,13 +616,10 @@ fn promoted_mir(tcx: TyCtxt<'_>, def: LocalDefId) -> &IndexVec<Promoted, Body<'_
616616
return tcx.arena.alloc(IndexVec::new());
617617
}
618618

619-
let tainted_by_errors = tcx.mir_borrowck(def).tainted_by_errors;
619+
tcx.ensure_with_value().mir_borrowck(def);
620620
let mut promoted = tcx.mir_promoted(def).1.steal();
621621

622622
for body in &mut promoted {
623-
if let Some(error_reported) = tainted_by_errors {
624-
body.tainted_by_errors = Some(error_reported);
625-
}
626623
run_analysis_to_runtime_passes(tcx, body);
627624
}
628625

library/core/src/marker.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use crate::hash::Hasher;
2424
/// operations. Its cousin [`sync::Arc`][arc] does use atomic operations (incurring
2525
/// some overhead) and thus is `Send`.
2626
///
27-
/// See [the Nomicon](../../nomicon/send-and-sync.html) for more details.
27+
/// See [the Nomicon](../../nomicon/send-and-sync.html) and the [`Sync`] trait for more details.
2828
///
2929
/// [`Rc`]: ../../std/rc/struct.Rc.html
3030
/// [arc]: ../../std/sync/struct.Arc.html
@@ -426,6 +426,11 @@ pub macro Copy($item:item) {
426426
/// becomes read-only, as if it were a `& &T`. Hence there is no risk
427427
/// of a data race.
428428
///
429+
/// A shorter overview of how [`Sync`] and [`Send`] relate to referencing:
430+
/// * `&T` is [`Send`] if and only if `T` is [`Sync`]
431+
/// * `&mut T` is [`Send`] if and only if `T` is [`Send`]
432+
/// * `&T` and `&mut T` are [`Sync`] if and only if `T` is [`Sync`]
433+
///
429434
/// Types that are not `Sync` are those that have "interior
430435
/// mutability" in a non-thread-safe form, such as [`Cell`][cell]
431436
/// and [`RefCell`][refcell]. These types allow for mutation of

library/std/src/fs.rs

+8
Original file line numberDiff line numberDiff line change
@@ -709,6 +709,7 @@ impl File {
709709
// `AsRawHandle`/`IntoRawHandle`/`FromRawHandle` on Windows.
710710

711711
impl AsInner<fs_imp::File> for File {
712+
#[inline]
712713
fn as_inner(&self) -> &fs_imp::File {
713714
&self.inner
714715
}
@@ -1087,12 +1088,14 @@ impl OpenOptions {
10871088
}
10881089

10891090
impl AsInner<fs_imp::OpenOptions> for OpenOptions {
1091+
#[inline]
10901092
fn as_inner(&self) -> &fs_imp::OpenOptions {
10911093
&self.0
10921094
}
10931095
}
10941096

10951097
impl AsInnerMut<fs_imp::OpenOptions> for OpenOptions {
1098+
#[inline]
10961099
fn as_inner_mut(&mut self) -> &mut fs_imp::OpenOptions {
10971100
&mut self.0
10981101
}
@@ -1352,6 +1355,7 @@ impl fmt::Debug for Metadata {
13521355
}
13531356

13541357
impl AsInner<fs_imp::FileAttr> for Metadata {
1358+
#[inline]
13551359
fn as_inner(&self) -> &fs_imp::FileAttr {
13561360
&self.0
13571361
}
@@ -1604,6 +1608,7 @@ impl FileType {
16041608
}
16051609

16061610
impl AsInner<fs_imp::FileType> for FileType {
1611+
#[inline]
16071612
fn as_inner(&self) -> &fs_imp::FileType {
16081613
&self.0
16091614
}
@@ -1616,6 +1621,7 @@ impl FromInner<fs_imp::FilePermissions> for Permissions {
16161621
}
16171622

16181623
impl AsInner<fs_imp::FilePermissions> for Permissions {
1624+
#[inline]
16191625
fn as_inner(&self) -> &fs_imp::FilePermissions {
16201626
&self.0
16211627
}
@@ -1770,6 +1776,7 @@ impl fmt::Debug for DirEntry {
17701776
}
17711777

17721778
impl AsInner<fs_imp::DirEntry> for DirEntry {
1779+
#[inline]
17731780
fn as_inner(&self) -> &fs_imp::DirEntry {
17741781
&self.0
17751782
}
@@ -2510,6 +2517,7 @@ impl DirBuilder {
25102517
}
25112518

25122519
impl AsInnerMut<fs_imp::DirBuilder> for DirBuilder {
2520+
#[inline]
25132521
fn as_inner_mut(&mut self) -> &mut fs_imp::DirBuilder {
25142522
&mut self.inner
25152523
}

library/std/src/net/tcp.rs

+2
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,7 @@ impl Write for &TcpStream {
691691
}
692692

693693
impl AsInner<net_imp::TcpStream> for TcpStream {
694+
#[inline]
694695
fn as_inner(&self) -> &net_imp::TcpStream {
695696
&self.0
696697
}
@@ -1033,6 +1034,7 @@ impl Iterator for IntoIncoming {
10331034
impl FusedIterator for IntoIncoming {}
10341035

10351036
impl AsInner<net_imp::TcpListener> for TcpListener {
1037+
#[inline]
10361038
fn as_inner(&self) -> &net_imp::TcpListener {
10371039
&self.0
10381040
}

library/std/src/net/udp.rs

+1
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,7 @@ impl UdpSocket {
788788
// `AsRawSocket`/`IntoRawSocket`/`FromRawSocket` on Windows.
789789

790790
impl AsInner<net_imp::UdpSocket> for UdpSocket {
791+
#[inline]
791792
fn as_inner(&self) -> &net_imp::UdpSocket {
792793
&self.0
793794
}

library/std/src/os/linux/process.rs

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ pub struct PidFd {
5252
}
5353

5454
impl AsInner<FileDesc> for PidFd {
55+
#[inline]
5556
fn as_inner(&self) -> &FileDesc {
5657
&self.inner
5758
}
@@ -70,6 +71,7 @@ impl IntoInner<FileDesc> for PidFd {
7071
}
7172

7273
impl AsRawFd for PidFd {
74+
#[inline]
7375
fn as_raw_fd(&self) -> RawFd {
7476
self.as_inner().as_raw_fd()
7577
}

library/std/src/path.rs

+11-5
Original file line numberDiff line numberDiff line change
@@ -1395,11 +1395,16 @@ impl PathBuf {
13951395
///
13961396
/// let mut buf = PathBuf::from("/");
13971397
/// assert!(buf.file_name() == None);
1398-
/// buf.set_file_name("bar");
1399-
/// assert!(buf == PathBuf::from("/bar"));
1398+
///
1399+
/// buf.set_file_name("foo.txt");
1400+
/// assert!(buf == PathBuf::from("/foo.txt"));
14001401
/// assert!(buf.file_name().is_some());
1401-
/// buf.set_file_name("baz.txt");
1402-
/// assert!(buf == PathBuf::from("/baz.txt"));
1402+
///
1403+
/// buf.set_file_name("bar.txt");
1404+
/// assert!(buf == PathBuf::from("/bar.txt"));
1405+
///
1406+
/// buf.set_file_name("baz");
1407+
/// assert!(buf == PathBuf::from("/baz"));
14031408
/// ```
14041409
#[stable(feature = "rust1", since = "1.0.0")]
14051410
pub fn set_file_name<S: AsRef<OsStr>>(&mut self, file_name: S) {
@@ -2562,7 +2567,8 @@ impl Path {
25622567
/// ```
25632568
/// use std::path::{Path, PathBuf};
25642569
///
2565-
/// let path = Path::new("/tmp/foo.txt");
2570+
/// let path = Path::new("/tmp/foo.png");
2571+
/// assert_eq!(path.with_file_name("bar"), PathBuf::from("/tmp/bar"));
25662572
/// assert_eq!(path.with_file_name("bar.txt"), PathBuf::from("/tmp/bar.txt"));
25672573
///
25682574
/// let path = Path::new("/tmp");

library/std/src/process.rs

+8
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ pub struct Child {
211211
impl crate::sealed::Sealed for Child {}
212212

213213
impl AsInner<imp::Process> for Child {
214+
#[inline]
214215
fn as_inner(&self) -> &imp::Process {
215216
&self.handle
216217
}
@@ -304,6 +305,7 @@ impl Write for &ChildStdin {
304305
}
305306

306307
impl AsInner<AnonPipe> for ChildStdin {
308+
#[inline]
307309
fn as_inner(&self) -> &AnonPipe {
308310
&self.inner
309311
}
@@ -373,6 +375,7 @@ impl Read for ChildStdout {
373375
}
374376

375377
impl AsInner<AnonPipe> for ChildStdout {
378+
#[inline]
376379
fn as_inner(&self) -> &AnonPipe {
377380
&self.inner
378381
}
@@ -438,6 +441,7 @@ impl Read for ChildStderr {
438441
}
439442

440443
impl AsInner<AnonPipe> for ChildStderr {
444+
#[inline]
441445
fn as_inner(&self) -> &AnonPipe {
442446
&self.inner
443447
}
@@ -1107,12 +1111,14 @@ impl fmt::Debug for Command {
11071111
}
11081112

11091113
impl AsInner<imp::Command> for Command {
1114+
#[inline]
11101115
fn as_inner(&self) -> &imp::Command {
11111116
&self.inner
11121117
}
11131118
}
11141119

11151120
impl AsInnerMut<imp::Command> for Command {
1121+
#[inline]
11161122
fn as_inner_mut(&mut self) -> &mut imp::Command {
11171123
&mut self.inner
11181124
}
@@ -1605,6 +1611,7 @@ impl ExitStatus {
16051611
}
16061612

16071613
impl AsInner<imp::ExitStatus> for ExitStatus {
1614+
#[inline]
16081615
fn as_inner(&self) -> &imp::ExitStatus {
16091616
&self.0
16101617
}
@@ -1884,6 +1891,7 @@ impl From<u8> for ExitCode {
18841891
}
18851892

18861893
impl AsInner<imp::ExitCode> for ExitCode {
1894+
#[inline]
18871895
fn as_inner(&self) -> &imp::ExitCode {
18881896
&self.0
18891897
}

library/std/src/sys/hermit/fd.rs

+1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ impl FromRawFd for FileDesc {
7575
}
7676

7777
impl AsInner<OwnedFd> for FileDesc {
78+
#[inline]
7879
fn as_inner(&self) -> &OwnedFd {
7980
&self.fd
8081
}

library/std/src/sys/hermit/fs.rs

+3
Original file line numberDiff line numberDiff line change
@@ -367,12 +367,14 @@ impl DirBuilder {
367367
}
368368

369369
impl AsInner<FileDesc> for File {
370+
#[inline]
370371
fn as_inner(&self) -> &FileDesc {
371372
&self.0
372373
}
373374
}
374375

375376
impl AsInnerMut<FileDesc> for File {
377+
#[inline]
376378
fn as_inner_mut(&mut self) -> &mut FileDesc {
377379
&mut self.0
378380
}
@@ -397,6 +399,7 @@ impl AsFd for File {
397399
}
398400

399401
impl AsRawFd for File {
402+
#[inline]
400403
fn as_raw_fd(&self) -> RawFd {
401404
self.0.as_raw_fd()
402405
}

library/std/src/sys/hermit/net.rs

+2
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,7 @@ impl Socket {
340340
}
341341

342342
impl AsInner<FileDesc> for Socket {
343+
#[inline]
343344
fn as_inner(&self) -> &FileDesc {
344345
&self.0
345346
}
@@ -364,6 +365,7 @@ impl AsFd for Socket {
364365
}
365366

366367
impl AsRawFd for Socket {
368+
#[inline]
367369
fn as_raw_fd(&self) -> RawFd {
368370
self.0.as_raw_fd()
369371
}

library/std/src/sys/sgx/fd.rs

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ impl FileDesc {
6262
}
6363

6464
impl AsInner<Fd> for FileDesc {
65+
#[inline]
6566
fn as_inner(&self) -> &Fd {
6667
&self.fd
6768
}

library/std/src/sys/sgx/net.rs

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ impl Socket {
2424
}
2525

2626
impl AsInner<FileDesc> for Socket {
27+
#[inline]
2728
fn as_inner(&self) -> &FileDesc {
2829
&self.inner
2930
}
@@ -220,6 +221,7 @@ impl TcpStream {
220221
}
221222

222223
impl AsInner<Socket> for TcpStream {
224+
#[inline]
223225
fn as_inner(&self) -> &Socket {
224226
&self.inner
225227
}
@@ -304,6 +306,7 @@ impl TcpListener {
304306
}
305307

306308
impl AsInner<Socket> for TcpListener {
309+
#[inline]
307310
fn as_inner(&self) -> &Socket {
308311
&self.inner
309312
}

library/std/src/sys/solid/net.rs

+2
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ impl FileDesc {
112112
}
113113

114114
impl AsInner<c_int> for FileDesc {
115+
#[inline]
115116
fn as_inner(&self) -> &c_int {
116117
&self.fd
117118
}
@@ -462,6 +463,7 @@ impl Socket {
462463
}
463464

464465
impl AsInner<c_int> for Socket {
466+
#[inline]
465467
fn as_inner(&self) -> &c_int {
466468
self.0.as_inner()
467469
}

library/std/src/sys/unix/fd.rs

+2
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@ impl<'a> Read for &'a FileDesc {
481481
}
482482

483483
impl AsInner<OwnedFd> for FileDesc {
484+
#[inline]
484485
fn as_inner(&self) -> &OwnedFd {
485486
&self.0
486487
}
@@ -505,6 +506,7 @@ impl AsFd for FileDesc {
505506
}
506507

507508
impl AsRawFd for FileDesc {
509+
#[inline]
508510
fn as_raw_fd(&self) -> RawFd {
509511
self.0.as_raw_fd()
510512
}

0 commit comments

Comments
 (0)