Skip to content

Commit dd582ac

Browse files
committed
Auto merge of #47214 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests - Successful merges: #47030, #47033, #47110, #47149, #47150, #47160, #47162, #47182, #47198, #47199 - Failed merges:
2 parents 8a11b8c + 3fcb995 commit dd582ac

File tree

16 files changed

+162
-107
lines changed

16 files changed

+162
-107
lines changed

RELEASES.md

-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ Stabilized APIs
3838

3939
Cargo
4040
-----
41-
- [Cargo now supports alternative registries][cargo/4506]
4241
- [Cargo now supports uninstallation of multiple packages][cargo/4561]
4342
eg. `cargo uninstall foo bar` uninstalls `foo` and `bar`.
4443
- [Added unit test checking to `cargo check`][cargo/4592]
@@ -49,7 +48,6 @@ Misc
4948
----
5049
- [Releases now ship with the Cargo book documentation.][45692]
5150
- [rustdoc now prints rendering warnings on every run.][45324]
52-
- [Release tarballs now come with rustfmt][45903]
5351

5452
Compatibility Notes
5553
-------------------
@@ -83,9 +81,7 @@ Compatibility Notes
8381
[45852]: https://github.com/rust-lang/rust/issues/45852
8482
[45853]: https://github.com/rust-lang/rust/pull/45853
8583
[45887]: https://github.com/rust-lang/rust/pull/45887
86-
[45903]: https://github.com/rust-lang/rust/pull/45903
8784
[45920]: https://github.com/rust-lang/rust/pull/45920
88-
[cargo/4506]: https://github.com/rust-lang/cargo/pull/4506
8985
[cargo/4561]: https://github.com/rust-lang/cargo/pull/4561
9086
[cargo/4592]: https://github.com/rust-lang/cargo/pull/4592
9187
[cargo/4637]: https://github.com/rust-lang/cargo/pull/4637

src/bootstrap/sanity.rs

+13-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
use std::collections::HashMap;
2222
use std::env;
2323
use std::ffi::{OsString, OsStr};
24-
use std::fs;
25-
use std::process::Command;
24+
use std::fs::{self, File};
25+
use std::io::Read;
2626
use std::path::PathBuf;
27+
use std::process::Command;
2728

2829
use build_helper::output;
2930

@@ -234,4 +235,14 @@ $ pacman -R cmake && pacman -S mingw-w64-x86_64-cmake
234235
if let Some(ref s) = build.config.ccache {
235236
cmd_finder.must_have(s);
236237
}
238+
239+
if build.config.channel == "stable" {
240+
let mut stage0 = String::new();
241+
t!(t!(File::open(build.src.join("src/stage0.txt")))
242+
.read_to_string(&mut stage0));
243+
if stage0.contains("\ndev:") {
244+
panic!("bootstrapping from a dev compiler in a stable release, but \
245+
should only be bootstrapping from a released compiler!");
246+
}
247+
}
237248
}

src/liballoc/btree/set.rs

+68-72
Original file line numberDiff line numberDiff line change
@@ -228,43 +228,7 @@ impl<T: Ord> BTreeSet<T> {
228228
pub fn new() -> BTreeSet<T> {
229229
BTreeSet { map: BTreeMap::new() }
230230
}
231-
}
232-
233-
impl<T> BTreeSet<T> {
234-
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
235-
///
236-
/// # Examples
237-
///
238-
/// ```
239-
/// use std::collections::BTreeSet;
240-
///
241-
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
242-
/// let mut set_iter = set.iter();
243-
/// assert_eq!(set_iter.next(), Some(&1));
244-
/// assert_eq!(set_iter.next(), Some(&2));
245-
/// assert_eq!(set_iter.next(), Some(&3));
246-
/// assert_eq!(set_iter.next(), None);
247-
/// ```
248-
///
249-
/// Values returned by the iterator are returned in ascending order:
250-
///
251-
/// ```
252-
/// use std::collections::BTreeSet;
253-
///
254-
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
255-
/// let mut set_iter = set.iter();
256-
/// assert_eq!(set_iter.next(), Some(&1));
257-
/// assert_eq!(set_iter.next(), Some(&2));
258-
/// assert_eq!(set_iter.next(), Some(&3));
259-
/// assert_eq!(set_iter.next(), None);
260-
/// ```
261-
#[stable(feature = "rust1", since = "1.0.0")]
262-
pub fn iter(&self) -> Iter<T> {
263-
Iter { iter: self.map.keys() }
264-
}
265-
}
266231

