about summary refs log tree commit diff
path: root/src/libcollections
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2015-07-29 17:01:14 -0700
committerAlex Crichton <alex@alexcrichton.com>2015-08-03 17:23:01 -0700
commit5cccf3cd256420d9f32c265e83036dea1d5f94d8 (patch)
tree22904c7bb3df0872afa227638aa5e1e4ccb99fbc /src/libcollections
parentceded6adb3a4e172eabef09e1c78717a99c16b14 (diff)
downloadrust-5cccf3cd256420d9f32c265e83036dea1d5f94d8.tar.gz
rust-5cccf3cd256420d9f32c265e83036dea1d5f94d8.zip
syntax: Implement #![no_core]
This commit is an implementation of [RFC 1184][rfc] which tweaks the behavior of
the `#![no_std]` attribute and adds a new `#![no_core]` attribute. The
`#![no_std]` attribute now injects `extern crate core` at the top of the crate
as well as the libcore prelude into all modules (in the same manner as the
standard library's prelude). The `#![no_core]` attribute disables both std and
core injection.

[rfc]: https://github.com/rust-lang/rfcs/pull/1184
Diffstat (limited to 'src/libcollections')
-rw-r--r--src/libcollections/binary_heap.rs3
-rw-r--r--src/libcollections/bit.rs3
-rw-r--r--src/libcollections/btree/map.rs6
-rw-r--r--src/libcollections/btree/node.rs3
-rw-r--r--src/libcollections/btree/set.rs3
-rw-r--r--src/libcollections/enum_set.rs4
-rw-r--r--src/libcollections/lib.rs6
-rw-r--r--src/libcollections/linked_list.rs3
-rw-r--r--src/libcollections/string.rs3
-rw-r--r--src/libcollections/vec.rs4
-rw-r--r--src/libcollections/vec_deque.rs3
-rw-r--r--src/libcollections/vec_map.rs3
12 files changed, 28 insertions, 16 deletions
diff --git a/src/libcollections/binary_heap.rs b/src/libcollections/binary_heap.rs
index ddf61918947..65a252aea49 100644
--- a/src/libcollections/binary_heap.rs
+++ b/src/libcollections/binary_heap.rs
@@ -151,7 +151,8 @@
 #![allow(missing_docs)]
 #![stable(feature = "rust1", since = "1.0.0")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::iter::{FromIterator};
 use core::mem::swap;
diff --git a/src/libcollections/bit.rs b/src/libcollections/bit.rs
index 30f23e073f6..af33181c5d0 100644
--- a/src/libcollections/bit.rs
+++ b/src/libcollections/bit.rs
@@ -86,7 +86,8 @@
 //! println!("There are {} primes below {}", num_primes, max_prime);
 //! ```
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::Ordering;
 use core::cmp;
diff --git a/src/libcollections/btree/map.rs b/src/libcollections/btree/map.rs
index a5a0d864572..9fa54c6ca2f 100644
--- a/src/libcollections/btree/map.rs
+++ b/src/libcollections/btree/map.rs
@@ -17,7 +17,8 @@
 
 use self::Entry::*;
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::Ordering;
 use core::fmt::Debug;
@@ -530,7 +531,8 @@ enum Continuation<A, B> {
 /// to nodes. By using this module much better safety guarantees can be made, and more search
 /// boilerplate gets cut out.
 mod stack {
-    use core::prelude::*;
+    #[cfg(stage0)]
+    use core::prelude::v1::*;
     use core::marker;
     use core::mem;
     use core::ops::{Deref, DerefMut};
diff --git a/src/libcollections/btree/node.rs b/src/libcollections/btree/node.rs
index 4d76a986700..b9cd73470b6 100644
--- a/src/libcollections/btree/node.rs
+++ b/src/libcollections/btree/node.rs
@@ -16,7 +16,8 @@ pub use self::SearchResult::*;
 pub use self::ForceResult::*;
 pub use self::TraversalItem::*;
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::Ordering::{Greater, Less, Equal};
 use core::intrinsics::arith_offset;
diff --git a/src/libcollections/btree/set.rs b/src/libcollections/btree/set.rs
index 596312e509e..b9430b2d003 100644
--- a/src/libcollections/btree/set.rs
+++ b/src/libcollections/btree/set.rs
@@ -11,7 +11,8 @@
 // This is pretty much entirely stolen from TreeSet, since BTreeMap has an identical interface
 // to TreeMap
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::Ordering::{self, Less, Greater, Equal};
 use core::fmt::Debug;
diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs
index e90e6c065a2..e74726baf11 100644
--- a/src/libcollections/enum_set.rs
+++ b/src/libcollections/enum_set.rs
@@ -17,7 +17,9 @@
             reason = "matches collection reform specification, \
                       waiting for dust to settle")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
+
 use core::marker;
 use core::fmt;
 use core::iter::{FromIterator};
diff --git a/src/libcollections/lib.rs b/src/libcollections/lib.rs
index ee7d2c4d23b..5fb28d67974 100644
--- a/src/libcollections/lib.rs
+++ b/src/libcollections/lib.rs
@@ -33,9 +33,7 @@
 #![feature(alloc)]
 #![feature(box_patterns)]
 #![feature(box_syntax)]
-#![feature(core)]
 #![feature(core_intrinsics)]
-#![feature(core_prelude)]
 #![feature(core_slice_ext)]
 #![feature(core_str_ext)]
 #![feature(heap_api)]
@@ -62,12 +60,12 @@
 #![feature(utf8_error)]
 #![cfg_attr(test, feature(rand, test))]
 #![cfg_attr(not(test), feature(str_words))]
+#![cfg_attr(stage0, feature(core, core_prelude))]
 
 #![feature(no_std)]
 #![no_std]
 
-#[macro_use]
-extern crate core;
+#[cfg(stage0)] #[macro_use] extern crate core;
 
 extern crate rustc_unicode;
 extern crate alloc;
diff --git a/src/libcollections/linked_list.rs b/src/libcollections/linked_list.rs
index 32d6b3b95a4..697cfea197c 100644
--- a/src/libcollections/linked_list.rs
+++ b/src/libcollections/linked_list.rs
@@ -21,7 +21,8 @@
 
 #![stable(feature = "rust1", since = "1.0.0")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use alloc::boxed::Box;
 use core::cmp::Ordering;
diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs
index 0b441b42cdc..b323ab03ec6 100644
--- a/src/libcollections/string.rs
+++ b/src/libcollections/string.rs
@@ -12,7 +12,8 @@
 
 #![stable(feature = "rust1", since = "1.0.0")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::fmt;
 use core::hash;
diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs
index 96ad00597f8..9a29f6f9b82 100644
--- a/src/libcollections/vec.rs
+++ b/src/libcollections/vec.rs
@@ -58,7 +58,9 @@
 
 #![stable(feature = "rust1", since = "1.0.0")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
+
 use alloc::raw_vec::RawVec;
 use alloc::boxed::Box;
 use alloc::heap::EMPTY;
diff --git a/src/libcollections/vec_deque.rs b/src/libcollections/vec_deque.rs
index c6d0d946ab0..b55436c7057 100644
--- a/src/libcollections/vec_deque.rs
+++ b/src/libcollections/vec_deque.rs
@@ -18,7 +18,8 @@
 
 #![stable(feature = "rust1", since = "1.0.0")]
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::Ordering;
 use core::fmt;
diff --git a/src/libcollections/vec_map.rs b/src/libcollections/vec_map.rs
index a2d378a0faf..8be80a67ce7 100644
--- a/src/libcollections/vec_map.rs
+++ b/src/libcollections/vec_map.rs
@@ -20,7 +20,8 @@
 
 use self::Entry::*;
 
-use core::prelude::*;
+#[cfg(stage0)]
+use core::prelude::v1::*;
 
 use core::cmp::{max, Ordering};
 use core::fmt;