Skip to content

Rollup of PRs in the queue; Friday #23107

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

Merged
merged 69 commits into from
Mar 7, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
29938ff
Fix struct stat on arm linux
krdln Mar 4, 2015
61a2766
Note the alternate form of vec in trpl
steveklabnik Mar 4, 2015
b1e0dfb
docs(path.rs): fix ends_with method
ctjhoa Mar 4, 2015
a037cdf
Fix broken link in old rust guide
davbo Mar 4, 2015
0dfa997
std: Stabilize portions of the `io` module
alexcrichton Mar 3, 2015
9e28156
rustdoc: Move sidebar items into shared JavaScript.
lifthrasiir Mar 5, 2015
3f4181a
iOS: open file on aarch64 breaks permissions
vhbit Feb 26, 2015
7bcf7fb
Use more associated types in core::iter.
huonw Mar 4, 2015
18f1e40
doc example does nothing
Mar 5, 2015
e316c66
debuginfo: Add `debuginfo::with_source_location_override()` function...
michaelwoerister Mar 5, 2015
4a6fb45
rustdoc: Reworded comments to give the rationale for JS.
lifthrasiir Mar 5, 2015
215d287
debuginfo: Add test case for `extern "C"` functions.
michaelwoerister Mar 5, 2015
951ef9d
fix for new attributes failing. issue #22964
awlnx Mar 5, 2015
7ed418c
std: Deprecate the old_io::process module
alexcrichton Mar 5, 2015
1eb37bf
Fix Playpen Links Containing Multiple Examples
killercup Mar 5, 2015
f0897aa
OIBIT: for `PhantomData<T>` check `T` rather than the struct itself
Mar 5, 2015
9319252
rustc: Don't emit dep-info for imported files
alexcrichton Mar 5, 2015
d5d8345
rustc: Add a debug_assertions #[cfg] directive
alexcrichton Mar 2, 2015
628f5d2
std: Stabilize the `ffi` module
alexcrichton Mar 2, 2015
6148537
mk: Once again rename the beta channel artifacts as 'beta'
brson Mar 5, 2015
d3e7700
std: net: enable bind_error test on all platforms
stepancheg Mar 5, 2015
73b0b25
std: Stabilize the `fs` module
alexcrichton Mar 4, 2015
a08f129
fix minor grammar mistake in paths documentation
posborne Mar 6, 2015
65b4eda
std: Fix peeling ports from addresses
alexcrichton Mar 6, 2015
8655e94
'ignore-fast' directives do nothing
brson Mar 6, 2015
1552f67
Remove run-pass/lint-cstack.rs. No longer testing anything.
brson Mar 6, 2015
96b1f0c
Fix reference to 'librlibc' in libcore docs
wesleywiser Mar 6, 2015
ccd83da
file permission: remove executable bit from *.rs
Mar 6, 2015
e80fc10
Rollup merge of #22862 - vhbit:broken-open, r=alexcrichton
Manishearth Mar 6, 2015
9eb596c
Rollup merge of #22899 - huonw:macro-stability, r=alexcrichton
Manishearth Mar 6, 2015
efb487b
Rollup merge of #22980 - alexcrichton:debug-assertions, r=pnkfelix
Manishearth Mar 6, 2015
32631b4
Rollup merge of #23010 - alexcrichton:deprecate-some-old-io, r=aturon
Manishearth Mar 6, 2015
e99b00f
Rollup merge of #23039 - steveklabnik:doc_vec_macro, r=alexcrichton
Manishearth Mar 6, 2015
7a12c03
Rollup merge of #23060 - lifthrasiir:rustdoc-sidebar-in-js, r=alexcri…
Manishearth Mar 6, 2015
c39833e
Rollup merge of #23070 - krdln:fix-stat-arm, r=alexcrichton
Manishearth Mar 6, 2015
d77fc9f
Rollup merge of #23074 - michaelwoerister:constants-debug-locs, r=ale…
Manishearth Mar 6, 2015
c9063e0
Rollup merge of #23079 - alexcrichton:deprecate-process, r=aturon
Manishearth Mar 6, 2015
fe41c93
Rollup merge of #23081 - alexcrichton:stabilize-fs, r=aturon
Manishearth Mar 6, 2015
0b7117b
Rollup merge of #23090 - alexcrichton:dep-info, r=pnkfelix
Manishearth Mar 6, 2015
4993fd0
Rollup merge of #23095 - stepancheg:test-bind-fail, r=alexcrichton
Manishearth Mar 6, 2015
3f94260
Fix an easy to trigger deadlock in std::io::stdio
nagisa Mar 5, 2015
707f7a1
Check that traits with default impls have no methods
Mar 6, 2015
f2a1cf2
Rollup merge of #23098 - brson:ignore-fast, r=alexcrichton
Manishearth Mar 6, 2015
56e0229
Rollup merge of #23099 - brson:lint-cstack, r=alexcrichton
Manishearth Mar 6, 2015
7a2eea5
Rollup merge of #23101 - laijs:fix-file-perm, r=alexcrichton
Manishearth Mar 6, 2015
4176398
Rollup merge of #23025 - huonw:better-iter-infer, r=Gankro
Manishearth Mar 6, 2015
55087e7
Rollup merge of #23045 - ctjhoa:master, r=Manishearth
Manishearth Mar 6, 2015
ce2d04a
Rollup merge of #23048 - davbo:fix-broken-link-in-old-guide, r=brson
Manishearth Mar 6, 2015
2fcdd82
Rollup merge of #23056 - awlnx:master, r=nrc
Manishearth Mar 6, 2015
babd41e
Rollup merge of #23067 - oli-obk:doc_examle_fix, r=alexcrichton
Manishearth Mar 6, 2015
a14d6a9
Rollup merge of #23082 - killercup:patch-6, r=alexcrichton
Manishearth Mar 6, 2015
88cef03
Rollup merge of #23094 - brson:beta, r=huonw
Manishearth Mar 6, 2015
ae16afb
Rollup merge of #23096 - posborne:paths-documentation-grammar-fix, r=…
Manishearth Mar 6, 2015
aaaa431
Rollup merge of #23100 - wesleywiser:fix_23059, r=brson
Manishearth Mar 6, 2015
61c6b19
BufferedWriter -> BufWriter (fixup #23060)
Manishearth Mar 6, 2015
7ed4660
Rollup merge of #22474 - iKevinY:pandoc-version-check, r=brson
Manishearth Mar 6, 2015
8a391dd
move check into wf pass, add a test for assoc types
Mar 6, 2015
f7594e1
Remove two green threading tests
brson Mar 6, 2015
9aea749
std: Deprecate the std::old_io::net primitives
alexcrichton Feb 25, 2015
16ff140
std: Ignore a test on windows
alexcrichton Mar 6, 2015
1a30412
Suppress some warnings about features
alexcrichton Mar 6, 2015
fd86a01
rollup merge of #22813: alexcrichton/deprecate-net
alexcrichton Mar 6, 2015
2bd02ca
rollup merge of #22975: alexcrichton/stabilize-ffi
alexcrichton Mar 6, 2015
697de42
rollup merge of #23087: nagisa/std-undeadlock
alexcrichton Mar 6, 2015
31af637
rollup merge of #23091: japaric/phantom
alexcrichton Mar 6, 2015
3c2c516
rollup merge of #23097: alexcrichton/issue-23076
alexcrichton Mar 6, 2015
bc409cb
rollup merge of #23117: japaric/default-impl
alexcrichton Mar 6, 2015
11ddfb8
rollup merge of #23124: brson/oldtests
alexcrichton Mar 6, 2015
aed31ee
Test fixes and rebase conflicts
alexcrichton Mar 6, 2015
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
8 changes: 5 additions & 3 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -697,15 +697,17 @@ probe CFG_ADB adb

if [ ! -z "$CFG_PANDOC" ]
then
PV_MAJOR_MINOR=$(pandoc --version | grep '^pandoc\(.exe\)\? ' |
# extract the first 2 version fields, ignore everything else
sed 's/pandoc\(.exe\)\? \([0-9]*\)\.\([0-9]*\).*/\2 \3/')
PV_MAJOR_MINOR=$(pandoc --version | grep '^pandoc' |
# Extract "MAJOR MINOR" from Pandoc's version number
sed -E 's/pandoc(.exe)? ([0-9]+)\.([0-9]+).*/\2 \3/')

MIN_PV_MAJOR="1"
MIN_PV_MINOR="9"

# these patterns are shell globs, *not* regexps
PV_MAJOR=${PV_MAJOR_MINOR% *}
PV_MINOR=${PV_MAJOR_MINOR#* }

if [ "$PV_MAJOR" -lt "$MIN_PV_MAJOR" ] || [ "$PV_MINOR" -lt "$MIN_PV_MINOR" ]
then
step_msg "pandoc $PV_MAJOR.$PV_MINOR is too old. Need at least $MIN_PV_MAJOR.$MIN_PV_MINOR. Disabling"
Expand Down
6 changes: 3 additions & 3 deletions mk/main.mk
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ CFG_RELEASE_NUM=1.0.0
# An optional number to put after the label, e.g. '.2' -> '-beta.2'
# NB Make sure it starts with a dot to conform to semver pre-release
# versions (section 9)
CFG_PRERELEASE_VERSION=.2
CFG_PRERELEASE_VERSION=

CFG_FILENAME_EXTRA=4e7c5e5c

Expand All @@ -30,8 +30,8 @@ CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)
CFG_DISABLE_UNSTABLE_FEATURES=1
endif
ifeq ($(CFG_RELEASE_CHANNEL),beta)
CFG_RELEASE=$(CFG_RELEASE_NUM)-alpha$(CFG_PRERELEASE_VERSION)
CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)-alpha$(CFG_PRERELEASE_VERSION)
CFG_RELEASE=$(CFG_RELEASE_NUM)-beta(CFG_PRERELEASE_VERSION)
CFG_PACKAGE_VERS=$(CFG_RELEASE_NUM)-beta(CFG_PRERELEASE_VERSION)
CFG_DISABLE_UNSTABLE_FEATURES=1
endif
ifeq ($(CFG_RELEASE_CHANNEL),nightly)
Expand Down
2 changes: 1 addition & 1 deletion mk/tests.mk
Original file line number Diff line number Diff line change
Expand Up @@ -590,7 +590,7 @@ TEST_SREQ$(1)_T_$(2)_H_$(3) = \

