]> git.lizzy.rs Git - rust.git/commitdiff
Improvements to feature staging
authorBrian Anderson <banderson@mozilla.com>
Wed, 7 Jan 2015 23:48:16 +0000 (15:48 -0800)
committerBrian Anderson <banderson@mozilla.com>
Thu, 8 Jan 2015 11:07:23 +0000 (03:07 -0800)
This gets rid of the 'experimental' level, removes the non-staged_api
case (i.e. stability levels for out-of-tree crates), and lets the
staged_api attributes use 'unstable' and 'deprecated' lints.

This makes the transition period to the full feature staging design
a bit nicer.

105 files changed:
src/liballoc/arc.rs
src/liballoc/boxed.rs
src/liballoc/lib.rs
src/liballoc/rc.rs
src/libarena/lib.rs
src/libcollections/lib.rs
src/libcollections/slice.rs
src/libcollections/string.rs
src/libcollections/vec.rs
src/libcore/any.rs
src/libcore/array.rs
src/libcore/cell.rs
src/libcore/clone.rs
src/libcore/cmp.rs
src/libcore/finally.rs
src/libcore/fmt/mod.rs
src/libcore/fmt/rt.rs
src/libcore/intrinsics.rs
src/libcore/iter.rs
src/libcore/lib.rs
src/libcore/nonzero.rs
src/libcore/num/mod.rs
src/libcore/option.rs
src/libcore/ptr.rs
src/libcore/raw.rs
src/libcore/result.rs
src/libcore/simd.rs
src/libcore/slice.rs
src/libcoretest/cell.rs
src/libflate/lib.rs
src/libfmt_macros/lib.rs
src/libgetopts/lib.rs
src/libgraphviz/lib.rs
src/liblibc/lib.rs
src/liblog/lib.rs
src/librand/distributions/mod.rs
src/librand/lib.rs
src/librbml/lib.rs
src/libregex/lib.rs
src/libregex/re.rs
src/librustc/lib.rs
src/librustc/lint/builtin.rs
src/librustc/lint/context.rs
src/librustc/lint/mod.rs
src/librustc_back/lib.rs
src/librustc_borrowck/lib.rs
src/librustc_driver/lib.rs
src/librustc_llvm/lib.rs
src/librustc_resolve/lib.rs
src/librustc_trans/lib.rs
src/librustc_typeck/lib.rs
src/librustdoc/lib.rs
src/libstd/ascii.rs
src/libstd/bitflags.rs
src/libstd/collections/hash/table.rs
src/libstd/dynamic_lib.rs
src/libstd/failure.rs
src/libstd/fmt.rs
src/libstd/io/mod.rs
src/libstd/io/net/pipe.rs
src/libstd/io/net/tcp.rs
src/libstd/io/net/udp.rs
src/libstd/io/process.rs
src/libstd/macros.rs
src/libstd/num/f32.rs
src/libstd/num/f64.rs
src/libstd/num/float_macros.rs
src/libstd/num/int_macros.rs
src/libstd/num/mod.rs
src/libstd/num/uint_macros.rs
src/libstd/os.rs
src/libstd/path/mod.rs
src/libstd/rand/mod.rs
src/libstd/rt/mod.rs
src/libstd/rt/unwind.rs
src/libstd/rtdeps.rs
src/libstd/sync/mpsc/mpsc_queue.rs
src/libstd/sync/mpsc/select.rs
src/libstd/sync/mpsc/spsc_queue.rs
src/libstd/sys/unix/ext.rs
src/libstd/sys/windows/ext.rs
src/libstd/thread.rs
src/libstd/time/duration.rs
src/libsyntax/lib.rs
src/libterm/lib.rs
src/libtest/lib.rs
src/libunicode/lib.rs
src/libunicode/u_char.rs
src/test/auxiliary/inherited_stability.rs
src/test/auxiliary/lint_output_format.rs
src/test/auxiliary/lint_stability.rs
src/test/auxiliary/stability_cfg1.rs
src/test/auxiliary/stability_cfg2.rs
src/test/bench/shootout-mandelbrot.rs
src/test/compile-fail/issue-17337.rs
src/test/compile-fail/lint-forbid-attr.rs
src/test/compile-fail/lint-forbid-cmdline.rs
src/test/compile-fail/lint-output-format.rs
src/test/compile-fail/lint-stability.rs
src/test/compile-fail/simd-binop.rs
src/test/compile-fail/simd-experimental.rs
src/test/debuginfo/simd.rs
src/test/run-pass/simd-binop.rs
src/test/run-pass/simd-issue-10604.rs
src/test/run-pass/tcp-connect-timeouts.rs