267-
impl<T: Ord> BTreeSet<T> {
268232
/// Constructs a double-ended iterator over a sub-range of elements in the set.
269233
/// The simplest way is to use the range syntax `min..max`, thus `range(min..max)` will
270234
/// yield elements from min (inclusive) to max (exclusive).
@@ -293,9 +257,7 @@ impl<T: Ord> BTreeSet<T> {
293257
{
294258
Range { iter: self.map.range(range) }
295259
}
296-
}
297260

298-
impl<T: Ord> BTreeSet<T> {
299261
/// Visits the values representing the difference,
300262
/// i.e. the values that are in `self` but not in `other`,
301263
/// in ascending order.
@@ -408,40 +370,6 @@ impl<T: Ord> BTreeSet<T> {
408370
}
409371
}
410372

411-
/// Returns the number of elements in the set.
412-
///
413-
/// # Examples
414-
///
415-
/// ```
416-
/// use std::collections::BTreeSet;
417-
///
418-
/// let mut v = BTreeSet::new();
419-
/// assert_eq!(v.len(), 0);
420-
/// v.insert(1);
421-
/// assert_eq!(v.len(), 1);
422-
/// ```
423-
#[stable(feature = "rust1", since = "1.0.0")]
424-
pub fn len(&self) -> usize {
425-
self.map.len()
426-
}
427-
428-
/// Returns `true` if the set contains no elements.
429-
///
430-
/// # Examples
431-
///
432-
/// ```
433-
/// use std::collections::BTreeSet;
434-
///
435-
/// let mut v = BTreeSet::new();
436-
/// assert!(v.is_empty());
437-
/// v.insert(1);
438-
/// assert!(!v.is_empty());
439-
/// ```
440-
#[stable(feature = "rust1", since = "1.0.0")]
441-
pub fn is_empty(&self) -> bool {
442-
self.len() == 0
443-
}
444-
445373
/// Clears the set, removing all values.
446374
///
447375
/// # Examples
@@ -724,6 +652,74 @@ impl<T: Ord> BTreeSet<T> {
724652
}
725653
}
726654