# The tests select when to use debug configuration on their own;
# remove directive, if present, from CFG_RUSTC_FLAGS (issue #7898).
CTEST_RUSTC_FLAGS := $$(subst --cfg ndebug,,$$(CFG_RUSTC_FLAGS))
CTEST_RUSTC_FLAGS := $$(subst -C debug-assertions,,$$(CFG_RUSTC_FLAGS))

# The tests cannot be optimized while the rest of the compiler is optimized, so
# filter out the optimization (if any) from rustc and then figure out if we need
Expand Down
3 changes: 1 addition & 2 deletions src/compiletest/compiletest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,9 @@
#![feature(unicode)]
#![feature(core)]
#![feature(path)]
#![feature(os)]
#![feature(io)]
#![feature(fs)]
#![feature(net)]
#![feature(path_ext)]

#![deny(warnings)]

Expand Down
9 changes: 4 additions & 5 deletions src/compiletest/runtest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ use procsrv;
use util::logv;

use std::env;
use std::ffi::OsStr;
use std::fmt;
use std::fs::{self, File};
use std::io::BufReader;
Expand Down Expand Up @@ -1323,7 +1322,7 @@ fn make_exe_name(config: &Config, testfile: &Path) -> PathBuf {
let mut f = output_base_name(config, testfile);
if !env::consts::EXE_SUFFIX.is_empty() {
let mut fname = f.file_name().unwrap().to_os_string();
fname.push_os_str(OsStr::from_str(env::consts::EXE_SUFFIX));
fname.push(env::consts::EXE_SUFFIX);
f.set_file_name(&fname);
}
f
Expand Down Expand Up @@ -1433,7 +1432,7 @@ fn make_out_name(config: &Config, testfile: &Path, extension: &str) -> PathBuf {
fn aux_output_dir_name(config: &Config, testfile: &Path) -> PathBuf {
let f = output_base_name(config, testfile);
let mut fname = f.file_name().unwrap().to_os_string();
fname.push_os_str(OsStr::from_str("libaux"));
fname.push("libaux");
f.with_file_name(&fname)
}

Expand Down Expand Up @@ -1647,8 +1646,8 @@ fn append_suffix_to_stem(p: &Path, suffix: &str) -> PathBuf {
p.to_path_buf()
} else {
let mut stem = p.file_stem().unwrap().to_os_string();
stem.push_os_str(OsStr::from_str("-"));
stem.push_os_str(OsStr::from_str(suffix));
stem.push("-");
stem.push(suffix);
p.with_file_name(&stem)
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/doc/guide-tasks.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
% The (old) Rust Threads and Communication Guide

This content has moved into
[the Rust Programming Language book](book/tasks.html).
[the Rust Programming Language book](book/concurrency.html).
6 changes: 6 additions & 0 deletions src/doc/trpl/arrays-vectors-and-slices.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ let v = vec![1, 2, 3]; // v: Vec<i32>
brackets `[]` with `vec!`. Rust allows you to use either in either situation,
this is just convention.)

There's an alternate form of `vec!` for repeating an initial value:

```
let v = vec![0; 10]; // ten zeroes
```

You can get the length of, iterate over, and subscript vectors just like
arrays. In addition, (mutable) vectors can grow automatically:

Expand Down
2 changes: 2 additions & 0 deletions src/liballoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
//! The [`heap`](heap/index.html) module defines the low-level interface to the
//! default global allocator. It is not compatible with the libc allocator API.

// Do not remove on snapshot creation. Needed for bootstrap. (Issue #22364)
#![cfg_attr(stage0, feature(custom_attribute))]
#![crate_name = "alloc"]
#![unstable(feature = "alloc")]
#![feature(staged_api)]
Expand Down
2 changes: 2 additions & 0 deletions src/libarena/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
//! arena but can only hold objects of a single type, and `Arena`, which is a
//! more complex, slower arena which can hold objects of any type.

// Do not remove on snapshot creation. Needed for bootstrap. (Issue #22364)
#![cfg_attr(stage0, feature(custom_attribute))]
#![crate_name = "arena"]
#![unstable(feature = "rustc_private")]
#![staged_api]
Expand Down
3 changes: 2 additions & 1 deletion src/libcollections/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
//!
//! See [std::collections](../std/collections) for a detailed discussion of collections in Rust.


// Do not remove on snapshot creation. Needed for bootstrap. (Issue #22364)
#![cfg_attr(stage0, feature(custom_attribute))]
#![crate_name = "collections"]
#![unstable(feature = "collections")]
#![staged_api]
Expand Down
2 changes: 1 addition & 1 deletion src/libcollections/str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,7 @@ pub trait StrExt: Index<RangeFull, Output = str> {
///
/// let s = "中华Việt Nam";
/// let mut i = s.len();
/// while i < 0 {
/// while i > 0 {
/// let CharRange {ch, next} = s.char_range_at_reverse(i);
/// println!("{}: {}", i, ch);
/// i = next;
Expand Down
94 changes: 48 additions & 46 deletions src/libcore/iter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1279,14 +1279,14 @@ pub struct Cloned<I> {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, D, I> Iterator for Cloned<I> where
T: Clone,
D: Deref<Target=T>,
I: Iterator<Item=D>,
impl<I> Iterator for Cloned<I> where
I: Iterator,
I::Item: Deref,
<I::Item as Deref>::Target: Clone
{
type Item = T;
type Item = <I::Item as Deref>::Target;

fn next(&mut self) -> Option<T> {
fn next(&mut self) -> Option<<Self as Iterator>::Item> {
self.it.next().cloned()
}

Expand All @@ -1296,36 +1296,36 @@ impl<T, D, I> Iterator for Cloned<I> where
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, D, I> DoubleEndedIterator for Cloned<I> where
T: Clone,
D: Deref<Target=T>,
I: DoubleEndedIterator<Item=D>,
impl<I> DoubleEndedIterator for Cloned<I> where
I: DoubleEndedIterator,
I::Item: Deref,
<I::Item as Deref>::Target: Clone
{
fn next_back(&mut self) -> Option<T> {
fn next_back(&mut self) -> Option<<Self as Iterator>::Item> {
self.it.next_back().cloned()
}
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, D, I> ExactSizeIterator for Cloned<I> where
T: Clone,
D: Deref<Target=T>,
I: ExactSizeIterator<Item=D>,
impl<I> ExactSizeIterator for Cloned<I> where
I: ExactSizeIterator,
I::Item: Deref,
<I::Item as Deref>::Target: Clone
{}

#[unstable(feature = "core", reason = "trait is experimental")]
impl<T, D, I> RandomAccessIterator for Cloned<I> where
T: Clone,
D: Deref<Target=T>,
I: RandomAccessIterator<Item=D>
impl<I> RandomAccessIterator for Cloned<I> where
I: RandomAccessIterator,
I::Item: Deref,
<I::Item as Deref>::Target: Clone
{
#[inline]
fn indexable(&self) -> usize {
self.it.indexable()
}

#[inline]
fn idx(&mut self, index: usize) -> Option<T> {
fn idx(&mut self, index: usize) -> Option<<Self as Iterator>::Item> {
self.it.idx(index).cloned()
}
}
Expand Down Expand Up @@ -1400,11 +1400,14 @@ pub struct Chain<A, B> {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, A, B> Iterator for Chain<A, B> where A: Iterator<Item=T>, B: Iterator<Item=T> {
type Item = T;
impl<A, B> Iterator for Chain<A, B> where
A: Iterator,
B: Iterator<Item = A::Item>
{
type Item = A::Item;

#[inline]
fn next(&mut self) -> Option<T> {
fn next(&mut self) -> Option<A::Item> {
if self.flag {
self.b.next()
} else {
Expand Down Expand Up @@ -1434,12 +1437,12 @@ impl<T, A, B> Iterator for Chain<A, B> where A: Iterator<Item=T>, B: Iterator<It
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, A, B> DoubleEndedIterator for Chain<A, B> where
A: DoubleEndedIterator<Item=T>,
B: DoubleEndedIterator<Item=T>,
impl<A, B> DoubleEndedIterator for Chain<A, B> where
A: DoubleEndedIterator,
B: DoubleEndedIterator<Item=A::Item>,
{
#[inline]
fn next_back(&mut self) -> Option<T> {
fn next_back(&mut self) -> Option<A::Item> {
match self.b.next_back() {
Some(x) => Some(x),
None => self.a.next_back()
Expand All @@ -1448,9 +1451,9 @@ impl<T, A, B> DoubleEndedIterator for Chain<A, B> where
}

#[unstable(feature = "core", reason = "trait is experimental")]
impl<T, A, B> RandomAccessIterator for Chain<A, B> where
A: RandomAccessIterator<Item=T>,
B: RandomAccessIterator<Item=T>,
impl<A, B> RandomAccessIterator for Chain<A, B> where
A: RandomAccessIterator,
B: RandomAccessIterator<Item = A::Item>,
{
#[inline]
fn indexable(&self) -> usize {
Expand All @@ -1459,7 +1462,7 @@ impl<T, A, B> RandomAccessIterator for Chain<A, B> where
}

#[inline]
fn idx(&mut self, index: usize) -> Option<T> {
fn idx(&mut self, index: usize) -> Option<A::Item> {
let len = self.a.indexable();
if index < len {
self.a.idx(index)
Expand All @@ -1479,14 +1482,12 @@ pub struct Zip<A, B> {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, U, A, B> Iterator for Zip<A, B> where
A: Iterator<Item = T>,
B: Iterator<Item = U>,
impl<A, B> Iterator for Zip<A, B> where A: Iterator, B: Iterator
{
type Item = (T, U);
type Item = (A::Item, B::Item);

#[inline]
fn next(&mut self) -> Option<(T, U)> {
fn next(&mut self) -> Option<(A::Item, B::Item)> {
match self.a.next() {
None => None,
Some(x) => match self.b.next() {
Expand Down Expand Up @@ -1515,12 +1516,12 @@ impl<T, U, A, B> Iterator for Zip<A, B> where
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<T, U, A, B> DoubleEndedIterator for Zip<A, B> where
A: DoubleEndedIterator + ExactSizeIterator<Item=T>,
B: DoubleEndedIterator + ExactSizeIterator<Item=U>,
impl<A, B> DoubleEndedIterator for Zip<A, B> where
A: DoubleEndedIterator + ExactSizeIterator,
B: DoubleEndedIterator + ExactSizeIterator,
{
#[inline]
fn next_back(&mut self) -> Option<(T, U)> {
fn next_back(&mut self) -> Option<(A::Item, B::Item)> {
let a_sz = self.a.len();
let b_sz = self.b.len();
if a_sz != b_sz {
Expand All @@ -1540,17 +1541,17 @@ impl<T, U, A, B> DoubleEndedIterator for Zip<A, B> where
}

#[unstable(feature = "core", reason = "trait is experimental")]
impl<T, U, A, B> RandomAccessIterator for Zip<A, B> where
A: RandomAccessIterator<Item=T>,
B: RandomAccessIterator<Item=U>,
impl<A, B> RandomAccessIterator for Zip<A, B> where
A: RandomAccessIterator,
B: RandomAccessIterator
{
#[inline]
fn indexable(&self) -> usize {
cmp::min(self.a.indexable(), self.b.indexable())
}

#[inline]
fn idx(&mut self, index: usize) -> Option<(T, U)> {
fn idx(&mut self, index: usize) -> Option<(A::Item, B::Item)> {
match self.a.idx(index) {
None => None,
Some(x) => match self.b.idx(index) {
Expand Down Expand Up @@ -2058,8 +2059,9 @@ pub struct Scan<I, St, F> {
}

#[stable(feature = "rust1", since = "1.0.0")]
impl<A, B, I: Iterator<Item=A>, St, F> Iterator for Scan<I, St, F> where
F: FnMut(&mut St, A) -> Option<B>,
impl<B, I, St, F> Iterator for Scan<I, St, F> where
I: Iterator,
F: FnMut(&mut St, I::Item) -> Option<B>,
{
type Item = B;

Expand Down
5 changes: 3 additions & 2 deletions src/libcore/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@
//! often generated by LLVM. Additionally, this library can make explicit
//! calls to these functions. Their signatures are the same as found in C.
//! These functions are often provided by the system libc, but can also be
//! provided by `librlibc` which is distributed with the standard rust
//! distribution.
//! provided by the [rlibc crate](https://crates.io/crates/rlibc).
//!
//! * `rust_begin_unwind` - This function takes three arguments, a
//! `fmt::Arguments`, a `&str`, and a `usize`. These three arguments dictate
Expand All @@ -47,6 +46,8 @@
// Since libcore defines many fundamental lang items, all tests live in a
// separate crate, libcoretest, to avoid bizarre issues.

// Do not remove on snapshot creation. Needed for bootstrap. (Issue #22364)
#![cfg_attr(stage0, feature(custom_attribute))]
#![crate_name = "core"]
#![unstable(feature = "core")]
#![staged_api]
Expand Down
Loading