index 48136bc1d96e240807f1f5caa3e3c4f4232340e8..290dd21d666a40a36775edd0b882646848fa7bd6 100644 (file)
@@ -126,7 +126,7 @@ unsafe impl<T: Sync + Send> Sync for Arc<T> { }
 /// Weak pointers will not keep the data inside of the `Arc` alive, and can be used to break cycles
 /// between `Arc` pointers.
 #[unsafe_no_drop_flag]
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 pub struct Weak<T> {
     // FIXME #12808: strange name to try to avoid interfering with
     // field accesses of the contained type via Deref
@@ -179,7 +179,7 @@ pub fn new(data: T) -> Arc<T> {
     ///
     /// let weak_five = five.downgrade();
     /// ```
-    #[experimental = "Weak pointers may not belong in this module."]
+    #[unstable = "Weak pointers may not belong in this module."]
     pub fn downgrade(&self) -> Weak<T> {
         // See the clone() impl for why this is relaxed
         self.inner().weak.fetch_add(1, Relaxed);
@@ -200,12 +200,12 @@ fn inner(&self) -> &ArcInner<T> {
 
 /// Get the number of weak references to this value.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn weak_count<T>(this: &Arc<T>) -> uint { this.inner().weak.load(SeqCst) - 1 }
 
 /// Get the number of strong references to this value.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn strong_count<T>(this: &Arc<T>) -> uint { this.inner().strong.load(SeqCst) }
 
 #[stable]
@@ -271,7 +271,7 @@ impl<T: Send + Sync + Clone> Arc<T> {
     /// let mut_five = five.make_unique();
     /// ```
     #[inline]
-    #[experimental]
+    #[unstable]
     pub fn make_unique(&mut self) -> &mut T {
         // Note that we hold a strong reference, which also counts as a weak reference, so we only
         // clone if there is an additional reference of either kind.
@@ -355,7 +355,7 @@ fn drop(&mut self) {
     }
 }
 
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 impl<T: Sync + Send> Weak<T> {
     /// Upgrades a weak reference to a strong reference.
     ///
@@ -393,7 +393,7 @@ fn inner(&self) -> &ArcInner<T> {
     }
 }
 
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 impl<T: Sync + Send> Clone for Weak<T> {
     /// Makes a clone of the `Weak<T>`.
     ///
@@ -604,7 +604,7 @@ fn hash(&self, state: &mut H) {
 }
 
 #[cfg(test)]
-#[allow(experimental)]
+#[allow(unstable)]
 mod tests {
     use std::clone::Clone;
     use std::sync::mpsc::channel;
index 97b198164ebd8bfe65223bd0fc3ef8c241c8604f..458eb3dce57a80f5bcf48fa06e601f6ceaa79181 100644 (file)
@@ -44,7 +44,7 @@
 /// }
 /// ```
 #[lang = "exchange_heap"]
-#[experimental = "may be renamed; uncertain about custom allocator design"]
+#[unstable = "may be renamed; uncertain about custom allocator design"]
 pub static HEAP: () = ();
 
 /// A type that represents a uniquely-owned value.
index 0bb8ba669ec25c4c1960f894028f5fdc373297b8..916015539a03bd8683401591f04383461f9da806 100644 (file)
@@ -57,7 +57,7 @@
 //! default global allocator. It is not compatible with the libc allocator API.
 
 #![crate_name = "alloc"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
index 27b3f03002fb9446f1c0c4a471ca5619491aabc0..f42c6dbdc15a592721d2f7422e53bc2c8e3cb68e 100644 (file)
@@ -221,7 +221,7 @@ pub fn new(value: T) -> Rc<T> {
     ///
     /// let weak_five = five.downgrade();
     /// ```
-    #[experimental = "Weak pointers may not belong in this module"]
+    #[unstable = "Weak pointers may not belong in this module"]
     pub fn downgrade(&self) -> Weak<T> {
         self.inc_weak();
         Weak {
@@ -234,12 +234,12 @@ pub fn downgrade(&self) -> Weak<T> {
 
 /// Get the number of weak references to this value.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn weak_count<T>(this: &Rc<T>) -> uint { this.weak() - 1 }
 
 /// Get the number of strong references to this value.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn strong_count<T>(this: &Rc<T>) -> uint { this.strong() }
 
 /// Returns true if there are no other `Rc` or `Weak<T>` values that share the same inner value.
@@ -255,7 +255,7 @@ pub fn strong_count<T>(this: &Rc<T>) -> uint { this.strong() }
 /// rc::is_unique(&five);
 /// ```
 #[inline]
-#[experimental]
+#[unstable]
 pub fn is_unique<T>(rc: &Rc<T>) -> bool {
     weak_count(rc) == 0 && strong_count(rc) == 1
 }
@@ -277,7 +277,7 @@ pub fn is_unique<T>(rc: &Rc<T>) -> bool {
 /// assert_eq!(rc::try_unwrap(x), Err(Rc::new(4u)));
 /// ```
 #[inline]
-#[experimental]
+#[unstable]
 pub fn try_unwrap<T>(rc: Rc<T>) -> Result<T, Rc<T>> {
     if is_unique(&rc) {
         unsafe {
@@ -311,7 +311,7 @@ pub fn try_unwrap<T>(rc: Rc<T>) -> Result<T, Rc<T>> {
 /// assert!(rc::get_mut(&mut x).is_none());
 /// ```
 #[inline]
-#[experimental]
+#[unstable]
 pub fn get_mut<'a, T>(rc: &'a mut Rc<T>) -> Option<&'a mut T> {
     if is_unique(rc) {
         let inner = unsafe { &mut **rc._ptr };
@@ -337,7 +337,7 @@ impl<T: Clone> Rc<T> {
     /// let mut_five = five.make_unique();
     /// ```
     #[inline]
-    #[experimental]
+    #[unstable]
     pub fn make_unique(&mut self) -> &mut T {
         if !is_unique(self) {
             *self = Rc::new((**self).clone())
@@ -615,7 +615,7 @@ fn hash(&self, state: &mut S) {
     }
 }
 
-#[experimental = "Show is experimental."]
+#[unstable = "Show is experimental."]
 impl<T: fmt::Show> fmt::Show for Rc<T> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         write!(f, "Rc({:?})", **self)
@@ -635,7 +635,7 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
 ///
 /// See the [module level documentation](../index.html) for more.
 #[unsafe_no_drop_flag]
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 pub struct Weak<T> {
     // FIXME #12808: strange names to try to avoid interfering with
     // field accesses of the contained type via Deref
@@ -644,7 +644,7 @@ pub struct Weak<T> {
     _noshare: marker::NoSync
 }
 
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 impl<T> Weak<T> {
     /// Upgrades a weak reference to a strong reference.
     ///
@@ -717,7 +717,7 @@ fn drop(&mut self) {
     }
 }
 
-#[experimental = "Weak pointers may not belong in this module."]
+#[unstable = "Weak pointers may not belong in this module."]
 impl<T> Clone for Weak<T> {
     /// Makes a clone of the `Weak<T>`.
     ///
@@ -739,7 +739,7 @@ fn clone(&self) -> Weak<T> {
     }
 }
 
-#[experimental = "Show is experimental."]
+#[unstable = "Show is experimental."]
 impl<T: fmt::Show> fmt::Show for Weak<T> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         write!(f, "(Weak)")
@@ -780,7 +780,7 @@ fn inner(&self) -> &RcBox<T> { unsafe { &(**self._ptr) } }
 }
 
 #[cfg(test)]
-#[allow(experimental)]
+#[allow(unstable)]
 mod tests {
     use super::{Rc, Weak, weak_count, strong_count};
     use std::cell::RefCell;
index f208ff9dc0517ee096b6b68625a3dd7337aee96b..2456d70e65e5d735fcf413129cef7c1e527f529c 100644 (file)
@@ -20,7 +20,7 @@
 //! more complex, slower arena which can hold objects of any type.
 
 #![crate_name = "arena"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 7692c1558a70f7c6797e729a701a162d69f40e61..8d57cfb6a5d24b2650d3effa4969276810f6e8d7 100644 (file)
@@ -14,7 +14,7 @@
 
 
 #![crate_name = "collections"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
index cb3fbd461cdf6574f0b37db955b053e8c0791fc1..9a1f22ef7a643067ae4314c9fe77fbbf01c21775 100644 (file)
@@ -166,7 +166,7 @@ pub trait SliceExt {
     /// assert_eq!(num_moved, 3);
     /// assert!(a == [6i, 7, 8, 4, 5]);
     /// ```
-    #[experimental = "uncertain about this API approach"]
+    #[unstable = "uncertain about this API approach"]
     fn move_from(&mut self, src: Vec<Self::Item>, start: uint, end: uint) -> uint;
 
     /// Returns a subslice spanning the interval [`start`, `end`).
@@ -175,7 +175,7 @@ pub trait SliceExt {
     /// original slice (i.e. when `end > self.len()`) or when `start > end`.
     ///
     /// Slicing with `start` equal to `end` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice(&self, start: uint, end: uint) -> &[Self::Item];
 
     /// Returns a subslice from `start` to the end of the slice.
@@ -183,7 +183,7 @@ pub trait SliceExt {
     /// Panics when `start` is strictly greater than the length of the original slice.
     ///
     /// Slicing from `self.len()` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice_from(&self, start: uint) -> &[Self::Item];
 
     /// Returns a subslice from the start of the slice to `end`.
@@ -191,7 +191,7 @@ pub trait SliceExt {
     /// Panics when `end` is strictly greater than the length of the original slice.
     ///
     /// Slicing to `0` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice_to(&self, end: uint) -> &[Self::Item];
 
     /// Divides one slice into two at an index.
@@ -284,11 +284,11 @@ fn rsplitn<F>(&self, n: uint, pred: F) -> RSplitN<Self::Item, F>
     fn first(&self) -> Option<&Self::Item>;
 
     /// Returns all but the first element of a slice.
-    #[experimental = "likely to be renamed"]
+    #[unstable = "likely to be renamed"]
     fn tail(&self) -> &[Self::Item];
 
     /// Returns all but the last element of a slice.
-    #[experimental = "likely to be renamed"]
+    #[unstable = "likely to be renamed"]
     fn init(&self) -> &[Self::Item];
 
     /// Returns the last element of a slice, or `None` if it is empty.
@@ -384,7 +384,7 @@ fn is_empty(&self) -> bool { self.len() == 0 }
     /// original slice (i.e. when `end > self.len()`) or when `start > end`.
     ///
     /// Slicing with `start` equal to `end` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice_mut(&mut self, start: uint, end: uint) -> &mut [Self::Item];
 
     /// Returns a mutable subslice from `start` to the end of the slice.
@@ -392,7 +392,7 @@ fn is_empty(&self) -> bool { self.len() == 0 }
     /// Panics when `start` is strictly greater than the length of the original slice.
     ///
     /// Slicing from `self.len()` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice_from_mut(&mut self, start: uint) -> &mut [Self::Item];
 
     /// Returns a mutable subslice from the start of the slice to `end`.
@@ -400,7 +400,7 @@ fn is_empty(&self) -> bool { self.len() == 0 }
     /// Panics when `end` is strictly greater than the length of the original slice.
     ///
     /// Slicing to `0` yields an empty slice.
-    #[experimental = "will be replaced by slice syntax"]
+    #[unstable = "will be replaced by slice syntax"]
     fn slice_to_mut(&mut self, end: uint) -> &mut [Self::Item];
 
     /// Returns an iterator that allows modifying each value
@@ -412,11 +412,11 @@ fn is_empty(&self) -> bool { self.len() == 0 }
     fn first_mut(&mut self) -> Option<&mut Self::Item>;
 
     /// Returns all but the first element of a mutable slice
-    #[experimental = "likely to be renamed or removed"]
+    #[unstable = "likely to be renamed or removed"]
     fn tail_mut(&mut self) -> &mut [Self::Item];
 
     /// Returns all but the last element of a mutable slice
-    #[experimental = "likely to be renamed or removed"]
+    #[unstable = "likely to be renamed or removed"]
     fn init_mut(&mut self) -> &mut [Self::Item];
 
     /// Returns a mutable pointer to the last item in the slice.
@@ -588,7 +588,7 @@ fn rsplitn_mut<F>(&mut self,  n: uint, pred: F) -> RSplitNMut<Self::Item, F>
     /// assert!(dst.clone_from_slice(&src2) == 3);
     /// assert!(dst == [3i, 4, 5]);
     /// ```
-    #[experimental]
+    #[unstable]
     fn clone_from_slice(&mut self, &[Self::Item]) -> uint where Self::Item: Clone;
 
     /// Sorts the slice, in place.
@@ -677,11 +677,11 @@ fn binary_search_elem(&self, x: &Self::Item) -> Result<uint, uint> where Self::I
     fn prev_permutation(&mut self) -> bool where Self::Item: Ord;
 
     /// Find the first index containing a matching value.
-    #[experimental]
+    #[unstable]
     fn position_elem(&self, t: &Self::Item) -> Option<uint> where Self::Item: PartialEq;
 
     /// Find the last index containing a matching value.
-    #[experimental]
+    #[unstable]
     fn rposition_elem(&self, t: &Self::Item) -> Option<uint> where Self::Item: PartialEq;
 
     /// Return true if the slice contains an element with the given value.
@@ -697,7 +697,7 @@ fn binary_search_elem(&self, x: &Self::Item) -> Result<uint, uint> where Self::I
     fn ends_with(&self, needle: &[Self::Item]) -> bool where Self::Item: PartialEq;
 
     /// Convert `self` into a vector without clones or allocation.
-    #[experimental]
+    #[unstable]
     fn into_vec(self: Box<Self>) -> Vec<Self::Item>;
 }
 
@@ -1034,7 +1034,7 @@ fn connect(&self, sep: &T) -> Vec<T> {
 ///
 /// The last generated swap is always (0, 1), and it returns the
 /// sequence to its initial order.
-#[experimental]
+#[unstable]
 #[derive(Clone)]
 pub struct ElementSwaps {
     sdir: Vec<SizeDirection>,
@@ -1046,7 +1046,7 @@ pub struct ElementSwaps {
 
 impl ElementSwaps {
     /// Creates an `ElementSwaps` iterator for a sequence of `length` elements.
-    #[experimental]
+    #[unstable]
     pub fn new(length: uint) -> ElementSwaps {
         // Initialize `sdir` with a direction that position should move in
         // (all negative at the beginning) and the `size` of the
index 1bb0be05b1e82e51b956aa6542e9ec19db0f880d..ae99a07c0ab116d288b3176c9df9b8be437ae7bc 100644 (file)
@@ -92,7 +92,7 @@ pub fn with_capacity(capacity: uint) -> String {
     /// assert_eq!(s.as_slice(), "hello");
     /// ```
     #[inline]
-    #[experimental = "needs investigation to see if to_string() can match perf"]
+    #[unstable = "needs investigation to see if to_string() can match perf"]
     pub fn from_str(string: &str) -> String {
         String { vec: ::slice::SliceExt::to_vec(string.as_bytes()) }
     }
@@ -719,7 +719,7 @@ fn from_iter<I:Iterator<Item=&'a str>>(iterator: I) -> String {
     }
 }
 
-#[experimental = "waiting on Extend stabilization"]
+#[unstable = "waiting on Extend stabilization"]
 impl Extend<char> for String {
     fn extend<I:Iterator<Item=char>>(&mut self, mut iterator: I) {
         let (lower_bound, _) = iterator.size_hint();
@@ -730,7 +730,7 @@ fn extend<I:Iterator<Item=char>>(&mut self, mut iterator: I) {
     }
 }
 
-#[experimental = "waiting on Extend stabilization"]
+#[unstable = "waiting on Extend stabilization"]
 impl<'a> Extend<&'a str> for String {
     fn extend<I: Iterator<Item=&'a str>>(&mut self, mut iterator: I) {
         // A guess that at least one byte per iterator element will be needed.
@@ -790,7 +790,7 @@ fn eq(&self, other: &CowString<'a>) -> bool { PartialEq::eq(&**self, &**other) }
     fn ne(&self, other: &CowString<'a>) -> bool { PartialEq::ne(&**self, &**other) }
 }
 
-#[experimental = "waiting on Str stabilization"]
+#[unstable = "waiting on Str stabilization"]
 impl Str for String {
     #[inline]
     #[stable]
@@ -814,14 +814,14 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
     }
 }
 
-#[experimental = "waiting on fmt stabilization"]
+#[unstable = "waiting on fmt stabilization"]
 impl fmt::Show for String {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         fmt::Show::fmt(&**self, f)
     }
 }
 
-#[experimental = "waiting on Hash stabilization"]
+#[unstable = "waiting on Hash stabilization"]
 #[cfg(stage0)]
 impl<H: hash::Writer> hash::Hash<H> for String {
     #[inline]
@@ -829,7 +829,7 @@ fn hash(&self, hasher: &mut H) {
         (**self).hash(hasher)
     }
 }
-#[experimental = "waiting on Hash stabilization"]
+#[unstable = "waiting on Hash stabilization"]
 #[cfg(not(stage0))]
 impl<H: hash::Writer + hash::Hasher> hash::Hash<H> for String {
     #[inline]
@@ -887,7 +887,7 @@ fn deref<'a>(&'a self) -> &'a str {
 }
 
 /// Wrapper type providing a `&String` reference via `Deref`.
-#[experimental]
+#[unstable]
 pub struct DerefString<'a> {
     x: DerefVec<'a, u8>
 }
@@ -914,7 +914,7 @@ fn deref<'b>(&'b self) -> &'b String {
 /// let string = as_string("foo").clone();
 /// string_consumer(string);
 /// ```
-#[experimental]
+#[unstable]
 pub fn as_string<'a>(x: &'a str) -> DerefString<'a> {
     DerefString { x: as_vec(x.as_bytes()) }
 }
index 69a3947df2b5bf4b132aaed334fd8f9231800755..47afc78bc1213b13ab8496085fa33e660e4ec5a3 100644 (file)
@@ -376,7 +376,7 @@ pub fn shrink_to_fit(&mut self) {
     /// Note that this will drop any excess capacity. Calling this and
     /// converting back to a vector with `into_vec()` is equivalent to calling
     /// `shrink_to_fit()`.
-    #[experimental]
+    #[unstable]
     pub fn into_boxed_slice(mut self) -> Box<[T]> {
         self.shrink_to_fit();
         unsafe {
@@ -777,7 +777,7 @@ pub fn is_empty(&self) -> bool { self.len() == 0 }
     /// let newtyped_bytes = bytes.map_in_place(|x| Newtype(x));
     /// assert_eq!(newtyped_bytes.as_slice(), [Newtype(0x11), Newtype(0x22)].as_slice());
     /// ```
-    #[experimental = "API may change to provide stronger guarantees"]
+    #[unstable = "API may change to provide stronger guarantees"]
     pub fn map_in_place<U, F>(self, mut f: F) -> Vec<U> where F: FnMut(T) -> U {
         // FIXME: Assert statically that the types `T` and `U` have the same
         // size.
@@ -995,7 +995,7 @@ pub fn resize(&mut self, new_len: uint, value: T) {
     /// assert_eq!(vec, vec![1, 2, 3, 4]);
     /// ```
     #[inline]
-    #[experimental = "likely to be replaced by a more optimized extend"]
+    #[unstable = "likely to be replaced by a more optimized extend"]
     pub fn push_all(&mut self, other: &[T]) {
         self.reserve(other.len());
 
@@ -1200,7 +1200,7 @@ fn hash(&self, state: &mut S) {
     }
 }
 
-#[experimental = "waiting on Index stability"]
+#[unstable = "waiting on Index stability"]
 impl<T> Index<uint> for Vec<T> {
     type Output = T;
 
@@ -1304,7 +1304,7 @@ fn from_iter<I:Iterator<Item=T>>(mut iterator: I) -> Vec<T> {
     }
 }
 
-#[experimental = "waiting on Extend stability"]
+#[unstable = "waiting on Extend stability"]
 impl<T> Extend<T> for Vec<T> {
     #[inline]
     fn extend<I: Iterator<Item=T>>(&mut self, mut iterator: I) {
@@ -1457,7 +1457,7 @@ fn default() -> Vec<T> {
     }
 }
 
-#[experimental = "waiting on Show stability"]
+#[unstable = "waiting on Show stability"]
 impl<T: fmt::Show> fmt::Show for Vec<T> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         fmt::Show::fmt(self.as_slice(), f)
@@ -1475,7 +1475,7 @@ fn write_str(&mut self, s: &str) -> fmt::Result {
 // Clone-on-write
 ////////////////////////////////////////////////////////////////////////////////
 
-#[experimental = "unclear how valuable this alias is"]
+#[unstable = "unclear how valuable this alias is"]
 /// A clone-on-write vector
 pub type CowVec<'a, T> = Cow<'a, Vec<T>, [T]>;
 
@@ -1693,13 +1693,13 @@ fn drop(&mut self) {
 ////////////////////////////////////////////////////////////////////////////////
 
 /// Wrapper type providing a `&Vec<T>` reference via `Deref`.
-#[experimental]
+#[unstable]
 pub struct DerefVec<'a, T> {
     x: Vec<T>,
     l: ContravariantLifetime<'a>
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> Deref for DerefVec<'a, T> {
     type Target = Vec<T>;
 
@@ -1719,7 +1719,7 @@ fn drop(&mut self) {
 }
 
 /// Convert a slice to a wrapper type providing a `&Vec<T>` reference.
-#[experimental]
+#[unstable]
 pub fn as_vec<'a, T>(x: &'a [T]) -> DerefVec<'a, T> {
     unsafe {
         DerefVec {
index 25007bfde93a9d6c0af0ef7604044046ec83ec52..797687a9ad96ee6efc577f94ab158995438e84aa 100644 (file)
@@ -89,7 +89,7 @@
 #[stable]
 pub trait Any: 'static {
     /// Get the `TypeId` of `self`
-    #[experimental = "this method will likely be replaced by an associated static"]
+    #[unstable = "this method will likely be replaced by an associated static"]
     fn get_type_id(&self) -> TypeId;
 }
 
index 0cea0b3d88e143a69a05b17d7beec5ec44fff99f..c07fac108d6f390a95fd7a8f8a14d1176bac3792 100644 (file)
@@ -12,7 +12,7 @@
 //! up to a certain length. Eventually we should able to generalize
 //! to all lengths.
 
-#![experimental] // not yet reviewed
+#![unstable] // not yet reviewed
 
 use clone::Clone;
 use cmp::{PartialEq, Eq, PartialOrd, Ord, Ordering};
index 674364269f1da0bcb0573f6d05be3e12a1a36761..6db01b7cb7afe67d6d26b12f4f9c0881092ff967 100644 (file)
@@ -202,7 +202,7 @@ pub fn set(&self, value: T) {
     ///
     /// This function is `unsafe` because `UnsafeCell`'s field is public.
     #[inline]
-    #[experimental]
+    #[unstable]
     pub unsafe fn as_unsafe_cell<'a>(&'a self) -> &'a UnsafeCell<T> {
         &self.value
     }
@@ -332,7 +332,7 @@ pub fn borrow_mut<'a>(&'a self) -> RefMut<'a, T> {
     ///
     /// This function is `unsafe` because `UnsafeCell`'s field is public.
     #[inline]
-    #[experimental]
+    #[unstable]
     pub unsafe fn as_unsafe_cell<'a>(&'a self) -> &'a UnsafeCell<T> {
         &self.value
     }
@@ -424,7 +424,7 @@ fn deref<'a>(&'a self) -> &'a T {
 ///
 /// A `Clone` implementation would interfere with the widespread
 /// use of `r.borrow().clone()` to clone the contents of a `RefCell`.
-#[experimental = "likely to be moved to a method, pending language changes"]
+#[unstable = "likely to be moved to a method, pending language changes"]
 pub fn clone_ref<'b, T:Clone>(orig: &Ref<'b, T>) -> Ref<'b, T> {
     Ref {
         _value: orig._value,
index 3149247a83aed96cf4df8e6af48ef4178138febf..ffa6d0855435e2b854f8178d7d507380a88cf029 100644 (file)
@@ -81,7 +81,7 @@ fn clone(&self) -> $t { *self }
 
 macro_rules! extern_fn_clone {
     ($($A:ident),*) => (
-        #[experimental = "this may not be sufficient for fns with region parameters"]
+        #[unstable = "this may not be sufficient for fns with region parameters"]
         impl<$($A,)* ReturnType> Clone for extern "Rust" fn($($A),*) -> ReturnType {
             /// Return a copy of a function pointer
             #[inline]
index c3dfd5f51595f80b1c0e561cc4c68ca4852ad615..c1f1997df740ea7a2d4061f4979e231c2813c792 100644 (file)
@@ -290,7 +290,7 @@ pub fn max<T: Ord>(v1: T, v2: T) -> T {
 ///
 /// Returns the first argument if the comparison determines them to be equal.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn partial_min<T: PartialOrd>(v1: T, v2: T) -> Option<T> {
     match v1.partial_cmp(&v2) {
         Some(Less) | Some(Equal) => Some(v1),
@@ -303,7 +303,7 @@ pub fn partial_min<T: PartialOrd>(v1: T, v2: T) -> Option<T> {
 ///
 /// Returns the first argument if the comparison determines them to be equal.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn partial_max<T: PartialOrd>(v1: T, v2: T) -> Option<T> {
     match v1.partial_cmp(&v2) {
         Some(Less) => Some(v2),
index 2b48b2bf81afbd25563ac6b1a07697ebbb239784..a21ec892dd77a64abfc60a564c3268f04ecb6a1c 100644 (file)
@@ -32,7 +32,7 @@
 //! # }
 //! ```
 
-#![experimental]
+#![unstable]
 
 use ops::{Drop, FnMut, FnOnce};
 
index 1d3767c9e336fcb332e186811f60d64fbb4df22f..67d5482898ee5f87f9bbfdf08fc4c01e49cdd4aa 100644 (file)
@@ -36,7 +36,7 @@
 mod float;
 pub mod rt;
 
-#[experimental = "core and I/O reconciliation may alter this definition"]
+#[unstable = "core and I/O reconciliation may alter this definition"]
 /// The type returned by formatter methods.
 pub type Result = result::Result<(), Error>;
 
@@ -45,7 +45,7 @@
 /// This type does not support transmission of an error other than that an error
 /// occurred. Any extra information must be arranged to be transmitted through
 /// some other means.
-#[experimental = "core and I/O reconciliation may alter this definition"]
+#[unstable = "core and I/O reconciliation may alter this definition"]
 #[derive(Copy)]
 pub struct Error;
 
@@ -58,7 +58,7 @@
 /// This trait should generally not be implemented by consumers of the standard
 /// library. The `write!` macro accepts an instance of `io::Writer`, and the
 /// `io::Writer` trait is favored over implementing this trait.
-#[experimental = "waiting for core and I/O reconciliation"]
+#[unstable = "waiting for core and I/O reconciliation"]
 pub trait Writer {
     /// Writes a slice of bytes into this writer, returning whether the write
     /// succeeded.
@@ -123,7 +123,7 @@ enum Void {}
 /// family of functions. It contains a function to format the given value. At
 /// compile time it is ensured that the function and the value have the correct
 /// types, and then this struct is used to canonicalize arguments to one type.
-#[experimental = "implementation detail of the `format_args!` macro"]
+#[unstable = "implementation detail of the `format_args!` macro"]
 #[derive(Copy)]
 pub struct Argument<'a> {
     value: &'a Void,
@@ -162,7 +162,7 @@ impl<'a> Arguments<'a> {
     /// When using the format_args!() macro, this function is used to generate the
     /// Arguments structure.
     #[doc(hidden)] #[inline]
-    #[experimental = "implementation detail of the `format_args!` macro"]
+    #[unstable = "implementation detail of the `format_args!` macro"]
     pub fn new(pieces: &'a [&'a str],
                args: &'a [Argument<'a>]) -> Arguments<'a> {
         Arguments {
@@ -179,7 +179,7 @@ pub fn new(pieces: &'a [&'a str],
     /// created with `argumentuint`. However, failing to do so doesn't cause
     /// unsafety, but will ignore invalid .
     #[doc(hidden)] #[inline]
-    #[experimental = "implementation detail of the `format_args!` macro"]
+    #[unstable = "implementation detail of the `format_args!` macro"]
     pub fn with_placeholders(pieces: &'a [&'a str],
                              fmt: &'a [rt::Argument<'a>],
                              args: &'a [Argument<'a>]) -> Arguments<'a> {
@@ -301,7 +301,7 @@ pub trait UpperExp {
 ///
 ///   * output - the buffer to write output to
 ///   * args - the precompiled arguments generated by `format_args!`
-#[experimental = "libcore and I/O have yet to be reconciled, and this is an \
+#[unstable = "libcore and I/O have yet to be reconciled, and this is an \
                   implementation detail which should not otherwise be exported"]
 pub fn write(output: &mut Writer, args: Arguments) -> Result {
     let mut formatter = Formatter {
@@ -563,7 +563,7 @@ pub fn write_fmt(&mut self, fmt: Arguments) -> Result {
     }
 
     /// Flags for formatting (packed version of rt::Flag)
-    #[experimental = "return type may change and method was just created"]
+    #[unstable = "return type may change and method was just created"]
     pub fn flags(&self) -> uint { self.flags }
 
     /// Character used as 'fill' whenever there is alignment
@@ -592,7 +592,7 @@ fn fmt(&self, f: &mut Formatter) -> Result {
 /// This is a function which calls are emitted to by the compiler itself to
 /// create the Argument structures that are passed into the `format` function.
 #[doc(hidden)] #[inline]
-#[experimental = "implementation detail of the `format_args!` macro"]
+#[unstable = "implementation detail of the `format_args!` macro"]
 pub fn argument<'a, T>(f: fn(&T, &mut Formatter) -> Result,
                        t: &'a T) -> Argument<'a> {
     Argument::new(t, f)
@@ -601,7 +601,7 @@ pub fn argument<'a, T>(f: fn(&T, &mut Formatter) -> Result,
 /// When the compiler determines that the type of an argument *must* be a uint
 /// (such as for width and precision), then it invokes this method.
 #[doc(hidden)] #[inline]
-#[experimental = "implementation detail of the `format_args!` macro"]
+#[unstable = "implementation detail of the `format_args!` macro"]
 pub fn argumentuint<'a>(s: &'a uint) -> Argument<'a> {
     Argument::from_uint(s)
 }
index 6dbda3d84459ef88aa6461d7e4e611ba8c394144..8d8e8c4b703032b34e0d607ac1ee2580ef11b526 100644 (file)
@@ -14,7 +14,7 @@
 //! These definitions are similar to their `ct` equivalents, but differ in that
 //! these can be statically allocated and are slightly optimized for the runtime
 
-#![experimental = "implementation detail of the `format_args!` macro"]
+#![unstable = "implementation detail of the `format_args!` macro"]
 
 pub use self::Alignment::*;
 pub use self::Count::*;
index c8b3616a4042e293b40b033c41cf2be957e9de63..5924d515dda595c5e785608d110108e5aeae1e97 100644 (file)
@@ -39,7 +39,7 @@
 //!   guaranteed to happen in order. This is the standard mode for working
 //!   with atomic types and is equivalent to Java's `volatile`.
 
-#![experimental]
+#![unstable]
 #![allow(missing_docs)]
 
 #[cfg(not(stage0))]
@@ -333,7 +333,7 @@ pub struct TyDesc {
 
     /// Invokes memset on the specified pointer, setting `count * size_of::<T>()`
     /// bytes of memory starting at `dst` to `c`.
-    #[experimental = "uncertain about naming and semantics"]
+    #[unstable = "uncertain about naming and semantics"]
     pub fn set_memory<T>(dst: *mut T, val: u8, count: uint);
 
     /// Equivalent to the appropriate `llvm.memcpy.p0i8.0i8.*` intrinsic, with
index 273a51665ce8aaad77befe2df0c668fe39c0e95c..d4aa4c99a76bd48f20c5d1cc8e97a1e2047f5781 100644 (file)
@@ -942,7 +942,7 @@ fn cycle(self) -> Cycle<Self> where Self: Clone {
     }
 
     /// Use an iterator to reverse a container in place.
-    #[experimental = "uncertain about placement or widespread use"]
+    #[unstable = "uncertain about placement or widespread use"]
     fn reverse_in_place<'a, T: 'a>(&mut self) where
         Self: Iterator<Item=&'a mut T> + DoubleEndedIterator
     {
@@ -974,7 +974,7 @@ pub trait DoubleEndedIterator: Iterator {
 /// Calling `next()` or `next_back()` on a `RandomAccessIterator`
 /// reduces the indexable range accordingly. That is, `it.idx(1)` will become `it.idx(0)`
 /// after `it.next()` is called.
-#[experimental = "not widely used, may be better decomposed into Index and ExactSizeIterator"]
+#[unstable = "not widely used, may be better decomposed into Index and ExactSizeIterator"]
 pub trait RandomAccessIterator: Iterator {
     /// Return the number of indexable elements. At most `std::uint::MAX`
     /// elements are indexable, even if the iterator represents a longer range.
@@ -1049,7 +1049,7 @@ impl<I> DoubleEndedIterator for Rev<I> where I: DoubleEndedIterator {
     fn next_back(&mut self) -> Option<<I as Iterator>::Item> { self.iter.next() }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Rev<I> where I: DoubleEndedIterator + RandomAccessIterator {
     #[inline]
     fn indexable(&self) -> uint { self.iter.indexable() }
@@ -1084,7 +1084,7 @@ fn next_back(&mut self) -> Option<<I as Iterator>::Item> { self.iter.next_back()
 }
 
 /// A trait for iterators over elements which can be added together
-#[experimental = "needs to be re-evaluated as part of numerics reform"]
+#[unstable = "needs to be re-evaluated as part of numerics reform"]
 pub trait AdditiveIterator<A> {
     /// Iterates over the entire iterator, summing up all the elements
     ///
@@ -1102,7 +1102,7 @@ pub trait AdditiveIterator<A> {
 
 macro_rules! impl_additive {
     ($A:ty, $init:expr) => {
-        #[experimental = "trait is experimental"]
+        #[unstable = "trait is experimental"]
         impl<T: Iterator<Item=$A>> AdditiveIterator<$A> for T {
             #[inline]
             fn sum(self) -> $A {
@@ -1125,7 +1125,7 @@ fn sum(self) -> $A {
 impl_additive! { f64,  0.0 }
 
 /// A trait for iterators over elements which can be multiplied together.
-#[experimental = "needs to be re-evaluated as part of numerics reform"]
+#[unstable = "needs to be re-evaluated as part of numerics reform"]
 pub trait MultiplicativeIterator<A> {
     /// Iterates over the entire iterator, multiplying all the elements
     ///
@@ -1146,7 +1146,7 @@ pub trait MultiplicativeIterator<A> {
 
 macro_rules! impl_multiplicative {
     ($A:ty, $init:expr) => {
-        #[experimental = "trait is experimental"]
+        #[unstable = "trait is experimental"]
         impl<T: Iterator<Item=$A>> MultiplicativeIterator<$A> for T {
             #[inline]
             fn product(self) -> $A {
@@ -1287,7 +1287,7 @@ fn size_hint(&self) -> (uint, Option<uint>) {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Cycle<I> where
     I: Clone + RandomAccessIterator,
 {
@@ -1372,7 +1372,7 @@ fn next_back(&mut self) -> Option<T> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<T, A, B> RandomAccessIterator for Chain<A, B> where
     A: RandomAccessIterator<Item=T>,
     B: RandomAccessIterator<Item=T>,
@@ -1464,7 +1464,7 @@ fn next_back(&mut self) -> Option<(T, U)> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<T, U, A, B> RandomAccessIterator for Zip<A, B> where
     A: RandomAccessIterator<Item=T>,
     B: RandomAccessIterator<Item=U>,
@@ -1546,7 +1546,7 @@ fn next_back(&mut self) -> Option<B> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<A, B, I, F> RandomAccessIterator for Map<A, B, I, F> where
     I: RandomAccessIterator<Item=A>,
     F: FnMut(A) -> B,
@@ -1735,7 +1735,7 @@ fn next_back(&mut self) -> Option<(uint, <I as Iterator>::Item)> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Enumerate<I> where I: RandomAccessIterator {
     #[inline]
     fn indexable(&self) -> uint {
@@ -1961,7 +1961,7 @@ fn size_hint(&self) -> (uint, Option<uint>) {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Skip<I> where I: RandomAccessIterator{
     #[inline]
     fn indexable(&self) -> uint {
@@ -2016,7 +2016,7 @@ fn size_hint(&self) -> (uint, Option<uint>) {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Take<I> where I: RandomAccessIterator{
     #[inline]
     fn indexable(&self) -> uint {
@@ -2229,7 +2229,7 @@ fn next_back(&mut self) -> Option<<I as Iterator>::Item> {
 }
 
 // Allow RandomAccessIterators to be fused without affecting random-access behavior
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<I> RandomAccessIterator for Fuse<I> where I: RandomAccessIterator {
     #[inline]
     fn indexable(&self) -> uint {
@@ -2246,7 +2246,7 @@ impl<I> Fuse<I> {
     /// Resets the fuse such that the next call to .next() or .next_back() will
     /// call the underlying iterator again even if it previously returned None.
     #[inline]
-    #[experimental = "seems marginal"]
+    #[unstable = "seems marginal"]
     pub fn reset_fuse(&mut self) {
         self.done = false
     }
@@ -2315,7 +2315,7 @@ fn next_back(&mut self) -> Option<A> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<A, I, F> RandomAccessIterator for Inspect<A, I, F> where
     I: RandomAccessIterator<Item=A>,
     F: FnMut(&A),
@@ -2364,7 +2364,7 @@ fn idx(&mut self, index: uint) -> Option<A> {
 ///     println!("{}", i);
 /// }
 /// ```
-#[experimental]
+#[unstable]
 pub struct Unfold<A, St, F> where F: FnMut(&mut St) -> Option<A> {
     f: F,
     /// Internal state that will be passed to the closure on the next iteration
@@ -2385,7 +2385,7 @@ fn clone(&self) -> Unfold<A, St, F> {
     }
 }
 
-#[experimental]
+#[unstable]
 impl<A, St, F> Unfold<A, St, F> where F: FnMut(&mut St) -> Option<A> {
     /// Creates a new iterator with the specified closure as the "iterator
     /// function" and an initial state to eventually pass to the closure
@@ -2778,7 +2778,7 @@ impl<A: Clone> DoubleEndedIterator for Repeat<A> {
     fn next_back(&mut self) -> Option<A> { self.idx(0) }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<A: Clone> RandomAccessIterator for Repeat<A> {
     #[inline]
     fn indexable(&self) -> uint { uint::MAX }
@@ -2790,12 +2790,12 @@ fn idx(&mut self, _: uint) -> Option<A> { Some(self.element.clone()) }
 
 /// An iterator that repeatedly applies a given function, starting
 /// from a given seed value.
-#[experimental]
+#[unstable]
 pub type Iterate<T, F> = Unfold<T, IterateState<T, F>, fn(&mut IterateState<T, F>) -> Option<T>>;
 
 /// Create a new iterator that produces an infinite sequence of
 /// repeated applications of the given function `f`.
-#[experimental]
+#[unstable]
 pub fn iterate<T, F>(seed: T, f: F) -> Iterate<T, F> where
     T: Clone,
     F: FnMut(T) -> T,
index af5aba53bf4787bc54717213514b7e8766a2fd75..8c4c8a0e78efa2f5ca6f407fadd61d5308e00ea7 100644 (file)
@@ -48,7 +48,7 @@
 // separate crate, libcoretest, to avoid bizarre issues.
 
 #![crate_name = "core"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
index 087404da624348ce48d40c3fff7fdb7bf42f51b3..abaf252932300a0023a77ac665c6fb3ca080da9b 100644 (file)
@@ -32,7 +32,7 @@ unsafe impl Zeroable for u64 {}
 /// NULL or 0 that might allow certain optimizations.
 #[lang="non_zero"]
 #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Show)]
-#[experimental]
+#[unstable]
 pub struct NonZero<T: Zeroable>(T);
 
 impl<T: Zeroable> NonZero<T> {
index 91fed8a31bd40b086faa86aed422446318c20c37..57415f4331d6d87394d7a5eae66379a9e2f0e8ed 100644 (file)
@@ -726,7 +726,7 @@ impl UnsignedInt for u32 {}
 impl UnsignedInt for u64 {}
 
 /// A generic trait for converting a value to a number.
-#[experimental = "trait is likely to be removed"]
+#[unstable = "trait is likely to be removed"]
 pub trait ToPrimitive {
     /// Converts the value of `self` to an `int`.
     #[inline]
@@ -991,7 +991,7 @@ fn to_f64(&self) -> Option<f64> { impl_to_primitive_float_to_float!($T, f64, *se
 impl_to_primitive_float! { f64 }
 
 /// A generic trait for converting a number to a value.
-#[experimental = "trait is likely to be removed"]
+#[unstable = "trait is likely to be removed"]
 pub trait FromPrimitive : ::marker::Sized {
     /// Convert an `int` to return an optional value of this type. If the
     /// value cannot be represented by this value, the `None` is returned.
@@ -1073,73 +1073,73 @@ fn from_f64(n: f64) -> Option<Self> {
 }
 
 /// A utility function that just calls `FromPrimitive::from_int`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_int<A: FromPrimitive>(n: int) -> Option<A> {
     FromPrimitive::from_int(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_i8`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_i8<A: FromPrimitive>(n: i8) -> Option<A> {
     FromPrimitive::from_i8(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_i16`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_i16<A: FromPrimitive>(n: i16) -> Option<A> {
     FromPrimitive::from_i16(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_i32`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_i32<A: FromPrimitive>(n: i32) -> Option<A> {
     FromPrimitive::from_i32(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_i64`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_i64<A: FromPrimitive>(n: i64) -> Option<A> {
     FromPrimitive::from_i64(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_uint`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_uint<A: FromPrimitive>(n: uint) -> Option<A> {
     FromPrimitive::from_uint(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_u8`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_u8<A: FromPrimitive>(n: u8) -> Option<A> {
     FromPrimitive::from_u8(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_u16`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_u16<A: FromPrimitive>(n: u16) -> Option<A> {
     FromPrimitive::from_u16(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_u32`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_u32<A: FromPrimitive>(n: u32) -> Option<A> {
     FromPrimitive::from_u32(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_u64`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_u64<A: FromPrimitive>(n: u64) -> Option<A> {
     FromPrimitive::from_u64(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_f32`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_f32<A: FromPrimitive>(n: f32) -> Option<A> {
     FromPrimitive::from_f32(n)
 }
 
 /// A utility function that just calls `FromPrimitive::from_f64`.
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn from_f64<A: FromPrimitive>(n: f64) -> Option<A> {
     FromPrimitive::from_f64(n)
 }
@@ -1190,13 +1190,13 @@ impl FromPrimitive for $T {
 /// ```
 ///
 #[inline]
-#[experimental = "likely to be removed"]
+#[unstable = "likely to be removed"]
 pub fn cast<T: NumCast,U: NumCast>(n: T) -> Option<U> {
     NumCast::from(n)
 }
 
 /// An interface for casting between machine scalars.
-#[experimental = "trait is likely to be removed"]
+#[unstable = "trait is likely to be removed"]
 pub trait NumCast: ToPrimitive {
     /// Creates a number from another value that can be converted into a primitive via the
     /// `ToPrimitive` trait.
@@ -1394,20 +1394,20 @@ pub trait Float
 }
 
 /// A generic trait for converting a string with a radix (base) to a value
-#[experimental = "might need to return Result"]
+#[unstable = "might need to return Result"]
 pub trait FromStrRadix {
     fn from_str_radix(str: &str, radix: uint) -> Option<Self>;
 }
 
 /// A utility function that just calls FromStrRadix::from_str_radix.
-#[experimental = "might need to return Result"]
+#[unstable = "might need to return Result"]
 pub fn from_str_radix<T: FromStrRadix>(str: &str, radix: uint) -> Option<T> {
     FromStrRadix::from_str_radix(str, radix)
 }
 
 macro_rules! from_str_radix_float_impl {
     ($T:ty) => {
-        #[experimental = "might need to return Result"]
+        #[unstable = "might need to return Result"]
         impl FromStr for $T {
             /// Convert a string in base 10 to a float.
             /// Accepts an optional decimal exponent.
@@ -1440,7 +1440,7 @@ fn from_str(src: &str) -> Option<$T> {
             }
         }
 
-        #[experimental = "might need to return Result"]
+        #[unstable = "might need to return Result"]
         impl FromStrRadix for $T {
             /// Convert a string in a given base to a float.
             ///
@@ -1604,7 +1604,7 @@ fn from_str_radix(src: &str, radix: uint) -> Option<$T> {
 
 macro_rules! from_str_radix_int_impl {
     ($T:ty) => {
-        #[experimental = "might need to return Result"]
+        #[unstable = "might need to return Result"]
         impl FromStr for $T {
             #[inline]
             fn from_str(src: &str) -> Option<$T> {
@@ -1612,7 +1612,7 @@ fn from_str(src: &str) -> Option<$T> {
             }
         }
 
-        #[experimental = "might need to return Result"]
+        #[unstable = "might need to return Result"]
         impl FromStrRadix for $T {
             fn from_str_radix(src: &str, radix: uint) -> Option<$T> {
                 assert!(radix >= 2 && radix <= 36,
index deee67b6d2fd7ba1237ee780d8956a75f06b12d2..41eecb4649d97decab6b9961dd61fd3e61d7f9fc 100644 (file)
@@ -477,7 +477,7 @@ pub fn map_or_else<U, D: FnOnce() -> U, F: FnOnce(T) -> U>(self, def: D, f: F) -
     /// assert_eq!(x.ok_or(0i), Err(0i));
     /// ```
     #[inline]
-    #[experimental]
+    #[unstable]
     pub fn ok_or<E>(self, err: E) -> Result<T, E> {
         match self {
             Some(v) => Ok(v),
@@ -498,7 +498,7 @@ pub fn ok_or<E>(self, err: E) -> Result<T, E> {
     /// assert_eq!(x.ok_or_else(|| 0i), Err(0i));
     /// ```
     #[inline]
-    #[experimental]
+    #[unstable]
     pub fn ok_or_else<E, F: FnOnce() -> E>(self, err: F) -> Result<T, E> {
         match self {
             Some(v) => Ok(v),
index a17cd410303a56ef06965cd00ae38ac24f10358b..ab1e69f0060644d5f3d7525ca9574c5c669fcd8f 100644 (file)
 #[unstable]
 pub use intrinsics::copy_memory;
 
-#[experimental = "uncertain about naming and semantics"]
+#[unstable = "uncertain about naming and semantics"]
 pub use intrinsics::set_memory;
 
 
index 1ad6d43f76f0919308996a5034f230e7929fc78e..13a387c7cb0ed6c49580605c2fe7ed443729f642 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![allow(missing_docs)]
-#![experimental]
+#![unstable]
 
 //! Contains struct definitions for the layout of compiler built-in types.
 //!
index 7868ec67c8a3adfa915b3d90cd7a17c17f86f29b..f7421203336c3571e2b55a686ebbea52eac22577 100644 (file)
@@ -953,7 +953,7 @@ fn next(&mut self) -> Option<T> {
 /// If an `Err` is encountered, it is immediately returned.
 /// Otherwise, the folded value is returned.
 #[inline]
-#[experimental]
+#[unstable]
 pub fn fold<T,
             V,
             E,
index 1f9aebb91beab0189faf4ed3a53d7a6ccc3447c4..b73910d7c068c2e6afb216b53d985e859ff9607e 100644 (file)
@@ -19,7 +19,7 @@
 //! provided beyond this module.
 //!
 //! ```rust
-//! #[allow(experimental)];
+//! #[allow(unstable)];
 //!
 //! fn main() {
 //!     use std::simd::f32x4;
@@ -37,7 +37,7 @@
 #![allow(non_camel_case_types)]
 #![allow(missing_docs)]
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
@@ -46,26 +46,26 @@ pub struct i8x16(pub i8, pub i8, pub i8, pub i8,
                  pub i8, pub i8, pub i8, pub i8,
                  pub i8, pub i8, pub i8, pub i8);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct i16x8(pub i16, pub i16, pub i16, pub i16,
                  pub i16, pub i16, pub i16, pub i16);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct i32x4(pub i32, pub i32, pub i32, pub i32);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct i64x2(pub i64, pub i64);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
@@ -74,32 +74,32 @@ pub struct u8x16(pub u8, pub u8, pub u8, pub u8,
                  pub u8, pub u8, pub u8, pub u8,
                  pub u8, pub u8, pub u8, pub u8);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct u16x8(pub u16, pub u16, pub u16, pub u16,
                  pub u16, pub u16, pub u16, pub u16);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct u64x2(pub u64, pub u64);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
 pub struct f32x4(pub f32, pub f32, pub f32, pub f32);
 
-#[experimental]
+#[unstable]
 #[simd]
 #[derive(Copy, Show)]
 #[repr(C)]
index 6c62bfda1fecc98d0d9c3c97ab00d5bbd2930c5e..7e47c5257a344942cfab44a2f0465dce27712f5f 100644 (file)
@@ -457,7 +457,7 @@ fn binary_search(&self, x: &T) -> Result<uint, uint> where T: Ord {
         self.binary_search_by(|p| p.cmp(x))
     }
 
-    #[experimental]
+    #[unstable]
     fn next_permutation(&mut self) -> bool where T: Ord {
         // These cases only have 1 permutation each, so we can't do anything.
         if self.len() < 2 { return false; }
@@ -488,7 +488,7 @@ fn next_permutation(&mut self) -> bool where T: Ord {
         true
     }
 
-    #[experimental]
+    #[unstable]
     fn prev_permutation(&mut self) -> bool where T: Ord {
         // These cases only have 1 permutation each, so we can't do anything.
         if self.len() < 2 { return false; }
@@ -630,25 +630,25 @@ fn index_mut(&mut self, _index: &ops::FullRange) -> &mut [T] {
 ////////////////////////////////////////////////////////////////////////////////
 
 /// Data that is viewable as a slice.
-#[experimental = "will be replaced by slice syntax"]
+#[unstable = "will be replaced by slice syntax"]
 pub trait AsSlice<T> {
     /// Work with `self` as a slice.
     fn as_slice<'a>(&'a self) -> &'a [T];
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<T> AsSlice<T> for [T] {
     #[inline(always)]
     fn as_slice<'a>(&'a self) -> &'a [T] { self }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<'a, T, U: ?Sized + AsSlice<T>> AsSlice<T> for &'a U {
     #[inline(always)]
     fn as_slice(&self) -> &[T] { AsSlice::as_slice(*self) }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<'a, T, U: ?Sized + AsSlice<T>> AsSlice<T> for &'a mut U {
     #[inline(always)]
     fn as_slice(&self) -> &[T] { AsSlice::as_slice(*self) }
@@ -754,7 +754,7 @@ pub struct Iter<'a, T: 'a> {
     marker: marker::ContravariantLifetime<'a>
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::Range<uint>> for Iter<'a, T> {
     type Output = [T];
     #[inline]
@@ -763,7 +763,7 @@ fn index(&self, index: &ops::Range<uint>) -> &[T] {
     }
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::RangeTo<uint>> for Iter<'a, T> {
     type Output = [T];
     #[inline]
@@ -772,7 +772,7 @@ fn index(&self, index: &ops::RangeTo<uint>) -> &[T] {
     }
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::RangeFrom<uint>> for Iter<'a, T> {
     type Output = [T];
     #[inline]
@@ -781,7 +781,7 @@ fn index(&self, index: &ops::RangeFrom<uint>) -> &[T] {
     }
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::FullRange> for Iter<'a, T> {
     type Output = [T];
     #[inline]
@@ -795,7 +795,7 @@ impl<'a, T> Iter<'a, T> {
     ///
     /// This has the same lifetime as the original slice, and so the
     /// iterator can continue to be used while this exists.
-    #[experimental]
+    #[unstable]
     pub fn as_slice(&self) -> &'a [T] {
         make_slice!(T => &'a [T]: self.ptr, self.end)
     }
@@ -813,7 +813,7 @@ impl<'a, T> Clone for Iter<'a, T> {
     fn clone(&self) -> Iter<'a, T> { *self }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<'a, T> RandomAccessIterator for Iter<'a, T> {
     #[inline]
     fn indexable(&self) -> uint {
@@ -847,7 +847,7 @@ pub struct IterMut<'a, T: 'a> {
 }
 
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::Range<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -855,7 +855,7 @@ fn index(&self, index: &ops::Range<uint>) -> &[T] {
         self.index(&ops::FullRange).index(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::RangeTo<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -863,7 +863,7 @@ fn index(&self, index: &ops::RangeTo<uint>) -> &[T] {
         self.index(&ops::FullRange).index(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::RangeFrom<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -871,7 +871,7 @@ fn index(&self, index: &ops::RangeFrom<uint>) -> &[T] {
         self.index(&ops::FullRange).index(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::Index<ops::FullRange> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -880,7 +880,7 @@ fn index(&self, _index: &ops::FullRange) -> &[T] {
     }
 }
 
-#[experimental]
+#[unstable]
 impl<'a, T> ops::IndexMut<ops::Range<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -888,7 +888,7 @@ fn index_mut(&mut self, index: &ops::Range<uint>) -> &mut [T] {
         self.index_mut(&ops::FullRange).index_mut(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::IndexMut<ops::RangeTo<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -896,7 +896,7 @@ fn index_mut(&mut self, index: &ops::RangeTo<uint>) -> &mut [T] {
         self.index_mut(&ops::FullRange).index_mut(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::IndexMut<ops::RangeFrom<uint>> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -904,7 +904,7 @@ fn index_mut(&mut self, index: &ops::RangeFrom<uint>) -> &mut [T] {
         self.index_mut(&ops::FullRange).index_mut(index)
     }
 }
-#[experimental]
+#[unstable]
 impl<'a, T> ops::IndexMut<ops::FullRange> for IterMut<'a, T> {
     type Output = [T];
     #[inline]
@@ -921,7 +921,7 @@ impl<'a, T> IterMut<'a, T> {
     /// to consume the iterator. Consider using the `Slice` and
     /// `SliceMut` implementations for obtaining slices with more
     /// restricted lifetimes that do not consume the iterator.
-    #[experimental]
+    #[unstable]
     pub fn into_slice(self) -> &'a mut [T] {
         make_slice!(T => &'a mut [T]: self.ptr, self.end)
     }
@@ -1269,7 +1269,7 @@ fn next_back(&mut self) -> Option<&'a [T]> {
     }
 }
 
-#[experimental = "trait is experimental"]
+#[unstable = "trait is experimental"]
 impl<'a, T> RandomAccessIterator for Chunks<'a, T> {
     #[inline]
     fn indexable(&self) -> uint {
@@ -1417,7 +1417,7 @@ pub unsafe fn from_raw_mut_buf<'a, T>(p: &'a *mut T, len: uint) -> &'a mut [T] {
 //
 
 /// Operations on `[u8]`.
-#[experimental = "needs review"]
+#[unstable = "needs review"]
 pub mod bytes {
     use ptr;
     use slice::SliceExt;
@@ -1430,7 +1430,7 @@ pub trait MutableByteVector {
 
     impl MutableByteVector for [u8] {
         #[inline]
-        #[allow(experimental)]
+        #[allow(unstable)]
         fn set_memory(&mut self, value: u8) {
             unsafe { ptr::set_memory(self.as_mut_ptr(), value, self.len()) };
         }
@@ -1506,7 +1506,7 @@ fn gt(&self, other: &[T]) -> bool {
 }
 
 /// Extension methods for slices containing integers.
-#[experimental]
+#[unstable]
 pub trait IntSliceExt<U, S> {
     /// Converts the slice to an immutable slice of unsigned integers with the same width.
     fn as_unsigned<'a>(&'a self) -> &'a [U];
@@ -1521,7 +1521,7 @@ pub trait IntSliceExt<U, S> {
 
 macro_rules! impl_int_slice {
     ($u:ty, $s:ty, $t:ty) => {
-        #[experimental]
+        #[unstable]
         impl IntSliceExt<$u, $s> for [$t] {
             #[inline]
             fn as_unsigned(&self) -> &[$u] { unsafe { transmute(self) } }
index 86f34ecd15efeefdef43ac28f2712aaedbcc05e4..a808593ffbd7d61f1cd39515c69adba34799e27a 100644 (file)
@@ -114,7 +114,7 @@ fn discard_doesnt_unborrow() {
 }
 
 #[test]
-#[allow(experimental)]
+#[allow(unstable)]
 fn clone_ref_updates_flag() {
     let x = RefCell::new(0i);
     {
index 1896bdd182ae01e3b586ddd10bd495e2a5943d0b..e7e1ead664cbcb2d3f405e3a2a0801e7c80a766d 100644 (file)
@@ -15,7 +15,7 @@
 //! [mz]: https://code.google.com/p/miniz/
 
 #![crate_name = "flate"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 02eea5d024c7a990ac40800dc9aa1642343a1d1f..a16fc88d58a38013ac81ae16e67b4a0aa373f853 100644 (file)
@@ -15,7 +15,7 @@
 //! generated instead.
 
 #![crate_name = "fmt_macros"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 1d6c99542b58ec014c2aa4ede0d752056176f767..a85c8eed5e24175d950c6005ce48f2c9df2672ab 100644 (file)
@@ -78,7 +78,7 @@
 //! ```
 
 #![crate_name = "getopts"]
-#![experimental = "use the crates.io `getopts` library instead"]
+#![unstable = "use the crates.io `getopts` library instead"]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 9d2318e253e72672d35faaba9a36a2bebaab3a29..d6d76b986e4bd6e6c7d8fda5651b75a03768c228 100644 (file)
 //! * [DOT language](http://www.graphviz.org/doc/info/lang.html)
 
 #![crate_name = "graphviz"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index c39fd074387f51aba0633ce6a1069f1f7d36f039..be630995e24a0c944a0da4a936e212a722b9d28d 100644 (file)
@@ -10,7 +10,7 @@
 
 #![crate_name = "libc"]
 #![crate_type = "rlib"]
-#![cfg_attr(not(feature = "cargo-build"), experimental)]
+#![cfg_attr(not(feature = "cargo-build"), unstable)]
 #![cfg_attr(not(feature = "cargo-build"), staged_api)]
 #![no_std]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
index 0d5f6b65827a495cfa0ff9eb6be72598134901bc..96d31444eee942591d1acb831d939b52eece6488 100644 (file)
 //! if logging is disabled, none of the components of the log will be executed.
 
 #![crate_name = "log"]
-#![experimental = "use the crates.io `log` library instead"]
+#![unstable = "use the crates.io `log` library instead"]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 2fdba8a6c4f960358a1c064d4d6ec7561cdb06ef..e248de10df4965c2a9a9856ba7120ba304a566be 100644 (file)
@@ -17,7 +17,7 @@
 //! internally. The `IndependentSample` trait is for generating values
 //! that do not need to record state.
 
-#![experimental]
+#![unstable]
 
 use core::prelude::*;
 use core::num::{Float, Int};
index 497e339b316c1f0096940329a7e5a732f67b96d7..a533739ee3b92f6a8ce473d934a371dfa23c23d5 100644 (file)
@@ -24,7 +24,7 @@
        html_playground_url = "http://play.rust-lang.org/")]
 
 #![no_std]
-#![experimental]
+#![unstable]
 #![staged_api]
 
 #[macro_use]
index da803aa50119cfbf33d19b93d6ca94ac03589236..19cbead5489e901a81ef3e2b12e1c1b2398818dc 100644 (file)
@@ -16,7 +16,7 @@
 //!     http://www.matroska.org/technical/specs/rfc/index.html
 
 #![crate_name = "rbml"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index d19ce3b460ae5c10bd1286ff2aa8ffae2dde5bd6..bbc2e315409e2e3f08afe55261b26c180832637e 100644 (file)
@@ -16,7 +16,7 @@
 #![crate_name = "regex"]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
-#![experimental = "use the crates.io `regex` library instead"]
+#![unstable = "use the crates.io `regex` library instead"]
 #![staged_api]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
        html_favicon_url = "http://www.rust-lang.org/favicon.ico",
index 16dd32b6be220692e295a96db5cda2804fc790f8..abc51d6240409511fba2615d017ad27abf0ea839 100644 (file)
@@ -255,7 +255,7 @@ pub fn as_str<'a>(&'a self) -> &'a str {
     }
 
     #[doc(hidden)]
-    #[experimental]
+    #[unstable]
     pub fn names_iter<'a>(&'a self) -> NamesIter<'a> {
         match *self {
             Native(ref n) => NamesIterNative(n.names.iter()),
@@ -410,7 +410,7 @@ pub struct Captures<'t> {
 }
 
 impl<'t> Captures<'t> {
-    #[allow(experimental)]
+    #[allow(unstable)]
     fn new(re: &Regex, search: &'t str, locs: CaptureLocs)
           -> Option<Captures<'t>> {
         if !has_match(&locs) {
index e0143917a7cff203d76eed0fb1e85a0afd3981c5..138a49d09557a0ffa84ef628b16fba18bb186621 100644 (file)
@@ -15,7 +15,7 @@
 //! This API is completely unstable and subject to change.
 
 #![crate_name = "rustc"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 7d893f3a106cc7180af782f813563b8132ec228a..7df2de32182356e09cf8282e2623f6aeca866631 100644 (file)
@@ -1630,36 +1630,29 @@ fn check_item(&mut self, cx: &Context, item: &ast::Item) {
     Warn,
     "detects use of #[deprecated] items"
 }
-// FIXME #6875: Change to Warn after std library stabilization is complete
-declare_lint! {
-    EXPERIMENTAL,
-    Allow,
-    "detects use of #[experimental] items"
-}
 
 declare_lint! {
     UNSTABLE,
-    Allow,
+    Warn,
     "detects use of #[unstable] items (incl. items with no stability attribute)"
 }
 
-declare_lint!(STAGED_EXPERIMENTAL, Warn,
-              "detects use of #[experimental] items in staged builds");
-
-declare_lint!(STAGED_UNSTABLE, Warn,
-              "detects use of #[unstable] items (incl. items with no stability attribute) \
-               in staged builds");
-
-/// Checks for use of items with `#[deprecated]`, `#[experimental]` and
+/// Checks for use of items with `#[deprecated]`, `#[unstable]` and
 /// `#[unstable]` attributes, or no stability attribute.
 #[derive(Copy)]
-pub struct Stability;
+pub struct Stability { this_crate_staged: bool }
 
 impl Stability {
+    pub fn new() -> Stability { Stability { this_crate_staged: false } }
+
     fn lint(&self, cx: &Context, id: ast::DefId, span: Span) {
 
         let ref stability = stability::lookup(cx.tcx, id);
         let cross_crate = !ast_util::is_local(id);
+        let staged = (!cross_crate && self.this_crate_staged)
+            || (cross_crate && stability::is_staged_api(cx.tcx, id));
+
+        if !staged { return }
 
         // stability attributes are promises made across crates; only
         // check DEPRECATED for crate-local usage.
@@ -1668,21 +1661,12 @@ fn lint(&self, cx: &Context, id: ast::DefId, span: Span) {
             None if cross_crate => (UNSTABLE, "unmarked"),
             Some(attr::Stability { level: attr::Unstable, .. }) if cross_crate =>
                 (UNSTABLE, "unstable"),
-            Some(attr::Stability { level: attr::Experimental, .. }) if cross_crate =>
-                (EXPERIMENTAL, "experimental"),
             Some(attr::Stability { level: attr::Deprecated, .. }) =>
                 (DEPRECATED, "deprecated"),
             _ => return
         };
 
         output(cx, span, stability, lint, label);
-        if cross_crate && stability::is_staged_api(cx.tcx, id) {
-            if lint.name == UNSTABLE.name {
-                output(cx, span, stability, STAGED_UNSTABLE, label);
-            } else if lint.name == EXPERIMENTAL.name {
-                output(cx, span, stability, STAGED_EXPERIMENTAL, label);
-            }
-        }
 
         fn output(cx: &Context, span: Span, stability: &Option<attr::Stability>,
                   lint: &'static Lint, label: &'static str) {
@@ -1706,7 +1690,7 @@ fn is_internal(&self, cx: &Context, span: Span) -> bool {
 
 impl LintPass for Stability {
     fn get_lints(&self) -> LintArray {
-        lint_array!(DEPRECATED, EXPERIMENTAL, UNSTABLE, STAGED_EXPERIMENTAL, STAGED_UNSTABLE)
+        lint_array!(DEPRECATED, UNSTABLE)
     }
 
     fn check_crate(&mut self, _: &Context, c: &ast::Crate) {
@@ -1717,6 +1701,7 @@ fn check_crate(&mut self, _: &Context, c: &ast::Crate) {
                 match attr.node.value.node {
                     ast::MetaWord(_) => {
                         attr::mark_used(attr);
+                        self.this_crate_staged = true;
                     }
                     _ => (/*pass*/)
                 }
index db4d99fe4940d6669bb06668e2315edc2b77bd72..95e1e8d44bfc5044aec739ec98f5c89ec5aaeb7e 100644 (file)
@@ -209,7 +209,6 @@ macro_rules! add_lint_group {
                      UnsafeBlocks,
                      UnusedMut,
                      UnusedAllocation,
-                     Stability,
                      MissingCopyImplementations,
                      UnstableFeatures,
         );
@@ -218,6 +217,7 @@ macro_rules! add_lint_group {
                               TypeLimits,
                               RawPointerDerive,
                               MissingDoc,
+                              Stability,
         );
 
         add_lint_group!(sess, "bad_style",
@@ -308,18 +308,21 @@ fn maybe_stage_features(&mut self, sess: &Session) {
             UnstableFeatures::Cheat => Allow
         };
         match self.by_name.get("unstable_features") {
-            Some(&Id(lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
-            Some(&Renamed(_, lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
-            None => unreachable!()
-        }
-        match self.by_name.get("staged_unstable") {
-            Some(&Id(lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
-            Some(&Renamed(_, lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
+            Some(&Id(lint_id)) => if self.get_level_source(lint_id).0 != Forbid {
+                self.set_level(lint_id, (lvl, ReleaseChannel))
+            },
+            Some(&Renamed(_, lint_id)) => if self.get_level_source(lint_id).0 != Forbid {
+                self.set_level(lint_id, (lvl, ReleaseChannel))
+            },
             None => unreachable!()
         }
-        match self.by_name.get("staged_experimental") {
-            Some(&Id(lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
-            Some(&Renamed(_, lint_id)) => self.set_level(lint_id, (lvl, ReleaseChannel)),
+        match self.by_name.get("unstable") {
+            Some(&Id(lint_id)) => if self.get_level_source(lint_id).0 != Forbid {
+                self.set_level(lint_id, (lvl, ReleaseChannel))
+            },
+            Some(&Renamed(_, lint_id)) => if self.get_level_source(lint_id).0 != Forbid {
+                self.set_level(lint_id, (lvl, ReleaseChannel))
+            },
             None => unreachable!()
         }
     }
index 8a266a2530b53a94ce64cdfeea76d0ab0c91a0bb..826a35e3bb529b9229f5cea1ffbe7b284f475b18 100644 (file)
@@ -40,7 +40,7 @@
 pub use lint::context::{Context, LintStore, raw_emit_lint, check_crate, gather_attrs};
 
 /// Specification of a single lint.
-#[derive(Copy)]
+#[derive(Copy, Show)]
 pub struct Lint {
     /// A string identifier for the lint.
     ///
@@ -208,7 +208,7 @@ pub fn as_str(&self) -> String {
 }
 
 /// Setting for how to handle a lint.
-#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord)]
+#[derive(Clone, Copy, PartialEq, PartialOrd, Eq, Ord, Show)]
 pub enum Level {
     Allow, Warn, Deny, Forbid
 }
index fcd20158c0a2919fcc296b8773b8dc90d03e159b..7aac6446597108fd126d7f01efe103dcc3b688a8 100644 (file)
@@ -22,7 +22,7 @@
 //! build speedups.
 
 #![crate_name = "rustc_back"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 452eaaaa52dab7bb6e4b58f46403a25b5b51e347..162880d1856916f1cad12c5f963264d02a744ac3 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![crate_name = "rustc_borrowck"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 27e1eaacdfd993d2798c0ac7218269f4707c1f93..26790bfcde022eb142ff8912af150f966bc6f7db 100644 (file)
@@ -15,7 +15,7 @@
 //! This API is completely unstable and subject to change.
 
 #![crate_name = "rustc_driver"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 4a281c413d6fc11991c1e767d6f4f62ab4cfda46..61363e5423b6653fffa3330e763d4f782d3d4eb5 100644 (file)
@@ -14,7 +14,7 @@
 #![allow(dead_code)]
 
 #![crate_name = "rustc_llvm"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index a1ae96490cad7c679a4f799d014b206797d63c8d..65075745ee0d9933904d76942059f19b753520f0 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![crate_name = "rustc_resolve"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 5da51697d2fee0d5f2abf8021ba97ab33e7a2cc1..97b3dc12f4c4d2f212ffcd8e9c9b8a36eb6f2c79 100644 (file)
@@ -15,7 +15,7 @@
 //! This API is completely unstable and subject to change.
 
 #![crate_name = "rustc_trans"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 76ac4b2e8af4c004156531bb5a803e7870e673ad..5824fb776bb85412a3101b8023c79a592da89a02 100644 (file)
@@ -64,7 +64,7 @@
 */
 
 #![crate_name = "rustc_typeck"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 56f5c23f6f1bbbb8f2122ebbaabff5632b846e5f..1bbbcfb3838bdde461dfd775c966129e01d38c54 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 #![crate_name = "rustdoc"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index 671408acebf0d51174ab42e8af3478dda4495ebf..77c2315194bb4e26aeb8fc78f208317992c5e757 100644 (file)
@@ -22,7 +22,7 @@
 use vec::Vec;
 
 /// Extension methods for ASCII-subset only operations on owned strings
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 pub trait OwnedAsciiExt {
     /// Convert the string to ASCII upper case:
     /// ASCII letters 'a' to 'z' are mapped to 'A' to 'Z',
@@ -36,7 +36,7 @@ pub trait OwnedAsciiExt {
 }
 
 /// Extension methods for ASCII-subset only operations on string slices
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 pub trait AsciiExt<T = Self> {
     /// Check if within the ASCII range.
     fn is_ascii(&self) -> bool;
@@ -57,7 +57,7 @@ pub trait AsciiExt<T = Self> {
     fn eq_ignore_ascii_case(&self, other: &Self) -> bool;
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl AsciiExt<String> for str {
     #[inline]
     fn is_ascii(&self) -> bool {
@@ -82,7 +82,7 @@ fn eq_ignore_ascii_case(&self, other: &str) -> bool {
     }
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl OwnedAsciiExt for String {
     #[inline]
     fn into_ascii_uppercase(self) -> String {
@@ -97,7 +97,7 @@ fn into_ascii_lowercase(self) -> String {
     }
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl AsciiExt<Vec<u8>> for [u8] {
     #[inline]
     fn is_ascii(&self) -> bool {
@@ -123,7 +123,7 @@ fn eq_ignore_ascii_case(&self, other: &[u8]) -> bool {
     }
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl OwnedAsciiExt for Vec<u8> {
     #[inline]
     fn into_ascii_uppercase(mut self) -> Vec<u8> {
@@ -142,7 +142,7 @@ fn into_ascii_lowercase(mut self) -> Vec<u8> {
     }
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl AsciiExt for u8 {
     #[inline]
     fn is_ascii(&self) -> bool {
@@ -165,7 +165,7 @@ fn eq_ignore_ascii_case(&self, other: &u8) -> bool {
     }
 }
 
-#[experimental = "would prefer to do this in a more general way"]
+#[unstable = "would prefer to do this in a more general way"]
 impl AsciiExt for char {
     #[inline]
     fn is_ascii(&self) -> bool {
index 8dc41368e7f92d40ea64d9d57da763c02f3ca60e..3a059766fef8e24f95f8bf6a8dced8714320ab0c 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![experimental]
+#![unstable]
 
 //! A typesafe bitmask flag generator.
 
index e43cc053ba07904883cabd7c23e61d6bd215c5a4..456f3763b39162d523fe1ab646715fa6c1a2ded7 100644 (file)
@@ -632,7 +632,7 @@ fn first_bucket_raw(&self) -> RawBucket<K, V> {
 
     /// Creates a new raw table from a given capacity. All buckets are
     /// initially empty.
-    #[allow(experimental)]
+    #[allow(unstable)]
     pub fn new(capacity: uint) -> RawTable<K, V> {
         unsafe {
             let ret = RawTable::new_uninitialized(capacity);
index 2d013a8a5b830325c083a49e35c3ccfa0d1fd342..3eeb09b79dab23904539f68eec00317e540a303a 100644 (file)
@@ -12,7 +12,7 @@
 //!
 //! A simple wrapper over the platform's dynamic library facilities
 
-#![experimental]
+#![unstable]
 #![allow(missing_docs)]
 
 use prelude::v1::*;
index dbc88ddf0a0404c131fb6779f7a61b54ecb4fb02..54191cf24040e743eff746b2b3e4d1d07cf66203 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![experimental]
+#![unstable]
 
 use prelude::v1::*;
 
index 96fff64d2214d9e5ac20a388fcb9b4fdac7082ee..907925e93d3999145b8a3aa470c9e3e75ad64c61 100644 (file)
 //! them with the same character. For example, the `{` character is escaped with
 //! `{{` and the `}` character is escaped with `}}`.
 
-#![experimental]
+#![unstable]
 
 use string;
 
 /// let s = fmt::format(format_args!("Hello, {}!", "world"));
 /// assert_eq!(s, "Hello, world!".to_string());
 /// ```
-#[experimental = "this is an implementation detail of format! and should not \
+#[unstable = "this is an implementation detail of format! and should not \
                   be called directly"]
 pub fn format(args: Arguments) -> string::String {
     let mut output = string::String::new();
index 1c48b20c4447f0eba091a41dfa2b3d0bcda8731d..3968dda2a82026051a4687abf6a487314a63fa1b 100644 (file)
 //! concerned with error handling; instead its caller is responsible for
 //! responding to errors that may occur while attempting to read the numbers.
 
-#![experimental]
+#![unstable]
 #![deny(unused_must_use)]
 
 pub use self::SeekStyle::*;
index 29295b5751cd4c92aec5c684ac8b8106d057a9d6..42d9fff6d151da84989f9626880067cf7a5e54c4 100644 (file)
@@ -68,7 +68,7 @@ pub fn connect<P: BytesContainer>(path: P) -> IoResult<UnixStream> {
     ///
     /// If a `timeout` with zero or negative duration is specified then
     /// the function returns `Err`, with the error kind set to `TimedOut`.
-    #[experimental = "the timeout argument is likely to change types"]
+    #[unstable = "the timeout argument is likely to change types"]
     pub fn connect_timeout<P>(path: P, timeout: Duration)
                               -> IoResult<UnixStream>
                               where P: BytesContainer {
@@ -107,7 +107,7 @@ pub fn close_write(&mut self) -> IoResult<()> {
     /// Sets the read/write timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_timeout(timeout_ms)
     }
@@ -115,7 +115,7 @@ pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
     /// Sets the read timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_read_timeout(timeout_ms)
     }
@@ -123,7 +123,7 @@ pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
     /// Sets the write timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_write_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_write_timeout(timeout_ms)
     }
@@ -219,7 +219,7 @@ impl UnixAcceptor {
     /// When using this method, it is likely necessary to reset the timeout as
     /// appropriate, the timeout specified is specific to this object, not
     /// specific to the next request.
-    #[experimental = "the name and arguments to this function are likely \
+    #[unstable = "the name and arguments to this function are likely \
                       to change"]
     pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_timeout(timeout_ms)
@@ -229,7 +229,7 @@ pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
     ///
     /// This function has the same semantics as `TcpAcceptor::close_accept`, and
     /// more information can be found in that documentation.
-    #[experimental]
+    #[unstable]
     pub fn close_accept(&mut self) -> IoResult<()> {
         self.inner.close_accept()
     }
index 7a376b50cd7dd9ad8705684c93bb89bfee84b263..6a3f5fcb2c69902d43b01c0afa8d23796c9c1307 100644 (file)
@@ -85,7 +85,7 @@ pub fn connect<A: ToSocketAddr>(addr: A) -> IoResult<TcpStream> {
     ///
     /// If a `timeout` with zero or negative duration is specified then
     /// the function returns `Err`, with the error kind set to `TimedOut`.
-    #[experimental = "the timeout argument may eventually change types"]
+    #[unstable = "the timeout argument may eventually change types"]
     pub fn connect_timeout<A: ToSocketAddr>(addr: A,
                                             timeout: Duration) -> IoResult<TcpStream> {
         if timeout <= Duration::milliseconds(0) {
@@ -109,7 +109,7 @@ pub fn socket_name(&mut self) -> IoResult<SocketAddr> {
     }
 
     /// Sets the nodelay flag on this connection to the boolean specified
-    #[experimental]
+    #[unstable]
     pub fn set_nodelay(&mut self, nodelay: bool) -> IoResult<()> {
         self.inner.set_nodelay(nodelay)
     }
@@ -119,7 +119,7 @@ pub fn set_nodelay(&mut self, nodelay: bool) -> IoResult<()> {
     /// If the value specified is `None`, then the keepalive flag is cleared on
     /// this connection. Otherwise, the keepalive timeout will be set to the
     /// specified time, in seconds.
-    #[experimental]
+    #[unstable]
     pub fn set_keepalive(&mut self, delay_in_seconds: Option<uint>) -> IoResult<()> {
         self.inner.set_keepalive(delay_in_seconds)
     }
@@ -187,7 +187,7 @@ pub fn close_write(&mut self) -> IoResult<()> {
     ///
     /// For clarification on the semantics of interrupting a read and a write,
     /// take a look at `set_read_timeout` and `set_write_timeout`.
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_timeout(timeout_ms)
     }
@@ -204,7 +204,7 @@ pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
     /// action is taken. Otherwise, the read operation will be scheduled to
     /// promptly return. If a timeout error is returned, then no data was read
     /// during the timeout period.
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_read_timeout(timeout_ms)
     }
@@ -231,7 +231,7 @@ pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
     /// does not know how many bytes were written as part of the timeout
     /// operation. It may be the case that bytes continue to be written in an
     /// asynchronous fashion after the call to write returns.
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_write_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_write_timeout(timeout_ms)
     }
@@ -374,7 +374,7 @@ impl TcpAcceptor {
     /// # Example
     ///
     /// ```no_run
-    /// # #![allow(experimental)]
+    /// # #![allow(unstable)]
     /// use std::io::TcpListener;
     /// use std::io::{Listener, Acceptor, TimedOut};
     ///
@@ -397,7 +397,7 @@ impl TcpAcceptor {
     /// a.set_timeout(None);
     /// let socket = a.accept();
     /// ```
-    #[experimental = "the type of the argument and name of this function are \
+    #[unstable = "the type of the argument and name of this function are \
                       subject to change"]
     pub fn set_timeout(&mut self, ms: Option<u64>) { self.inner.set_timeout(ms); }
 
@@ -418,7 +418,7 @@ impl TcpAcceptor {
     /// # Example
     ///
     /// ```
-    /// # #![allow(experimental)]
+    /// # #![allow(unstable)]
     /// use std::io::{TcpListener, Listener, Acceptor, EndOfFile};
     /// use std::thread::Thread;
     ///
@@ -444,7 +444,7 @@ impl TcpAcceptor {
     /// // Signal our accept loop to exit
     /// assert!(a.close_accept().is_ok());
     /// ```
-    #[experimental]
+    #[unstable]
     pub fn close_accept(&mut self) -> IoResult<()> {
         self.inner.close_accept()
     }
@@ -482,7 +482,7 @@ fn as_inner(&self) -> &TcpAcceptorImp {
 }
 
 #[cfg(test)]
-#[allow(experimental)]
+#[allow(unstable)]
 mod test {
     use prelude::v1::*;
 
index a4db0d4f5de773ef4967800b5f25cbd0634c8a42..8cdad3f528a4856fcfa8b760a7010d2e17e9c62e 100644 (file)
@@ -92,13 +92,13 @@ pub fn socket_name(&mut self) -> IoResult<SocketAddr> {
     }
 
     /// Joins a multicast IP address (becomes a member of it)
-    #[experimental]
+    #[unstable]
     pub fn join_multicast(&mut self, multi: IpAddr) -> IoResult<()> {
         self.inner.join_multicast(multi)
     }
 
     /// Leaves a multicast IP address (drops membership from it)
-    #[experimental]
+    #[unstable]
     pub fn leave_multicast(&mut self, multi: IpAddr) -> IoResult<()> {
         self.inner.leave_multicast(multi)
     }
@@ -106,25 +106,25 @@ pub fn leave_multicast(&mut self, multi: IpAddr) -> IoResult<()> {
     /// Set the multicast loop flag to the specified value
     ///
     /// This lets multicast packets loop back to local sockets (if enabled)
-    #[experimental]
+    #[unstable]
     pub fn set_multicast_loop(&mut self, on: bool) -> IoResult<()> {
         self.inner.set_multicast_loop(on)
     }
 
     /// Sets the multicast TTL
-    #[experimental]
+    #[unstable]
     pub fn set_multicast_ttl(&mut self, ttl: int) -> IoResult<()> {
         self.inner.multicast_time_to_live(ttl)
     }
 
     /// Sets this socket's TTL
-    #[experimental]
+    #[unstable]
     pub fn set_ttl(&mut self, ttl: int) -> IoResult<()> {
         self.inner.time_to_live(ttl)
     }
 
     /// Sets the broadcast flag on or off
-    #[experimental]
+    #[unstable]
     pub fn set_broadcast(&mut self, broadcast: bool) -> IoResult<()> {
         self.inner.set_broadcast(broadcast)
     }
@@ -132,7 +132,7 @@ pub fn set_broadcast(&mut self, broadcast: bool) -> IoResult<()> {
     /// Sets the read/write timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_timeout(timeout_ms)
     }
@@ -140,7 +140,7 @@ pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
     /// Sets the read timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_read_timeout(timeout_ms)
     }
@@ -148,7 +148,7 @@ pub fn set_read_timeout(&mut self, timeout_ms: Option<u64>) {
     /// Sets the write timeout for this socket.
     ///
     /// For more information, see `TcpStream::set_timeout`
-    #[experimental = "the timeout argument may change in type and value"]
+    #[unstable = "the timeout argument may change in type and value"]
     pub fn set_write_timeout(&mut self, timeout_ms: Option<u64>) {
         self.inner.set_write_timeout(timeout_ms)
     }
@@ -176,7 +176,7 @@ fn as_inner(&self) -> &UdpSocketImp {
 }
 
 #[cfg(test)]
-#[allow(experimental)]
+#[allow(unstable)]
 mod test {
     use prelude::v1::*;
 
index f824d821601256baef22483f5deeb90351c7d45d..a093e748d573653a80f5cd01ff392fef1289c72a 100644 (file)
@@ -10,7 +10,7 @@
 
 //! Bindings for executing child processes
 
-#![allow(experimental)]
+#![allow(unstable)]
 #![allow(non_upper_case_globals)]
 
 pub use self::StdioContainer::*;
@@ -661,7 +661,7 @@ pub fn wait(&mut self) -> IoResult<ProcessExit> {
     /// # Example
     ///
     /// ```no_run
-    /// # #![allow(experimental)]
+    /// # #![allow(unstable)]
     /// use std::io::{Command, IoResult};
     /// use std::io::process::ProcessExit;
     ///
@@ -689,7 +689,7 @@ pub fn wait(&mut self) -> IoResult<ProcessExit> {
     ///     p.wait()
     /// }
     /// ```
-    #[experimental = "the type of the timeout is likely to change"]
+    #[unstable = "the type of the timeout is likely to change"]
     pub fn set_timeout(&mut self, timeout_ms: Option<u64>) {
         self.deadline = timeout_ms.map(|i| i + sys::timer::now()).unwrap_or(0);
     }
index 0594b711ad62e418945f13edf95dc4ba9eb4890c..0f293d789ab0abfcb5d605c3fad2ebd4032bf56b 100644 (file)
@@ -14,7 +14,7 @@
 //! library. Each macro is available for use when linking against the standard
 //! library.
 
-#![experimental]
+#![unstable]
 
 /// The entry point for panic of Rust tasks.
 ///
@@ -324,7 +324,7 @@ macro_rules! try {
 ///
 /// For more information about select, see the `std::sync::mpsc::Select` structure.
 #[macro_export]
-#[experimental]
+#[unstable]
 macro_rules! select {
     (
         $($name:pat = $rx:ident.$meth:ident() => $code:expr),+
index 0a1c17fab471e485c598df3c6749230349e25ec8..adbce893887709912904e4cca5d9879c55d00031 100644 (file)
@@ -366,7 +366,7 @@ fn atanh(self) -> f32 {
 ///
 /// * num - The float value
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_string(num: f32) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigAll, ExpNone, false);
@@ -379,7 +379,7 @@ pub fn to_string(num: f32) -> String {
 ///
 /// * num - The float value
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_hex(num: f32) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 16u, true, SignNeg, DigAll, ExpNone, false);
@@ -394,7 +394,7 @@ pub fn to_str_hex(num: f32) -> String {
 /// * num - The float value
 /// * radix - The base to use
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_radix_special(num: f32, rdx: uint) -> (String, bool) {
     strconv::float_to_str_common(num, rdx, true, SignNeg, DigAll, ExpNone, false)
 }
@@ -407,7 +407,7 @@ pub fn to_str_radix_special(num: f32, rdx: uint) -> (String, bool) {
 /// * num - The float value
 /// * digits - The number of significant digits
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exact(num: f32, dig: uint) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigExact(dig), ExpNone, false);
@@ -422,7 +422,7 @@ pub fn to_str_exact(num: f32, dig: uint) -> String {
 /// * num - The float value
 /// * digits - The number of significant digits
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_digits(num: f32, dig: uint) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigMax(dig), ExpNone, false);
@@ -438,7 +438,7 @@ pub fn to_str_digits(num: f32, dig: uint) -> String {
 /// * digits - The number of digits after the decimal point
 /// * upper - Use `E` instead of `e` for the exponent sign
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exp_exact(num: f32, dig: uint, upper: bool) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigExact(dig), ExpDec, upper);
@@ -454,7 +454,7 @@ pub fn to_str_exp_exact(num: f32, dig: uint, upper: bool) -> String {
 /// * digits - The number of digits after the decimal point
 /// * upper - Use `E` instead of `e` for the exponent sign
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exp_digits(num: f32, dig: uint, upper: bool) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigMax(dig), ExpDec, upper);
index 2806154a01681fb7440bca34fc6f4a1ef2bb453d..baff14125ee17120c9e778cf5e2e17d4a4e13a6e 100644 (file)
@@ -375,7 +375,7 @@ fn atanh(self) -> f64 {
 ///
 /// * num - The float value
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_string(num: f64) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigAll, ExpNone, false);
@@ -388,7 +388,7 @@ pub fn to_string(num: f64) -> String {
 ///
 /// * num - The float value
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_hex(num: f64) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 16u, true, SignNeg, DigAll, ExpNone, false);
@@ -403,7 +403,7 @@ pub fn to_str_hex(num: f64) -> String {
 /// * num - The float value
 /// * radix - The base to use
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_radix_special(num: f64, rdx: uint) -> (String, bool) {
     strconv::float_to_str_common(num, rdx, true, SignNeg, DigAll, ExpNone, false)
 }
@@ -416,7 +416,7 @@ pub fn to_str_radix_special(num: f64, rdx: uint) -> (String, bool) {
 /// * num - The float value
 /// * digits - The number of significant digits
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exact(num: f64, dig: uint) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigExact(dig), ExpNone, false);
@@ -431,7 +431,7 @@ pub fn to_str_exact(num: f64, dig: uint) -> String {
 /// * num - The float value
 /// * digits - The number of significant digits
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_digits(num: f64, dig: uint) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigMax(dig), ExpNone, false);
@@ -447,7 +447,7 @@ pub fn to_str_digits(num: f64, dig: uint) -> String {
 /// * digits - The number of digits after the decimal point
 /// * upper - Use `E` instead of `e` for the exponent sign
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exp_exact(num: f64, dig: uint, upper: bool) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigExact(dig), ExpDec, upper);
@@ -463,7 +463,7 @@ pub fn to_str_exp_exact(num: f64, dig: uint, upper: bool) -> String {
 /// * digits - The number of digits after the decimal point
 /// * upper - Use `E` instead of `e` for the exponent sign
 #[inline]
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub fn to_str_exp_digits(num: f64, dig: uint, upper: bool) -> String {
     let (r, _) = strconv::float_to_str_common(
         num, 10u, true, SignNeg, DigMax(dig), ExpDec, upper);
index 4c52f29b12d763a2433b29af0341b0c29ac1b656..ec168eaaa9de65952be8f390c22dcce43ed18391 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![experimental]
+#![unstable]
 #![doc(hidden)]
 
 macro_rules! assert_approx_eq {
index ebcb20861879c87aebf86b92b17cc568e198ea92..5bc5415287497b99905a1eac21a0ee482fe1aa15 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![experimental]
+#![unstable]
 #![doc(hidden)]
 
 macro_rules! int_module { ($T:ty) => (
index 9c6911cf4d14a83b3cdb2957fdc4170ebae854e8..e804408b4d0e258ca2acd7cf22f808e95a3cc0b3 100644 (file)
@@ -33,7 +33,7 @@
 
 use option::Option;
 
-#[experimental = "may be removed or relocated"]
+#[unstable = "may be removed or relocated"]
 pub mod strconv;
 
 /// Mathematical operations on primitive floating point numbers.
index 4ce15491a0e539dd6bb7be481f171b994083521c..f480a3b420f54a1dae7cbb523cbad186ea531dce 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![experimental]
+#![unstable]
 #![doc(hidden)]
 #![allow(unsigned_negation)]
 
index cef85c260a7e570d1a5908b18e8e7482374fc685..6e3949b9e22d0efe26678e21fd01935bcc920214 100644 (file)
@@ -22,7 +22,7 @@
 //! so we will not _hide_ the facts of which OS the user is on -- they should be given the
 //! opportunity to write OS-ignorant code by default.
 
-#![experimental]
+#![unstable]
 
 #![allow(missing_docs)]
 #![allow(non_snake_case)]
index b474ae4e37195b78bb4b3376edbac6b36c751a8f..1ec7b6b3edcbbd4c351c0d4b4eb1870246314ef2 100644 (file)
@@ -59,7 +59,7 @@
 //! println!("path exists: {}", path.exists());
 //! ```
 
-#![experimental]
+#![unstable]
 
 use core::marker::Sized;
 use ffi::CString;
index 3fa1efe1ccdfe569d4707209951efc6364761c02..60d490982db7ea284bb0c250c3a14baddff309c4 100644 (file)
 //! }
 //! ```
 
-#![experimental]
+#![unstable]
 
 use cell::RefCell;
 use clone::Clone;
index 5ef55f5b487d0ad07563d5efe2b3485c32d1076f..e3e4e132b8172925c265ed8a44263beea85fc608 100644 (file)
@@ -16,7 +16,7 @@
 //! and should be considered as private implementation details for the
 //! time being.
 
-#![experimental]
+#![unstable]
 
 // FIXME: this should not be here.
 #![allow(missing_docs)]
index 03876189da9ccd6bf393538dc1909c3e7a2fe50c..4cd0b29688a708c1af3f67689a992b39c4f3e995 100644 (file)
@@ -582,7 +582,7 @@ fn begin_unwind_inner(msg: Box<Any + Send>, file_line: &(&'static str, uint)) ->
 /// Only a limited number of callbacks can be registered, and this function
 /// returns whether the callback was successfully registered or not. It is not
 /// currently possible to unregister a callback once it has been registered.
-#[experimental]
+#[unstable]
 pub unsafe fn register(f: Callback) -> bool {
     match CALLBACK_CNT.fetch_add(1, Ordering::SeqCst) {
         // The invocation code has knowledge of this window where the count has
index 862808a9e3d90f4897cddd67f34a48c93c019b9f..f4fbd378899e093035001f6b64949433a946d0ad 100644 (file)
@@ -12,7 +12,7 @@
 //! the standard library This varies per-platform, but these libraries are
 //! necessary for running libstd.
 
-#![experimental]
+#![unstable]
 
 // All platforms need to link to rustrt
 #[cfg(not(test))]
index f8eae1322bf1f7b9bbeb5e2c6b38d870d6c1a018..83de98fdbffee87b396f0d2e12230c1e0ec83734 100644 (file)
@@ -35,7 +35,7 @@
 //! method, and see the method for more information about it. Due to this
 //! caveat, this queue may not be appropriate for all use-cases.
 
-#![experimental]
+#![unstable]
 
 // http://www.1024cores.net/home/lock-free-algorithms
 //                         /queues/non-intrusive-mpsc-node-based-queue
index b7bb22b3ef3147ea94304e90554b1752ae8643da..0da458a51f10848b9988bf1b202c9d4569e08496 100644 (file)
@@ -46,7 +46,7 @@
 //! ```
 
 #![allow(dead_code)]
-#![experimental = "This implementation, while likely sufficient, is unsafe and \
+#![unstable = "This implementation, while likely sufficient, is unsafe and \
                    likely to be error prone. At some point in the future this \
                    module will likely be replaced, and it is currently \
                    unknown how much API breakage that will cause. The ability \
index e8d6e380be5de0280e6e2d4bb0f463ba7352233a..46c69f6f5478927b2713374b10d4a1e276af509e 100644 (file)
@@ -33,7 +33,7 @@
 //! concurrently between two tasks. This data structure is safe to use and
 //! enforces the semantics that there is one pusher and one popper.
 
-#![experimental]
+#![unstable]
 
 use core::prelude::*;
 
index ae3c939bf78bde334f417a208bfc7d09a1720407..0e4a9d1b307f7636e26e722c13d91f7c113b7993 100644 (file)
@@ -29,7 +29,7 @@
 //! }
 //! ```
 
-#![experimental]
+#![unstable]
 
 use sys_common::AsInner;
 use libc;
index 049aca3f59064ea2ddff1867a121e4201199dfcf..87ff31ab73cda64236b8f4262506a2797f6bac5d 100644 (file)
@@ -14,7 +14,7 @@
 //! descriptors, and sockets, but its functionality will grow over
 //! time.
 
-#![experimental]
+#![unstable]
 
 use sys_common::AsInner;
 use libc;
index c103365745cd612207f2112322a3c21f9c70b0f7..932556fe1a65d39c15a45d0b3c12a33d73ae622b 100644 (file)
@@ -207,14 +207,14 @@ pub fn stack_size(mut self, size: uint) -> Builder {
     }
 
     /// Redirect thread-local stdout.
-    #[experimental = "Will likely go away after proc removal"]
+    #[unstable = "Will likely go away after proc removal"]
     pub fn stdout(mut self, stdout: Box<Writer + Send>) -> Builder {
         self.stdout = Some(stdout);
         self
     }
 
     /// Redirect thread-local stderr.
-    #[experimental = "Will likely go away after proc removal"]
+    #[unstable = "Will likely go away after proc removal"]
     pub fn stderr(mut self, stderr: Box<Writer + Send>) -> Builder {
         self.stderr = Some(stderr);
         self
@@ -483,7 +483,7 @@ pub fn join(mut self) -> Result<T> {
 
 impl<T: Send> JoinGuard<'static, T> {
     /// Detaches the child thread, allowing it to outlive its parent.
-    #[experimental = "unsure whether this API imposes limitations elsewhere"]
+    #[unstable = "unsure whether this API imposes limitations elsewhere"]
     pub fn detach(mut self) {
         unsafe { imp::detach(self.native) };
         self.joined = true; // avoid joining in the destructor
index a651d927c1431fd601caedb5d73f566104accbfc..162c3677168f806ff12dbb97444a7fe751fdb5c8 100644 (file)
@@ -10,7 +10,7 @@
 
 //! Temporal quantification
 
-#![experimental]
+#![unstable]
 
 use {fmt, i64};
 use ops::{Add, Sub, Mul, Div, Neg, FnOnce};
index 1efd6a87f863f3703eb90fb1b204f0bd7af05955..eb6a2a43d431f40ab02c2d9722c19bfeb0fce270 100644 (file)
@@ -15,7 +15,7 @@
 //! This API is completely unstable and subject to change.
 
 #![crate_name = "syntax"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "dylib"]
 #![crate_type = "rlib"]
index b4f224cb4a7ced9eacf27a1354f16a85fed89b3d..7a161241ed682abc6b435eaecd4c69c9e1340889 100644 (file)
@@ -39,7 +39,7 @@
 //! [ti]: https://en.wikipedia.org/wiki/Terminfo
 
 #![crate_name = "term"]
-#![experimental = "use the crates.io `term` library instead"]
+#![unstable = "use the crates.io `term` library instead"]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index d04308814f85ba1557a18074986df4c0c282bb1c..cb6405be7ee2f82b8329f257a54ec5c67946d472 100644 (file)
@@ -24,7 +24,7 @@
 // build off of.
 
 #![crate_name = "test"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![crate_type = "dylib"]
index 27255cc33ee6a45240f2d70e53e19998ff8b9fd3..ee508572adbd8b11dcb63364777000bba2d30f1b 100644 (file)
@@ -21,7 +21,7 @@
 //! (yet) aim to provide a full set of Unicode tables.
 
 #![crate_name = "unicode"]
-#![experimental]
+#![unstable]
 #![staged_api]
 #![crate_type = "rlib"]
 #![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
index 5693c222de123262b874b37e9d5e737eaab80332..4142a62ba66644bc52acfdc42a9834dd49eeb132 100644 (file)
@@ -112,7 +112,7 @@ pub trait CharExt {
     /// 'XID_Start' is a Unicode Derived Property specified in
     /// [UAX #31](http://unicode.org/reports/tr31/#NFKC_Modifications),
     /// mostly similar to ID_Start but modified for closure under NFKx.
-    #[experimental = "mainly needed for compiler internals"]
+    #[unstable = "mainly needed for compiler internals"]
     fn is_xid_start(self) -> bool;
 
     /// Returns whether the specified `char` satisfies the 'XID_Continue'
@@ -121,7 +121,7 @@ pub trait CharExt {
     /// 'XID_Continue' is a Unicode Derived Property specified in
     /// [UAX #31](http://unicode.org/reports/tr31/#NFKC_Modifications),
     /// mostly similar to 'ID_Continue' but modified for closure under NFKx.
-    #[experimental = "mainly needed for compiler internals"]
+    #[unstable = "mainly needed for compiler internals"]
     fn is_xid_continue(self) -> bool;
 
     /// Indicates whether a character is in lowercase.
@@ -171,7 +171,7 @@ pub trait CharExt {
     ///
     /// Returns the lowercase equivalent of the character, or the character
     /// itself if no conversion is possible.
-    #[experimental = "pending case transformation decisions"]
+    #[unstable = "pending case transformation decisions"]
     fn to_lowercase(self) -> char;
 
     /// Converts a character to its uppercase equivalent.
@@ -194,7 +194,7 @@ pub trait CharExt {
     /// [`SpecialCasing`.txt`]: ftp://ftp.unicode.org/Public/UNIDATA/SpecialCasing.txt
     ///
     /// [2]: http://www.unicode.org/versions/Unicode4.0.0/ch03.pdf#G33992
-    #[experimental = "pending case transformation decisions"]
+    #[unstable = "pending case transformation decisions"]
     fn to_uppercase(self) -> char;
 
     /// Returns this character's displayed width in columns, or `None` if it is a
@@ -206,7 +206,7 @@ pub trait CharExt {
     /// [Unicode Standard Annex #11](http://www.unicode.org/reports/tr11/)
     /// recommends that these characters be treated as 1 column (i.e.,
     /// `is_cjk` = `false`) if the context cannot be reliably determined.
-    #[experimental = "needs expert opinion. is_cjk flag stands out as ugly"]
+    #[unstable = "needs expert opinion. is_cjk flag stands out as ugly"]
     fn width(self, is_cjk: bool) -> Option<uint>;
 }
 
@@ -238,10 +238,10 @@ fn is_alphabetic(self) -> bool {
         }
     }
 
-    #[experimental = "mainly needed for compiler internals"]
+    #[unstable = "mainly needed for compiler internals"]
     fn is_xid_start(self) -> bool { derived_property::XID_Start(self) }
 
-    #[experimental = "mainly needed for compiler internals"]
+    #[unstable = "mainly needed for compiler internals"]
     fn is_xid_continue(self) -> bool { derived_property::XID_Continue(self) }
 
     #[stable]
@@ -288,12 +288,12 @@ fn is_numeric(self) -> bool {
         }
     }
 
-    #[experimental = "pending case transformation decisions"]
+    #[unstable = "pending case transformation decisions"]
     fn to_lowercase(self) -> char { conversions::to_lower(self) }
 
-    #[experimental = "pending case transformation decisions"]
+    #[unstable = "pending case transformation decisions"]
     fn to_uppercase(self) -> char { conversions::to_upper(self) }
 
-    #[experimental = "needs expert opinion. is_cjk flag stands out as ugly"]
+    #[unstable = "needs expert opinion. is_cjk flag stands out as ugly"]
     fn width(self, is_cjk: bool) -> Option<uint> { charwidth::width(self, is_cjk) }
 }
index 5691ce3bfa7404e373bad991b7df0cf64face8a8..7a01ce3de0bcfea37dd1615d2f1ec54fdb72779f 100644 (file)
@@ -9,7 +9,8 @@
 // except according to those terms.
 #![crate_name="inherited_stability"]
 #![crate_type = "lib"]
-#![experimental]
+#![unstable]
+#![staged_api]
 
 pub fn experimental() {}
 
@@ -26,7 +27,7 @@ pub fn stable() {}
 
 #[unstable]
 pub mod unstable_mod {
-    #[experimental]
+    #[unstable]
     pub fn experimental() {}
 
     pub fn unstable() {}
index 181b651ef521c8cc5c700407593a1d5e603be308..adbb90fe6c8246a58e9e47f01849b643e8bbb525 100755 (executable)
 
 #![crate_name="lint_output_format"]
 #![crate_type = "lib"]
+#![staged_api]
 
 #[deprecated]
 pub fn foo() -> uint {
     20
 }
 
-#[experimental]
+#[unstable]
 pub fn bar() -> uint {
     40
 }
index 708830d02598643bed2c33caa802baccd910b628..73724713b21c4f41d15968ae86f19dba230f407c 100644 (file)
@@ -9,15 +9,16 @@
 // except according to those terms.
 #![crate_name="lint_stability"]
 #![crate_type = "lib"]
+#![staged_api]
 
 #[deprecated]
 pub fn deprecated() {}
 #[deprecated="text"]
 pub fn deprecated_text() {}
 
-#[experimental]
+#[unstable]
 pub fn experimental() {}
-#[experimental="text"]
+#[unstable="text"]
 pub fn experimental_text() {}
 
 #[unstable]
@@ -51,9 +52,9 @@ pub fn method_deprecated(&self) {}
     #[deprecated="text"]
     pub fn method_deprecated_text(&self) {}
 
-    #[experimental]
+    #[unstable]
     pub fn method_experimental(&self) {}
-    #[experimental="text"]
+    #[unstable="text"]
     pub fn method_experimental_text(&self) {}
 
     #[unstable]
@@ -85,9 +86,9 @@ fn trait_deprecated(&self) {}
     #[deprecated="text"]
     fn trait_deprecated_text(&self) {}
 
-    #[experimental]
+    #[unstable]
     fn trait_experimental(&self) {}
-    #[experimental="text"]
+    #[unstable="text"]
     fn trait_experimental_text(&self) {}
 
     #[unstable]
@@ -115,12 +116,12 @@ fn trait_frozen_text(&self) {}
 
 impl Trait for MethodTester {}
 
-#[experimental]
+#[unstable]
 pub trait ExperimentalTrait {}
 
 #[deprecated]
 pub struct DeprecatedStruct { pub i: int }
-#[experimental]
+#[unstable]
 pub struct ExperimentalStruct { pub i: int }
 #[unstable]
 pub struct UnstableStruct { pub i: int }
@@ -134,7 +135,7 @@ pub struct LockedStruct { pub i: int }
 
 #[deprecated]
 pub struct DeprecatedUnitStruct;
-#[experimental]
+#[unstable]
 pub struct ExperimentalUnitStruct;
 #[unstable]
 pub struct UnstableUnitStruct;
@@ -149,7 +150,7 @@ pub struct LockedStruct { pub i: int }
 pub enum Enum {
     #[deprecated]
     DeprecatedVariant,
-    #[experimental]
+    #[unstable]
     ExperimentalVariant,
     #[unstable]
     UnstableVariant,
@@ -165,7 +166,7 @@ pub enum Enum {
 
 #[deprecated]
 pub struct DeprecatedTupleStruct(pub int);
-#[experimental]
+#[unstable]
 pub struct ExperimentalTupleStruct(pub int);
 #[unstable]
 pub struct UnstableTupleStruct(pub int);
index 6b2e8e7758f1aa60358c71e665da823b9cefc908..de806c65bebc293761cff832bae724acaabd0012 100644 (file)
@@ -10,3 +10,4 @@
 
 #![cfg_attr(foo, experimental)]
 #![cfg_attr(not(foo), stable)]
+#![staged_api]
index 3387b319abfd506855ba0e7d376de21cf96fdd48..842f35b08aec3a04cc460a0fd491baf777c297f1 100644 (file)
@@ -10,6 +10,6 @@
 
 // compile-flags:--cfg foo
 
-#![cfg_attr(foo, experimental)]
+#![cfg_attr(foo, unstable)]
 #![cfg_attr(not(foo), stable)]
-
+#![staged_api]
index f6124c1271f05b1df5d31d81fdc630ea121e5eb0..cf1264ff5d675e54d4b393169fb3e121dcd88a10 100644 (file)
@@ -39,7 +39,7 @@
 // OF THE POSSIBILITY OF SUCH DAMAGE.
 
 #![feature(simd)]
-#![allow(experimental)]
+#![allow(unstable)]
 
 // ignore-pretty very bad with line comments
 
index e0f655084ff700634a5d492a0fceaa2d04086ae2..24425e5eeecb513e6d766df82ef02f8afc903573 100644 (file)
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#![staged_api]
 #![deny(deprecated)]
 
 struct Foo;
index 92fabd6050bc1ec95958c16c4fd98a614104cacb..d1fcf62115b209cc70aeb44e91fc394afed927e0 100644 (file)
@@ -8,8 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![forbid(experimental)]
+#![forbid(unstable)]
 
-#[allow(experimental)] //~ ERROR allow(experimental) overruled by outer forbid(experimental)
+#[allow(unstable)] //~ ERROR allow(unstable) overruled by outer forbid(unstable)
 fn main() {
 }
index 4de84825ada9e26f95803a8d344087b39b2d29d1..e3be0d06a350f6ae1fbb20e1ecec9abc8e4dcfb0 100644 (file)
@@ -8,8 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// compile-flags: -F experimental
+// compile-flags: -F unstable
 
-#[allow(experimental)] //~ ERROR allow(experimental) overruled by outer forbid(experimental)
+#![staged_api]
+#[allow(unstable)] //~ ERROR allow(unstable) overruled by outer forbid(unstable)
 fn main() {
 }
index 35721ee5b148f9cfe6329d609db6edb672f8ce65..10217481bf38af87036592ded82654ccf94b8744 100644 (file)
@@ -8,14 +8,13 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// compile-flags:-F experimental -D unstable
+// compile-flags:-F unstable
 // aux-build:lint_output_format.rs
 
 extern crate lint_output_format; //~ ERROR: use of unmarked item
-use lint_output_format::{foo, bar, baz};
+use lint_output_format::{foo, bar};
 
 fn main() {
     let _x = foo(); //~ WARNING #[warn(deprecated)] on by default
-    let _y = bar(); //~ ERROR [-F experimental]
-    let _z = baz(); //~ ERROR [-D unstable]
+    let _y = bar(); //~ ERROR [-F unstable]
 }
index 0e24269ec444905b96e3e335efe2348b37822ce5..1762285c28103ddd14af07bf56fa73a01530c245 100644 (file)
 
 #![deny(unstable)]
 #![deny(deprecated)]
-#![deny(experimental)]
+#![deny(unstable)]
 #![allow(dead_code)]
+#![staged_api]
 
 #[macro_use]
 extern crate lint_stability; //~ ERROR: use of unmarked item
 
 mod cross_crate {
     extern crate stability_cfg1;
-    extern crate stability_cfg2; //~ ERROR: use of experimental item
+    extern crate stability_cfg2; //~ ERROR: use of unstable item
 
     use lint_stability::*;
 
@@ -38,13 +39,13 @@ fn test() {
         foo.method_deprecated_text(); //~ ERROR use of deprecated item: text
         foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
 
-        experimental(); //~ ERROR use of experimental item
-        foo.method_experimental(); //~ ERROR use of experimental item
-        foo.trait_experimental(); //~ ERROR use of experimental item
+        experimental(); //~ ERROR use of unstable item
+        foo.method_experimental(); //~ ERROR use of unstable item
+        foo.trait_experimental(); //~ ERROR use of unstable item
 
-        experimental_text(); //~ ERROR use of experimental item: text
-        foo.method_experimental_text(); //~ ERROR use of experimental item: text
-        foo.trait_experimental_text(); //~ ERROR use of experimental item: text
+        experimental_text(); //~ ERROR use of unstable item: text
+        foo.method_experimental_text(); //~ ERROR use of unstable item: text
+        foo.trait_experimental_text(); //~ ERROR use of unstable item: text
 
         unstable(); //~ ERROR use of unstable item
         foo.method_unstable(); //~ ERROR use of unstable item
@@ -83,7 +84,7 @@ fn test() {
         foo.trait_locked_text();
 
         let _ = DeprecatedStruct { i: 0 }; //~ ERROR use of deprecated item
-        let _ = ExperimentalStruct { i: 0 }; //~ ERROR use of experimental item
+        let _ = ExperimentalStruct { i: 0 }; //~ ERROR use of unstable item
         let _ = UnstableStruct { i: 0 }; //~ ERROR use of unstable item
         let _ = UnmarkedStruct { i: 0 }; //~ ERROR use of unmarked item
         let _ = StableStruct { i: 0 };
@@ -91,7 +92,7 @@ fn test() {
         let _ = LockedStruct { i: 0 };
 
         let _ = DeprecatedUnitStruct; //~ ERROR use of deprecated item
-        let _ = ExperimentalUnitStruct; //~ ERROR use of experimental item
+        let _ = ExperimentalUnitStruct; //~ ERROR use of unstable item
         let _ = UnstableUnitStruct; //~ ERROR use of unstable item
         let _ = UnmarkedUnitStruct; //~ ERROR use of unmarked item
         let _ = StableUnitStruct;
@@ -99,7 +100,7 @@ fn test() {
         let _ = LockedUnitStruct;
 
         let _ = Enum::DeprecatedVariant; //~ ERROR use of deprecated item
-        let _ = Enum::ExperimentalVariant; //~ ERROR use of experimental item
+        let _ = Enum::ExperimentalVariant; //~ ERROR use of unstable item
         let _ = Enum::UnstableVariant; //~ ERROR use of unstable item
         let _ = Enum::UnmarkedVariant; //~ ERROR use of unmarked item
         let _ = Enum::StableVariant;
@@ -107,7 +108,7 @@ fn test() {
         let _ = Enum::LockedVariant;
 
         let _ = DeprecatedTupleStruct (1); //~ ERROR use of deprecated item
-        let _ = ExperimentalTupleStruct (1); //~ ERROR use of experimental item
+        let _ = ExperimentalTupleStruct (1); //~ ERROR use of unstable item
         let _ = UnstableTupleStruct (1); //~ ERROR use of unstable item
         let _ = UnmarkedTupleStruct (1); //~ ERROR use of unmarked item
         let _ = StableTupleStruct (1);
@@ -128,8 +129,8 @@ fn test() {
     fn test_method_param<F: Trait>(foo: F) {
         foo.trait_deprecated(); //~ ERROR use of deprecated item
         foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
-        foo.trait_experimental(); //~ ERROR use of experimental item
-        foo.trait_experimental_text(); //~ ERROR use of experimental item: text
+        foo.trait_experimental(); //~ ERROR use of unstable item
+        foo.trait_experimental_text(); //~ ERROR use of unstable item: text
         foo.trait_unstable(); //~ ERROR use of unstable item
         foo.trait_unstable_text(); //~ ERROR use of unstable item: text
         foo.trait_unmarked(); //~ ERROR use of unmarked item
@@ -139,8 +140,8 @@ fn test_method_param<F: Trait>(foo: F) {
     fn test_method_object(foo: &Trait) {
         foo.trait_deprecated(); //~ ERROR use of deprecated item
         foo.trait_deprecated_text(); //~ ERROR use of deprecated item: text
-        foo.trait_experimental(); //~ ERROR use of experimental item
-        foo.trait_experimental_text(); //~ ERROR use of experimental item: text
+        foo.trait_experimental(); //~ ERROR use of unstable item
+        foo.trait_experimental_text(); //~ ERROR use of unstable item: text
         foo.trait_unstable(); //~ ERROR use of unstable item
         foo.trait_unstable_text(); //~ ERROR use of unstable item: text
         foo.trait_unmarked(); //~ ERROR use of unmarked item
@@ -149,33 +150,33 @@ fn test_method_object(foo: &Trait) {
 
     struct S;
 
-    impl ExperimentalTrait for S { } //~ ERROR use of experimental item
+    impl ExperimentalTrait for S { } //~ ERROR use of unstable item
 
-    trait LocalTrait : ExperimentalTrait { } //~ ERROR use of experimental item
+    trait LocalTrait : ExperimentalTrait { } //~ ERROR use of unstable item
 }
 
 mod inheritance {
-    extern crate inherited_stability; //~ ERROR: use of experimental item
+    extern crate inherited_stability; //~ ERROR: use of unstable item
     use self::inherited_stability::*;
 
     fn test_inheritance() {
-        experimental(); //~ ERROR use of experimental item
+        experimental(); //~ ERROR use of unstable item
         stable();
 
-        stable_mod::experimental(); //~ ERROR use of experimental item
+        stable_mod::experimental(); //~ ERROR use of unstable item
         stable_mod::stable();
 
-        unstable_mod::experimental(); //~ ERROR use of experimental item
+        unstable_mod::experimental(); //~ ERROR use of unstable item
         unstable_mod::unstable(); //~ ERROR use of unstable item
 
-        experimental_mod::experimental(); //~ ERROR use of experimental item
+        experimental_mod::experimental(); //~ ERROR use of unstable item
         experimental_mod::stable();
 
-        let _ = Experimental::ExperimentalVariant; //~ ERROR use of experimental item
+        let _ = Experimental::ExperimentalVariant; //~ ERROR use of unstable item
         let _ = Experimental::StableVariant;
 
         let x: uint = 0;
-        x.experimental(); //~ ERROR use of experimental item
+        x.experimental(); //~ ERROR use of unstable item
         x.stable();
     }
 }
@@ -186,9 +187,9 @@ pub fn deprecated() {}
     #[deprecated="text"]
     pub fn deprecated_text() {}
 
-    #[experimental]
+    #[unstable]
     pub fn experimental() {}
-    #[experimental="text"]
+    #[unstable="text"]
     pub fn experimental_text() {}
 
     #[unstable]
@@ -222,9 +223,9 @@ pub fn method_deprecated(&self) {}
         #[deprecated="text"]
         pub fn method_deprecated_text(&self) {}
 
-        #[experimental]
+        #[unstable]
         pub fn method_experimental(&self) {}
-        #[experimental="text"]
+        #[unstable="text"]
         pub fn method_experimental_text(&self) {}
 
         #[unstable]
@@ -256,9 +257,9 @@ fn trait_deprecated(&self) {}
         #[deprecated="text"]
         fn trait_deprecated_text(&self) {}
 
-        #[experimental]
+        #[unstable]
         fn trait_experimental(&self) {}
-        #[experimental="text"]
+        #[unstable="text"]
         fn trait_experimental_text(&self) {}
 
         #[unstable]
@@ -288,7 +289,7 @@ impl Trait for MethodTester {}
 
     #[deprecated]
     pub struct DeprecatedStruct { i: int }
-    #[experimental]
+    #[unstable]
     pub struct ExperimentalStruct { i: int }
     #[unstable]
     pub struct UnstableStruct { i: int }
@@ -302,7 +303,7 @@ pub struct LockedStruct { i: int }
 
     #[deprecated]
     pub struct DeprecatedUnitStruct;
-    #[experimental]
+    #[unstable]
     pub struct ExperimentalUnitStruct;
     #[unstable]
     pub struct UnstableUnitStruct;
@@ -317,7 +318,7 @@ pub struct LockedStruct { i: int }
     pub enum Enum {
         #[deprecated]
         DeprecatedVariant,
-        #[experimental]
+        #[unstable]
         ExperimentalVariant,
         #[unstable]
         UnstableVariant,
@@ -333,7 +334,7 @@ pub enum Enum {
 
     #[deprecated]
     pub struct DeprecatedTupleStruct(int);
-    #[experimental]
+    #[unstable]
     pub struct ExperimentalTupleStruct(int);
     #[unstable]
     pub struct UnstableTupleStruct(int);
index 9fbb7364054d51c6b0d13020c1a7c6f8a7b38a37..0c2d8972ce7aec2dd25f149daf5618fae003f749 100644 (file)
@@ -10,7 +10,7 @@
 
 // ignore-tidy-linelength
 
-#![allow(experimental)]
+#![allow(unstable)]
 
 use std::simd::f32x4;
 
index 5f9f56bf3c0f4800e52d8ed641a87a445d127a6d..aea970f90b2c3e3ec6cfc9994bd8e5baa8dbb098 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![deny(experimental)]
+#![deny(unstable)]
 
 use std::simd;
 
index 288e7461dd5a0c226d5a507000dfac7fc52b97ae..4aaa3e0b75f31ef0d425ca52646ece23015cbc8f 100644 (file)
@@ -41,7 +41,7 @@
 
 // gdb-command:continue
 
-#![allow(experimental)]
+#![allow(unstable)]
 #![allow(unused_variables)]
 #![omit_gdb_pretty_printer_section]
 
index 7f9be78d5832db8aac58f5f06f2c57aa029a1e6a..690ad351247099e8b9a8e1c05620b1ab15825ea6 100644 (file)
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![allow(experimental)]
+#![allow(unstable)]
 
 use std::simd::{i32x4, f32x4, u32x4};
 
index 966db25a128a797849065b9f8a3d8350ac3cfc3b..6f0db23e2a6213311e3d2361de3ef2134a5fdcd6 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 
-#![allow(experimental)]
+#![allow(unstable)]
 #![feature(simd)]
 
 pub fn main() {
index 4ab089b6eaa1c8420d34414cf1305e956041a509..56044289fba3a6c3bce7c4cd8e28443150b2ac75 100644 (file)
@@ -16,7 +16,7 @@
 // one test task to ensure that errors are timeouts, not file descriptor
 // exhaustion.
 
-#![allow(experimental)]
+#![allow(unstable)]
 #![reexport_test_harness_main = "test_main"]
 
 #![allow(unused_imports)]