diff options
| author | bors <bors@rust-lang.org> | 2019-12-06 15:11:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-12-06 15:11:35 +0000 |
| commit | 9630dbbc3caca60f2482e6eae8904aa6bda54f93 (patch) | |
| tree | 5deec471683d621f91208385425acc4a6b04713c /src/libstd | |
| parent | d0126e8ed3cc0d6fcb9dd44c36a46f9ce65010a0 (diff) | |
| parent | 931be6c3bccc38be9052433c321f11da033c57c5 (diff) | |
| download | rust-9630dbbc3caca60f2482e6eae8904aa6bda54f93.tar.gz rust-9630dbbc3caca60f2482e6eae8904aa6bda54f93.zip | |
Auto merge of #67091 - JohnTitor:rollup-kitphze, r=JohnTitor
Rollup of 11 pull requests
Successful merges:
- #66846 (Make try_mark_previous_green aware of cycles.)
- #66959 (Remove potential cfgs duplicates)
- #66988 (Fix angle bracket formatting when dumping MIR debug vars)
- #66998 (Modified the testcases for VxWorks)
- #67008 (rustdoc: Add test for fixed issue)
- #67023 (SGX: Fix target linker used by bootstrap)
- #67033 (Migrate to LLVM{Get,Set}ValueName2)
- #67049 (Simplify {IoSlice, IoSliceMut}::advance examples and tests)
- #67054 (codegen "unreachable" for invalid SetDiscriminant)
- #67081 (Fix Query type docs)
- #67085 (Remove boxed closures in address parser.)
Failed merges:
r? @ghost
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/fs.rs | 11 | ||||
| -rw-r--r-- | src/libstd/io/mod.rs | 55 | ||||
| -rw-r--r-- | src/libstd/net/parser.rs | 23 |
3 files changed, 39 insertions, 50 deletions
diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs index e5cf022f044..a109e38e1e3 100644 --- a/src/libstd/fs.rs +++ b/src/libstd/fs.rs @@ -2339,8 +2339,10 @@ mod tests { let filename = &tmpdir.join("file_that_does_not_exist.txt"); let result = File::open(filename); - #[cfg(unix)] + #[cfg(all(unix, not(target_os = "vxworks")))] error!(result, "No such file or directory"); + #[cfg(target_os = "vxworks")] + error!(result, "no such file or directory"); #[cfg(windows)] error!(result, 2); // ERROR_FILE_NOT_FOUND } @@ -2352,8 +2354,10 @@ mod tests { let result = fs::remove_file(filename); - #[cfg(unix)] + #[cfg(all(unix, not(target_os = "vxworks")))] error!(result, "No such file or directory"); + #[cfg(target_os = "vxworks")] + error!(result, "no such file or directory"); #[cfg(windows)] error!(result, 2); // ERROR_FILE_NOT_FOUND } @@ -2553,7 +2557,10 @@ mod tests { check!(fs::set_permissions(filename, fs::Permissions::from_mode(0o1777))); let metadata1 = check!(fs::metadata(filename)); + #[cfg(all(unix, not(target_os = "vxworks")))] assert_eq!(mask & metadata1.permissions().mode(), 0o1777); + #[cfg(target_os = "vxworks")] + assert_eq!(mask & metadata1.permissions().mode(), 0o0777); } #[test] diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 20c1c5cd1b8..a1a33bade0d 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -987,7 +987,6 @@ impl<'a> IoSliceMut<'a> { /// #![feature(io_slice_advance)] /// /// use std::io::IoSliceMut; - /// use std::mem; /// use std::ops::Deref; /// /// let mut buf1 = [1; 8]; @@ -1000,7 +999,7 @@ impl<'a> IoSliceMut<'a> { /// ][..]; /// /// // Mark 10 bytes as read. - /// bufs = IoSliceMut::advance(mem::replace(&mut bufs, &mut []), 10); + /// bufs = IoSliceMut::advance(bufs, 10); /// assert_eq!(bufs[0].deref(), [2; 14].as_ref()); /// assert_eq!(bufs[1].deref(), [3; 8].as_ref()); /// ``` @@ -1090,20 +1089,19 @@ impl<'a> IoSlice<'a> { /// #![feature(io_slice_advance)] /// /// use std::io::IoSlice; - /// use std::mem; /// use std::ops::Deref; /// - /// let mut buf1 = [1; 8]; - /// let mut buf2 = [2; 16]; - /// let mut buf3 = [3; 8]; + /// let buf1 = [1; 8]; + /// let buf2 = [2; 16]; + /// let buf3 = [3; 8]; /// let mut bufs = &mut [ - /// IoSlice::new(&mut buf1), - /// IoSlice::new(&mut buf2), - /// IoSlice::new(&mut buf3), + /// IoSlice::new(&buf1), + /// IoSlice::new(&buf2), + /// IoSlice::new(&buf3), /// ][..]; /// /// // Mark 10 bytes as written. - /// bufs = IoSlice::advance(mem::replace(&mut bufs, &mut []), 10); + /// bufs = IoSlice::advance(bufs, 10); /// assert_eq!(bufs[0].deref(), [2; 14].as_ref()); /// assert_eq!(bufs[1].deref(), [3; 8].as_ref()); #[unstable(feature = "io_slice_advance", issue = "62726")] @@ -2415,7 +2413,6 @@ mod tests { use crate::cmp; use crate::io::prelude::*; use crate::io::{self, IoSlice, IoSliceMut}; - use crate::mem; use crate::ops::Deref; #[test] @@ -2731,26 +2728,26 @@ mod tests { ][..]; // Only in a single buffer.. - bufs = IoSliceMut::advance(mem::replace(&mut bufs, &mut []), 1); + bufs = IoSliceMut::advance(bufs, 1); assert_eq!(bufs[0].deref(), [1; 7].as_ref()); assert_eq!(bufs[1].deref(), [2; 16].as_ref()); assert_eq!(bufs[2].deref(), [3; 8].as_ref()); // Removing a buffer, leaving others as is. - bufs = IoSliceMut::advance(mem::replace(&mut bufs, &mut []), 7); + bufs = IoSliceMut::advance(bufs, 7); assert_eq!(bufs[0].deref(), [2; 16].as_ref()); assert_eq!(bufs[1].deref(), [3; 8].as_ref()); // Removing a buffer and removing from the next buffer. - bufs = IoSliceMut::advance(mem::replace(&mut bufs, &mut []), 18); + bufs = IoSliceMut::advance(bufs, 18); assert_eq!(bufs[0].deref(), [3; 6].as_ref()); } #[test] fn io_slice_mut_advance_empty_slice() { - let mut empty_bufs = &mut [][..]; + let empty_bufs = &mut [][..]; // Shouldn't panic. - IoSliceMut::advance(&mut empty_bufs, 1); + IoSliceMut::advance(empty_bufs, 1); } #[test] @@ -2759,48 +2756,48 @@ mod tests { let mut bufs = &mut [IoSliceMut::new(&mut buf1)][..]; // Going beyond the total length should be ok. - bufs = IoSliceMut::advance(mem::replace(&mut bufs, &mut []), 9); + bufs = IoSliceMut::advance(bufs, 9); assert!(bufs.is_empty()); } #[test] fn io_slice_advance() { - let mut buf1 = [1; 8]; - let mut buf2 = [2; 16]; - let mut buf3 = [3; 8]; + let buf1 = [1; 8]; + let buf2 = [2; 16]; + let buf3 = [3; 8]; let mut bufs = - &mut [IoSlice::new(&mut buf1), IoSlice::new(&mut buf2), IoSlice::new(&mut buf3)][..]; + &mut [IoSlice::new(&buf1), IoSlice::new(&buf2), IoSlice::new(&buf3)][..]; // Only in a single buffer.. - bufs = IoSlice::advance(mem::replace(&mut bufs, &mut []), 1); + bufs = IoSlice::advance(bufs, 1); assert_eq!(bufs[0].deref(), [1; 7].as_ref()); assert_eq!(bufs[1].deref(), [2; 16].as_ref()); assert_eq!(bufs[2].deref(), [3; 8].as_ref()); // Removing a buffer, leaving others as is. - bufs = IoSlice::advance(mem::replace(&mut bufs, &mut []), 7); + bufs = IoSlice::advance(bufs, 7); assert_eq!(bufs[0].deref(), [2; 16].as_ref()); assert_eq!(bufs[1].deref(), [3; 8].as_ref()); // Removing a buffer and removing from the next buffer. - bufs = IoSlice::advance(mem::replace(&mut bufs, &mut []), 18); + bufs = IoSlice::advance(bufs, 18); assert_eq!(bufs[0].deref(), [3; 6].as_ref()); } #[test] fn io_slice_advance_empty_slice() { - let mut empty_bufs = &mut [][..]; + let empty_bufs = &mut [][..]; // Shouldn't panic. - IoSlice::advance(&mut empty_bufs, 1); + IoSlice::advance(empty_bufs, 1); } #[test] fn io_slice_advance_beyond_total_length() { - let mut buf1 = [1; 8]; - let mut bufs = &mut [IoSlice::new(&mut buf1)][..]; + let buf1 = [1; 8]; + let mut bufs = &mut [IoSlice::new(&buf1)][..]; // Going beyond the total length should be ok. - bufs = IoSlice::advance(mem::replace(&mut bufs, &mut []), 9); + bufs = IoSlice::advance(bufs, 9); assert!(bufs.is_empty()); } } diff --git a/src/libstd/net/parser.rs b/src/libstd/net/parser.rs index 8106d1c3315..686fa8c61a1 100644 --- a/src/libstd/net/parser.rs +++ b/src/libstd/net/parser.rs @@ -44,19 +44,6 @@ impl<'a> Parser<'a> { self.read_atomically(move |p| cb(p).filter(|_| p.is_eof())) } - // Return result of first successful parser - fn read_or<T>( - &mut self, - parsers: &mut [Box<dyn FnMut(&mut Parser<'_>) -> Option<T> + 'static>], - ) -> Option<T> { - for pf in parsers { - if let Some(r) = self.read_atomically(|p: &mut Parser<'_>| pf(p)) { - return Some(r); - } - } - None - } - // Apply 3 parsers sequentially fn read_seq_3<A, B, C, PA, PB, PC>(&mut self, pa: PA, pb: PB, pc: PC) -> Option<(A, B, C)> where @@ -235,9 +222,8 @@ impl<'a> Parser<'a> { } fn read_ip_addr(&mut self) -> Option<IpAddr> { - let ipv4_addr = |p: &mut Parser<'_>| p.read_ipv4_addr().map(IpAddr::V4); - let ipv6_addr = |p: &mut Parser<'_>| p.read_ipv6_addr().map(IpAddr::V6); - self.read_or(&mut [Box::new(ipv4_addr), Box::new(ipv6_addr)]) + self.read_ipv4_addr().map(IpAddr::V4) + .or_else(|| self.read_ipv6_addr().map(IpAddr::V6)) } fn read_socket_addr_v4(&mut self) -> Option<SocketAddrV4> { @@ -268,9 +254,8 @@ impl<'a> Parser<'a> { } fn read_socket_addr(&mut self) -> Option<SocketAddr> { - let v4 = |p: &mut Parser<'_>| p.read_socket_addr_v4().map(SocketAddr::V4); - let v6 = |p: &mut Parser<'_>| p.read_socket_addr_v6().map(SocketAddr::V6); - self.read_or(&mut [Box::new(v4), Box::new(v6)]) + self.read_socket_addr_v4().map(SocketAddr::V4) + .or_else(|| self.read_socket_addr_v6().map(SocketAddr::V6)) } } |
