diff options
| author | bors <bors@rust-lang.org> | 2017-07-15 14:51:02 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-07-15 14:51:02 +0000 |
| commit | a783fe2f77dfc69bdfbee539488403ff8883fd25 (patch) | |
| tree | 2f2b941613ea1aa7b2d62977052c3504f89398f7 /src | |
| parent | c4373bd6a29e4f68becfb0874f3199b8b0c2d482 (diff) | |
| parent | e3825ecd4c4e79eff77cb0c2ed51447a8a344ce0 (diff) | |
| download | rust-a783fe2f77dfc69bdfbee539488403ff8883fd25.tar.gz rust-a783fe2f77dfc69bdfbee539488403ff8883fd25.zip | |
Auto merge of #43246 - frewsxcv:rollup, r=frewsxcv
Rollup of 8 pull requests - Successful merges: #43074, #43145, #43159, #43202, #43222, #43228, #43229, #43240 - Failed merges:
Diffstat (limited to 'src')
| -rw-r--r-- | src/bootstrap/step.rs | 11 | ||||
| m--------- | src/doc/book | 0 | ||||
| m--------- | src/doc/nomicon | 0 | ||||
| m--------- | src/doc/reference | 0 | ||||
| -rw-r--r-- | src/libcore/iter/mod.rs | 8 | ||||
| -rw-r--r-- | src/libcore/ptr.rs | 5 | ||||
| -rw-r--r-- | src/libcore/str/mod.rs | 38 | ||||
| -rw-r--r-- | src/libstd/path.rs | 20 | ||||
| -rw-r--r-- | src/libstd/sys/redox/backtrace.rs | 15 | ||||
| -rw-r--r-- | src/libstd/sys/redox/net/tcp.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys/windows/ext/fs.rs | 2 | ||||
| -rw-r--r-- | src/libstd/sys_common/mod.rs | 3 |
12 files changed, 86 insertions, 18 deletions
diff --git a/src/bootstrap/step.rs b/src/bootstrap/step.rs index c221d707683..5a1ef818ccf 100644 --- a/src/bootstrap/step.rs +++ b/src/bootstrap/step.rs @@ -28,6 +28,7 @@ use std::collections::{BTreeMap, HashSet, HashMap}; use std::mem; +use std::path::PathBuf; use std::process; use check::{self, TestKind}; @@ -1209,11 +1210,19 @@ invalid rule dependency graph detected, was a rule added and maybe typo'd? if paths.len() == 0 && rule.default { Some((rule, 0)) } else { - paths.iter().position(|path| path.ends_with(rule.path)) + paths.iter() + .position(|path| path.ends_with(rule.path)) .map(|priority| (rule, priority)) } }).collect(); + if rules.is_empty() && + !paths.get(0).unwrap_or(&PathBuf::new()) + .ends_with("nonexistent/path/to/trigger/cargo/metadata") { + println!("\nNothing to run...\n"); + process::exit(1); + } + rules.sort_by_key(|&(_, priority)| priority); rules.into_iter().flat_map(|(rule, _)| { diff --git a/src/doc/book b/src/doc/book -Subproject 325c3da0814f44916bef00ff225f934f2d61320 +Subproject 4ee596df22f8ecaa9a0b2ddc0624b0104540dbf diff --git a/src/doc/nomicon b/src/doc/nomicon -Subproject eee5ffb12773469bc02895d6b5e7e663b3a572a +Subproject 81134a4dff811403b3b2f349b0c59a819f0fe0c diff --git a/src/doc/reference b/src/doc/reference -Subproject 876582e9d0fbdc9cecb03133c28db96e9ff8c84 +Subproject 1abfbaa70313fdf527cf799ffd9b9a096a62105 diff --git a/src/libcore/iter/mod.rs b/src/libcore/iter/mod.rs index decd718d65e..79e6b11beac 100644 --- a/src/libcore/iter/mod.rs +++ b/src/libcore/iter/mod.rs @@ -359,11 +359,19 @@ impl<I> Iterator for Rev<I> where I: DoubleEndedIterator { #[inline] fn size_hint(&self) -> (usize, Option<usize>) { self.iter.size_hint() } + #[inline] fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where P: FnMut(&Self::Item) -> bool { self.iter.rfind(predicate) } + + #[inline] + fn rposition<P>(&mut self, predicate: P) -> Option<usize> where + P: FnMut(Self::Item) -> bool + { + self.iter.position(predicate) + } } #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/libcore/ptr.rs b/src/libcore/ptr.rs index 92470299366..4f118f58441 100644 --- a/src/libcore/ptr.rs +++ b/src/libcore/ptr.rs @@ -160,7 +160,10 @@ unsafe fn swap_nonoverlapping_bytes(x: *mut u8, y: *mut u8, len: usize) { // #[repr(simd)], even if we don't actually use this struct directly. // // FIXME repr(simd) broken on emscripten and redox - #[cfg_attr(not(any(target_os = "emscripten", target_os = "redox")), repr(simd))] + // It's also broken on big-endian powerpc64 and s390x. #42778 + #[cfg_attr(not(any(target_os = "emscripten", target_os = "redox", + target_endian = "big")), + repr(simd))] struct Block(u64, u64, u64, u64); struct UnalignedBlock(u64, u64, u64, u64); diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs index 624c3638df5..3862b4a2eb0 100644 --- a/src/libcore/str/mod.rs +++ b/src/libcore/str/mod.rs @@ -710,6 +710,37 @@ impl<'a> Iterator for Bytes<'a> { fn nth(&mut self, n: usize) -> Option<Self::Item> { self.0.nth(n) } + + #[inline] + fn all<F>(&mut self, f: F) -> bool where F: FnMut(Self::Item) -> bool { + self.0.all(f) + } + + #[inline] + fn any<F>(&mut self, f: F) -> bool where F: FnMut(Self::Item) -> bool { + self.0.any(f) + } + + #[inline] + fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where + P: FnMut(&Self::Item) -> bool + { + self.0.find(predicate) + } + + #[inline] + fn position<P>(&mut self, predicate: P) -> Option<usize> where + P: FnMut(Self::Item) -> bool + { + self.0.position(predicate) + } + + #[inline] + fn rposition<P>(&mut self, predicate: P) -> Option<usize> where + P: FnMut(Self::Item) -> bool + { + self.0.rposition(predicate) + } } #[stable(feature = "rust1", since = "1.0.0")] @@ -718,6 +749,13 @@ impl<'a> DoubleEndedIterator for Bytes<'a> { fn next_back(&mut self) -> Option<u8> { self.0.next_back() } + + #[inline] + fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item> where + P: FnMut(&Self::Item) -> bool + { + self.0.rfind(predicate) + } } #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/libstd/path.rs b/src/libstd/path.rs index 3f466d5031e..432605cf3b2 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -135,12 +135,12 @@ use sys::path::{is_sep_byte, is_verbatim_sep, MAIN_SEP_STR, parse_prefix}; /// get_path_prefix(r"\\?\pictures\kittens")); /// assert_eq!(VerbatimUNC(OsStr::new("server"), OsStr::new("share")), /// get_path_prefix(r"\\?\UNC\server\share")); -/// assert_eq!(VerbatimDisk('C' as u8), get_path_prefix(r"\\?\c:\")); +/// assert_eq!(VerbatimDisk(b'C'), get_path_prefix(r"\\?\c:\")); /// assert_eq!(DeviceNS(OsStr::new("BrainInterface")), /// get_path_prefix(r"\\.\BrainInterface")); /// assert_eq!(UNC(OsStr::new("server"), OsStr::new("share")), /// get_path_prefix(r"\\server\share")); -/// assert_eq!(Disk('C' as u8), get_path_prefix(r"C:\Users\Rust\Pictures\Ferris")); +/// assert_eq!(Disk(b'C'), get_path_prefix(r"C:\Users\Rust\Pictures\Ferris")); /// # } /// ``` #[derive(Copy, Clone, Debug, Hash, PartialOrd, Ord, PartialEq, Eq)] @@ -235,10 +235,10 @@ impl<'a> Prefix<'a> { /// /// assert!(Verbatim(OsStr::new("pictures")).is_verbatim()); /// assert!(VerbatimUNC(OsStr::new("server"), OsStr::new("share")).is_verbatim()); - /// assert!(VerbatimDisk('C' as u8).is_verbatim()); + /// assert!(VerbatimDisk(b'C').is_verbatim()); /// assert!(!DeviceNS(OsStr::new("BrainInterface")).is_verbatim()); /// assert!(!UNC(OsStr::new("server"), OsStr::new("share")).is_verbatim()); - /// assert!(!Disk('C' as u8).is_verbatim()); + /// assert!(!Disk(b'C').is_verbatim()); /// ``` #[inline] #[stable(feature = "rust1", since = "1.0.0")] @@ -401,7 +401,7 @@ enum State { /// let path = Path::new(r"c:\you\later\"); /// match path.components().next().unwrap() { /// Component::Prefix(prefix_component) => { -/// assert_eq!(Prefix::Disk('C' as u8), prefix_component.kind()); +/// assert_eq!(Prefix::Disk(b'C'), prefix_component.kind()); /// assert_eq!(OsStr::new("c:"), prefix_component.as_os_str()); /// } /// _ => unreachable!(), @@ -1040,7 +1040,7 @@ impl<'a> cmp::Ord for Components<'a> { /// [`Deref`]: ../ops/trait.Deref.html /// /// More details about the overall approach can be found in -/// the module documentation. +/// the [module documentation](index.html). /// /// # Examples /// @@ -1186,7 +1186,7 @@ impl PathBuf { self.inner.push(path); } - /// Truncate `self` to [`self.parent`]. + /// Truncates `self` to [`self.parent`]. /// /// Returns `false` and does nothing if [`self.file_name`] is [`None`]. /// Otherwise, returns `true`. @@ -1512,7 +1512,7 @@ impl AsRef<OsStr> for PathBuf { /// [`PathBuf`]: struct.PathBuf.html /// /// More details about the overall approach can be found in -/// the module documentation. +/// the [module documentation](index.html). /// /// # Examples /// @@ -1689,7 +1689,7 @@ impl Path { self.has_root() && (cfg!(unix) || cfg!(target_os = "redox") || self.prefix().is_some()) } - /// Return `false` if the `Path` is relative, i.e. not absolute. + /// Returns `true` if the `Path` is relative, i.e. not absolute. /// /// See [`is_absolute`]'s documentation for more details. /// @@ -2019,7 +2019,7 @@ impl Path { /// * Repeated separators are ignored, so `a/b` and `a//b` both have /// `a` and `b` as components. /// - /// * Occurentces of `.` are normalized away, exept if they are at the + /// * Occurences of `.` are normalized away, except if they are at the /// beginning of the path. For example, `a/./b`, `a/b/`, `a/b/.` and /// `a/b` all have `a` and `b` as components, but `./a/b` starts with /// an additional [`CurDir`] component. diff --git a/src/libstd/sys/redox/backtrace.rs b/src/libstd/sys/redox/backtrace.rs index 961148fb6b4..6cafe3e69ba 100644 --- a/src/libstd/sys/redox/backtrace.rs +++ b/src/libstd/sys/redox/backtrace.rs @@ -8,16 +8,25 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use libc; use io; use sys_common::backtrace::Frame; -pub use sys_common::gnu::libbacktrace::*; +pub use sys_common::gnu::libbacktrace::{foreach_symbol_fileline, resolve_symname}; pub struct BacktraceContext; #[inline(never)] -pub fn unwind_backtrace(frames: &mut [Frame]) +pub fn unwind_backtrace(_frames: &mut [Frame]) -> io::Result<(usize, BacktraceContext)> { Ok((0, BacktraceContext)) } + +pub mod gnu { + use io; + use fs; + use libc::c_char; + + pub fn get_executable_filename() -> io::Result<(Vec<c_char>, fs::File)> { + Err(io::Error::new(io::ErrorKind::Other, "Not implemented")) + } +} diff --git a/src/libstd/sys/redox/net/tcp.rs b/src/libstd/sys/redox/net/tcp.rs index 5d1067e4039..98ec3aa3e29 100644 --- a/src/libstd/sys/redox/net/tcp.rs +++ b/src/libstd/sys/redox/net/tcp.rs @@ -32,7 +32,7 @@ impl TcpStream { Ok(TcpStream(File::open(&Path::new(path.as_str()), &options)?)) } - pub fn connect_timeout(_addr: &SocketAddr, _timeout: Duration) -> Result<()> { + pub fn connect_timeout(_addr: &SocketAddr, _timeout: Duration) -> Result<TcpStream> { Err(Error::new(ErrorKind::Other, "TcpStream::connect_timeout not implemented")) } diff --git a/src/libstd/sys/windows/ext/fs.rs b/src/libstd/sys/windows/ext/fs.rs index 67348a00494..a1c63e33588 100644 --- a/src/libstd/sys/windows/ext/fs.rs +++ b/src/libstd/sys/windows/ext/fs.rs @@ -477,7 +477,7 @@ pub fn symlink_file<P: AsRef<Path>, Q: AsRef<Path>>(src: P, dst: Q) /// use std::os::windows::fs; /// /// # fn foo() -> std::io::Result<()> { -/// fs::symlink_file("a", "b")?; +/// fs::symlink_dir("a", "b")?; /// # Ok(()) /// # } /// ``` diff --git a/src/libstd/sys_common/mod.rs b/src/libstd/sys_common/mod.rs index d4d3365dc01..ccd4b91a7b7 100644 --- a/src/libstd/sys_common/mod.rs +++ b/src/libstd/sys_common/mod.rs @@ -52,7 +52,8 @@ pub mod net; #[cfg(feature = "backtrace")] #[cfg(any(all(unix, not(any(target_os = "macos", target_os = "ios", target_os = "emscripten"))), - all(windows, target_env = "gnu")))] + all(windows, target_env = "gnu"), + target_os = "redox"))] pub mod gnu; // common error constructors |
