Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 8 pull requests #43246

Merged
merged 17 commits into from
Jul 15, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/bootstrap/step.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

use std::collections::{BTreeMap, HashSet, HashMap};
use std::mem;
use std::path::PathBuf;
use std::process;

use check::{self, TestKind};
Expand Down Expand Up @@ -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, _)| {
Expand Down
2 changes: 1 addition & 1 deletion src/doc/book
Submodule book updated 33 files
+2 −1 second-edition/dictionary.txt
+43 −30 second-edition/nostarch/chapter05.md
+144 −215 second-edition/nostarch/chapter11.md
+570 −883 second-edition/nostarch/chapter12.md
+ second-edition/nostarch/odt/chapter05.docx
+ second-edition/nostarch/odt/chapter11.docx
+ second-edition/nostarch/odt/chapter12.docx
+3 −3 second-edition/src/SUMMARY.md
+6 −2 second-edition/src/appendix-06-translation.md
+13 −0 second-edition/src/ch01-01-installation.md
+1 −1 second-edition/src/ch04-01-what-is-ownership.md
+34 −13 second-edition/src/ch05-01-defining-structs.md
+10 −10 second-edition/src/ch05-02-example-structs.md
+8 −8 second-edition/src/ch05-03-method-syntax.md
+3 −3 second-edition/src/ch06-02-match.md
+1 −1 second-edition/src/ch08-02-strings.md
+14 −15 second-edition/src/ch11-00-testing.md
+71 −102 second-edition/src/ch11-01-writing-tests.md
+15 −38 second-edition/src/ch11-02-running-tests.md
+31 −47 second-edition/src/ch11-03-test-organization.md
+36 −49 second-edition/src/ch12-00-an-io-project.md
+57 −94 second-edition/src/ch12-01-accepting-command-line-arguments.md
+42 −46 second-edition/src/ch12-02-reading-a-file.md
+206 −324 second-edition/src/ch12-03-improving-error-handling-and-modularity.md
+78 −119 second-edition/src/ch12-04-testing-the-librarys-functionality.md
+79 −125 second-edition/src/ch12-05-working-with-environment-variables.md
+60 −92 second-edition/src/ch12-06-writing-to-stderr-instead-of-stdout.md
+5 −5 second-edition/src/ch15-05-interior-mutability.md
+2 −2 second-edition/src/ch17-03-oo-design-patterns.md
+30 −30 second-edition/src/ch19-02-advanced-lifetimes.md
+4 −4 second-edition/src/ch19-04-advanced-types.md
+1 −0 second-edition/theme/index.hbs
+14 −1 second-edition/tools/docx-to-md.xsl
2 changes: 1 addition & 1 deletion src/doc/nomicon
2 changes: 1 addition & 1 deletion src/doc/reference
8 changes: 8 additions & 0 deletions src/libcore/iter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand Down
5 changes: 4 additions & 1 deletion src/libcore/ptr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
38 changes: 38 additions & 0 deletions src/libcore/str/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand All @@ -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")]
Expand Down
20 changes: 10 additions & 10 deletions src/libstd/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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")]
Expand Down Expand Up @@ -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!(),
Expand Down Expand Up @@ -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
///
Expand Down Expand Up @@ -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`.
Expand Down Expand Up @@ -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
///
Expand Down Expand Up @@ -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.
///
Expand Down Expand Up @@ -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.
Expand Down
15 changes: 12 additions & 3 deletions src/libstd/sys/redox/backtrace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
}
}
2 changes: 1 addition & 1 deletion src/libstd/sys/redox/net/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
}

Expand Down
2 changes: 1 addition & 1 deletion src/libstd/sys/windows/ext/fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(())
/// # }
/// ```
Expand Down
3 changes: 2 additions & 1 deletion src/libstd/sys_common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down