Auto merge of #34408 - Manishearth:rollup, r=Manishearth
Rollup of 7 pull requests - Successful merges: #34190, #34363, #34367, #34383, #34387, #34394, #34404 - Failed merges:
This commit is contained in:
commit
e41cdabc3e
31
configure
vendored
31
configure
vendored
@ -1040,37 +1040,6 @@ if [ -n "$CFG_ENABLE_CLANG" ]
|
||||
then
|
||||
case "$CC" in
|
||||
(''|*clang)
|
||||
CFG_CLANG_REPORTED_VERSION=$($CFG_CC --version | grep version)
|
||||
|
||||
if echo $CFG_CLANG_REPORTED_VERSION | grep -q "(based on LLVM "; then
|
||||
CFG_CLANG_VERSION=$(echo $CFG_CLANG_REPORTED_VERSION | sed 's/.*(based on LLVM \(.*\))/\1/')
|
||||
elif echo $CFG_CLANG_REPORTED_VERSION | grep -q "Apple LLVM"; then
|
||||
CFG_OSX_CLANG_VERSION=$(echo $CFG_CLANG_REPORTED_VERSION | sed 's/.*version \(.*\) .*/\1/')
|
||||
else
|
||||
CFG_CLANG_VERSION=$(echo $CFG_CLANG_REPORTED_VERSION | sed 's/.*version \(.*\) .*/\1/')
|
||||
fi
|
||||
|
||||
if [ -n "$CFG_OSX_CLANG_VERSION" ]
|
||||
then
|
||||
case $CFG_OSX_CLANG_VERSION in
|
||||
(7.0* | 7.1* | 7.2* | 7.3* | 8.0*)
|
||||
step_msg "found ok version of APPLE CLANG: $CFG_OSX_CLANG_VERSION"
|
||||
;;
|
||||
(*)
|
||||
err "bad APPLE CLANG version: $CFG_OSX_CLANG_VERSION, need >=7.0"
|
||||
;;
|
||||
esac
|
||||
else
|
||||
case $CFG_CLANG_VERSION in
|
||||
(3.2* | 3.3* | 3.4* | 3.5* | 3.6* | 3.7* | 3.8* | 3.9*)
|
||||
step_msg "found ok version of CLANG: $CFG_CLANG_VERSION"
|
||||
;;
|
||||
(*)
|
||||
err "bad CLANG version: $CFG_CLANG_VERSION, need >=3.0svn"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -z "$CC" ]
|
||||
then
|
||||
CFG_CC="clang"
|
||||
|
@ -66,6 +66,34 @@ impl<T: fmt::Display> fmt::Display for Wrapping<T> {
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "wrapping_fmt", since = "1.11.0")]
|
||||
impl<T: fmt::Binary> fmt::Binary for Wrapping<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
self.0.fmt(f)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "wrapping_fmt", since = "1.11.0")]
|
||||
impl<T: fmt::Octal> fmt::Octal for Wrapping<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
self.0.fmt(f)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "wrapping_fmt", since = "1.11.0")]
|
||||
impl<T: fmt::LowerHex> fmt::LowerHex for Wrapping<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
self.0.fmt(f)
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "wrapping_fmt", since = "1.11.0")]
|
||||
impl<T: fmt::UpperHex> fmt::UpperHex for Wrapping<T> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
self.0.fmt(f)
|
||||
}
|
||||
}
|
||||
|
||||
mod wrapping;
|
||||
|
||||
// All these modules are technically private and only exposed for libcoretest:
|
||||
|
@ -1116,6 +1116,7 @@ fn cast_const<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, val: ConstVal, ty: ty::Ty)
|
||||
ty::TyRawPtr(_) => {
|
||||
Err(ErrKind::UnimplementedConstVal("casting a bytestr to a raw ptr"))
|
||||
},
|
||||
ty::TyRef(..) => Err(ErrKind::UnimplementedConstVal("casting a bytestr to slice")),
|
||||
_ => Err(CannotCast),
|
||||
},
|
||||
_ => Err(CannotCast),
|
||||
|
@ -143,8 +143,14 @@ pub fn load_attrs<'a, 'tcx>(cx: &DocContext, tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||
pub fn record_extern_fqn(cx: &DocContext, did: DefId, kind: clean::TypeKind) {
|
||||
if let Some(tcx) = cx.tcx_opt() {
|
||||
let crate_name = tcx.sess.cstore.crate_name(did.krate).to_string();
|
||||
let relative = tcx.def_path(did).data.into_iter().map(|elem| {
|
||||
elem.data.to_string()
|
||||
let relative = tcx.def_path(did).data.into_iter().filter_map(|elem| {
|
||||
// extern blocks have an empty name
|
||||
let s = elem.data.to_string();
|
||||
if !s.is_empty() {
|
||||
Some(s)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
});
|
||||
let fqn = once(crate_name).chain(relative).collect();
|
||||
cx.renderinfo.borrow_mut().external_paths.insert(did, (fqn, kind));
|
||||
|
@ -1519,20 +1519,23 @@ impl<'a> Item<'a> {
|
||||
// located, then we return `None`.
|
||||
} else {
|
||||
let cache = cache();
|
||||
let path = match cache.external_paths.get(&self.item.def_id) {
|
||||
let external_path = match cache.external_paths.get(&self.item.def_id) {
|
||||
Some(path) => path,
|
||||
None => return None,
|
||||
};
|
||||
let root = match cache.extern_locations.get(&self.item.def_id.krate) {
|
||||
let mut path = match cache.extern_locations.get(&self.item.def_id.krate) {
|
||||
Some(&(_, Remote(ref s))) => s.to_string(),
|
||||
Some(&(_, Local)) => self.cx.root_path.clone(),
|
||||
Some(&(_, Unknown)) => return None,
|
||||
None => return None,
|
||||
};
|
||||
Some(format!("{root}{path}/{file}?gotosrc={goto}",
|
||||
root = root,
|
||||
path = path[..path.len() - 1].join("/"),
|
||||
file = item_path(shortty(self.item), self.item.name.as_ref().unwrap()),
|
||||
for item in &external_path[..external_path.len() - 1] {
|
||||
path.push_str(item);
|
||||
path.push_str("/");
|
||||
}
|
||||
Some(format!("{path}{file}?gotosrc={goto}",
|
||||
path = path,
|
||||
file = item_path(shortty(self.item), external_path.last().unwrap()),
|
||||
goto = self.item.def_id.index.as_usize()))
|
||||
}
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ pub mod builtin {
|
||||
/// // fn concat_idents!(new, fun, name) { } // not usable in this way!
|
||||
/// # }
|
||||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[unstable(feature = "concat_idents", issue = "29599")]
|
||||
#[macro_export]
|
||||
macro_rules! concat_idents {
|
||||
($($e:ident),*) => ({ /* compiler built-in */ })
|
||||
|
@ -125,16 +125,25 @@ impl Thread {
|
||||
}
|
||||
|
||||
pub fn sleep(dur: Duration) {
|
||||
let mut ts = libc::timespec {
|
||||
tv_sec: dur.as_secs() as libc::time_t,
|
||||
tv_nsec: dur.subsec_nanos() as libc::c_long,
|
||||
};
|
||||
let mut secs = dur.as_secs();
|
||||
let mut nsecs = dur.subsec_nanos() as libc::c_long;
|
||||
|
||||
// If we're awoken with a signal then the return value will be -1 and
|
||||
// nanosleep will fill in `ts` with the remaining time.
|
||||
unsafe {
|
||||
while libc::nanosleep(&ts, &mut ts) == -1 {
|
||||
assert_eq!(os::errno(), libc::EINTR);
|
||||
while secs > 0 || nsecs > 0 {
|
||||
let mut ts = libc::timespec {
|
||||
tv_sec: cmp::min(libc::time_t::max_value() as u64, secs) as libc::time_t,
|
||||
tv_nsec: nsecs,
|
||||
};
|
||||
secs -= ts.tv_sec as u64;
|
||||
if libc::nanosleep(&ts, &mut ts) == -1 {
|
||||
assert_eq!(os::errno(), libc::EINTR);
|
||||
secs += ts.tv_sec as u64;
|
||||
nsecs = ts.tv_nsec;
|
||||
} else {
|
||||
nsecs = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
20
src/test/compile-fail/issue-23281.rs
Normal file
20
src/test/compile-fail/issue-23281.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// ignore-tidy-linelength
|
||||
|
||||
pub struct Struct;
|
||||
|
||||
impl Struct {
|
||||
pub fn function(funs: Vec<Fn() -> ()>) {}
|
||||
//~^ ERROR the trait bound `std::ops::Fn() + 'static: std::marker::Sized` is not satisfied
|
||||
}
|
||||
|
||||
fn main() {}
|
15
src/test/run-pass/const-byte-str-cast.rs
Normal file
15
src/test/run-pass/const-byte-str-cast.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#[deny(warnings)]
|
||||
|
||||
pub fn main() {
|
||||
let _ = b"x" as &[u8];
|
||||
}
|
25
src/test/run-pass/sleep.rs
Normal file
25
src/test/run-pass/sleep.rs
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::thread::{self, sleep};
|
||||
use std::time::Duration;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::u64;
|
||||
|
||||
fn main() {
|
||||
let finished = Arc::new(Mutex::new(false));
|
||||
let t_finished = finished.clone();
|
||||
thread::spawn(move || {
|
||||
sleep(Duration::new(u64::MAX, 0));
|
||||
*t_finished.lock().unwrap() = true;
|
||||
});
|
||||
sleep(Duration::from_millis(100));
|
||||
assert_eq!(*finished.lock().unwrap(), false);
|
||||
}
|
13
src/test/rustdoc/auxiliary/issue-34274.rs
Normal file
13
src/test/rustdoc/auxiliary/issue-34274.rs
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern {
|
||||
pub fn extern_c_fn();
|
||||
}
|
11
src/test/rustdoc/auxiliary/src-links-external.rs
Normal file
11
src/test/rustdoc/auxiliary/src-links-external.rs
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
pub struct Foo;
|
20
src/test/rustdoc/issue-34274.rs
Normal file
20
src/test/rustdoc/issue-34274.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// aux-build:issue-34274.rs
|
||||
// build-aux-docs
|
||||
// ignore-cross-compile
|
||||
|
||||
#![crate_name = "foo"]
|
||||
|
||||
extern crate issue_34274;
|
||||
|
||||
// @has foo/fn.extern_c_fn.html '//a/@href' '../issue_34274/fn.extern_c_fn.html?gotosrc='
|
||||
pub use issue_34274::extern_c_fn;
|
22
src/test/rustdoc/src-links-external.rs
Normal file
22
src/test/rustdoc/src-links-external.rs
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// aux-build:src-links-external.rs
|
||||
// build-aux-docs
|
||||
// ignore-cross-compile
|
||||
|
||||
#![crate_name = "foo"]
|
||||
|
||||
extern crate src_links_external;
|
||||
|
||||
// @has foo/bar/index.html '//a/@href' '../src_links_external/index.html?gotosrc='
|
||||
pub use src_links_external as bar;
|
||||
|
||||
// @has foo/bar/struct.Foo.html '//a/@href' '../src_links_external/struct.Foo.html?gotosrc='
|
Loading…
x
Reference in New Issue
Block a user