655+
impl<T> BTreeSet<T> {
656+
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
657+
///
658+
/// # Examples
659+
///
660+
/// ```
661+
/// use std::collections::BTreeSet;
662+
///
663+
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
664+
/// let mut set_iter = set.iter();
665+
/// assert_eq!(set_iter.next(), Some(&1));
666+
/// assert_eq!(set_iter.next(), Some(&2));
667+
/// assert_eq!(set_iter.next(), Some(&3));
668+
/// assert_eq!(set_iter.next(), None);
669+
/// ```
670+
///
671+
/// Values returned by the iterator are returned in ascending order:
672+
///
673+
/// ```
674+
/// use std::collections::BTreeSet;
675+
///
676+
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
677+
/// let mut set_iter = set.iter();
678+
/// assert_eq!(set_iter.next(), Some(&1));
679+
/// assert_eq!(set_iter.next(), Some(&2));
680+
/// assert_eq!(set_iter.next(), Some(&3));
681+
/// assert_eq!(set_iter.next(), None);
682+
/// ```
683+
#[stable(feature = "rust1", since = "1.0.0")]
684+
pub fn iter(&self) -> Iter<T> {
685+
Iter { iter: self.map.keys() }
686+
}
687+
688+
/// Returns the number of elements in the set.
689+
///
690+
/// # Examples
691+
///
692+
/// ```
693+
/// use std::collections::BTreeSet;
694+
///
695+
/// let mut v = BTreeSet::new();
696+
/// assert_eq!(v.len(), 0);
697+
/// v.insert(1);
698+
/// assert_eq!(v.len(), 1);
699+
/// ```
700+
#[stable(feature = "rust1", since = "1.0.0")]
701+
pub fn len(&self) -> usize {
702+
self.map.len()
703+
}
704+
705+
/// Returns `true` if the set contains no elements.
706+
///
707+
/// # Examples
708+
///
709+
/// ```
710+
/// use std::collections::BTreeSet;
711+
///
712+
/// let mut v = BTreeSet::new();
713+
/// assert!(v.is_empty());
714+
/// v.insert(1);
715+
/// assert!(!v.is_empty());
716+
/// ```
717+
#[stable(feature = "rust1", since = "1.0.0")]
718+
pub fn is_empty(&self) -> bool {
719+
self.len() == 0
720+
}
721+
}
722+
727723
#[stable(feature = "rust1", since = "1.0.0")]
728724
impl<T: Ord> FromIterator<T> for BTreeSet<T> {
729725
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> BTreeSet<T> {

src/liballoc_system/lib.rs

+12-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#![feature(core_intrinsics)]
2222
#![feature(staged_api)]
2323
#![feature(rustc_attrs)]
24-
#![cfg_attr(any(unix, target_os = "redox"), feature(libc))]
24+
#![cfg_attr(any(unix, target_os = "cloudabi", target_os = "redox"), feature(libc))]
2525
#![rustc_alloc_kind = "lib"]
2626

2727
// The minimum alignment guaranteed by the architecture. This value is used to
@@ -116,7 +116,7 @@ unsafe impl Alloc for System {
116116
}
117117
}
118118

119-
#[cfg(any(unix, target_os = "redox"))]
119+
#[cfg(any(unix, target_os = "cloudabi", target_os = "redox"))]
120120
mod platform {
121121
extern crate libc;
122122

@@ -213,6 +213,16 @@ mod platform {
213213
struct Stderr;
214214

215215
impl Write for Stderr {
216+
#[cfg(target_os = "cloudabi")]
217+
fn write_str(&mut self, _: &str) -> fmt::Result {
218+
// CloudABI does not have any reserved file descriptor
219+
// numbers. We should not attempt to write to file
220+
// descriptor #2, as it may be associated with any kind of
221+
// resource.
222+
Ok(())
223+
}
224+
225+
#[cfg(not(target_os = "cloudabi"))]
216226
fn write_str(&mut self, s: &str) -> fmt::Result {
217227
unsafe {
218228
libc::write(libc::STDERR_FILENO,

src/libcore/macros.rs

+1
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ macro_rules! debug_assert_ne {
330330
/// // The prefered method of quick returning Errors
331331
/// fn write_to_file_question() -> Result<(), MyError> {
332332
/// let mut file = File::create("my_best_friends.txt")?;
333+
/// file.write_all(b"This is a list of my best friends.")?;
333334
/// Ok(())
334335
/// }
335336
///

src/libcore/mem.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ impl<T: ::fmt::Debug> ::fmt::Debug for ManuallyDrop<T> {
10241024
}
10251025
}
10261026

1027-
#[stable(feature = "manually_drop", since = "1.20.0")]
1027+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10281028
impl<T: Clone> Clone for ManuallyDrop<T> {
10291029
fn clone(&self) -> Self {
10301030
ManuallyDrop::new(self.deref().clone())
@@ -1035,14 +1035,14 @@ impl<T: Clone> Clone for ManuallyDrop<T> {
10351035
}
10361036
}
10371037

1038-
#[stable(feature = "manually_drop", since = "1.20.0")]
1038+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10391039
impl<T: Default> Default for ManuallyDrop<T> {
10401040
fn default() -> Self {
10411041
ManuallyDrop::new(Default::default())
10421042
}
10431043
}
10441044

1045-
#[stable(feature = "manually_drop", since = "1.20.0")]
1045+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10461046
impl<T: PartialEq> PartialEq for ManuallyDrop<T> {
10471047
fn eq(&self, other: &Self) -> bool {
10481048
self.deref().eq(other)
@@ -1053,10 +1053,10 @@ impl<T: PartialEq> PartialEq for ManuallyDrop<T> {
10531053
}
10541054
}
10551055

1056-
#[stable(feature = "manually_drop", since = "1.20.0")]
1056+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10571057
impl<T: Eq> Eq for ManuallyDrop<T> {}
10581058

1059-
#[stable(feature = "manually_drop", since = "1.20.0")]
1059+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10601060
impl<T: PartialOrd> PartialOrd for ManuallyDrop<T> {
10611061
fn partial_cmp(&self, other: &Self) -> Option<::cmp::Ordering> {
10621062
self.deref().partial_cmp(other)
@@ -1079,14 +1079,14 @@ impl<T: PartialOrd> PartialOrd for ManuallyDrop<T> {
10791079
}
10801080
}
10811081

1082-
#[stable(feature = "manually_drop", since = "1.20.0")]
1082+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10831083
impl<T: Ord> Ord for ManuallyDrop<T> {
10841084
fn cmp(&self, other: &Self) -> ::cmp::Ordering {
10851085
self.deref().cmp(other)
10861086
}
10871087
}
10881088

1089-
#[stable(feature = "manually_drop", since = "1.20.0")]
1089+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10901090
impl<T: ::hash::Hash> ::hash::Hash for ManuallyDrop<T> {
10911091
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
10921092
self.deref().hash(state);

src/libcore/str/mod.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -1997,7 +1997,9 @@ mod traits {
19971997
}
19981998
}
19991999

2000-
#[stable(feature = "str_checked_slicing", since = "1.20.0")]
2000+
#[unstable(feature = "inclusive_range",
2001+
reason = "recently added, follows RFC",
2002+
issue = "28237")]
20012003
impl SliceIndex<str> for ops::RangeInclusive<usize> {
20022004
type Output = str;
20032005
#[inline]
@@ -2040,7 +2042,9 @@ mod traits {
20402042

20412043

20422044

2043-
#[stable(feature = "str_checked_slicing", since = "1.20.0")]
2045+
#[unstable(feature = "inclusive_range",
2046+
reason = "recently added, follows RFC",
2047+
issue = "28237")]
20442048
impl SliceIndex<str> for ops::RangeToInclusive<usize> {
20452049
type Output = str;
20462050
#[inline]

0 commit comments

Comments
 (0)