Skip to content

Commit c66d46b

Browse files
committed
---
yaml --- r: 179071 b: refs/heads/master c: f16de18 h: refs/heads/master i: 179069: d6f9cb9 179067: df52c6a 179063: 59038d8 179055: 3c19254 179039: 75a180b 179007: cd1041c 178943: de8c0d4 v: v3
1 parent 8d39333 commit c66d46b

File tree

101 files changed

+951
-322
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+951
-322
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 684e43e712d1e58799cd81f55e56ff4361108564
2+
refs/heads/master: f16de18db448ca5de45bff90579990259518e1fc
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: ac134f7ca435551964996ee88319241cd3c7c110
55
refs/heads/try: ccf8fedf1cffcb8f6f3581d53d220039e192fe77

trunk/src/doc/reference.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,11 @@ cases mentioned in [Number literals](#number-literals) below.
256256

257257
| [Number literals](#number-literals)`*` | Example | Exponentiation | Suffixes |
258258
|----------------------------------------|---------|----------------|----------|
259-
| Decimal integer | `98_222is` | `N/A` | Integer suffixes |
260-
| Hex integer | `0xffis` | `N/A` | Integer suffixes |
261-
| Octal integer | `0o77is` | `N/A` | Integer suffixes |
262-
| Binary integer | `0b1111_0000is` | `N/A` | Integer suffixes |
263-
| Floating-point | `123.0E+77f64` | `Optional` | Floating-point suffixes |
259+
| Decimal integer | `98_222` | `N/A` | Integer suffixes |
260+
| Hex integer | `0xff` | `N/A` | Integer suffixes |
261+
| Octal integer | `0o77` | `N/A` | Integer suffixes |
262+
| Binary integer | `0b1111_0000` | `N/A` | Integer suffixes |
263+
| Floating-point | `123.0E+77` | `Optional` | Floating-point suffixes |
264264

265265
`*` All number literals allow `_` as a visual separator: `1_234.0E+18f64`
266266

@@ -2467,6 +2467,12 @@ The currently implemented features of the reference compiler are:
24672467

24682468
* `associated_types` - Allows type aliases in traits. Experimental.
24692469

2470+
* `no_std` - Allows the `#![no_std]` crate attribute, which disables the implicit
2471+
`extern crate std`. This typically requires use of the unstable APIs
2472+
behind the libstd "facade", such as libcore and libcollections. It
2473+
may also cause problems when using syntax extensions, including
2474+
`#[derive]`.
2475+
24702476
If a feature is promoted to a language feature, then all existing programs will
24712477
start to receive compilation warnings about #[feature] directives which enabled
24722478
the new feature (because the directive is no longer necessary). However, if a

trunk/src/doc/trpl/unsafe.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ attribute attached to the crate.
433433
```ignore
434434
// a minimal library
435435
#![crate_type="lib"]
436+
#![feature(no_std)]
436437
#![no_std]
437438
# // fn main() {} tricked you, rustdoc!
438439
```
@@ -446,8 +447,8 @@ The function marked `#[start]` is passed the command line parameters
446447
in the same format as C:
447448

448449
```
450+
#![feature(lang_items, start, no_std)]
449451
#![no_std]
450-
#![feature(lang_items, start)]
451452
452453
// Pull in the system libc library for what crt0.o likely requires
453454
extern crate libc;
@@ -473,6 +474,7 @@ correct ABI and the correct name, which requires overriding the
473474
compiler's name mangling too:
474475

475476
```ignore
477+
#![feature(no_std)]
476478
#![no_std]
477479
#![no_main]
478480
#![feature(lang_items, start)]
@@ -528,8 +530,8 @@ As an example, here is a program that will calculate the dot product of two
528530
vectors provided from C, using idiomatic Rust practices.
529531

530532
```
533+
#![feature(lang_items, start, no_std)]
531534
#![no_std]
532-
#![feature(lang_items, start)]
533535
534536
# extern crate libc;
535537
extern crate core;
@@ -576,10 +578,6 @@ extern fn panic_fmt(args: &core::fmt::Arguments,
576578
#[lang = "eh_personality"] extern fn eh_personality() {}
577579
# #[start] fn start(argc: isize, argv: *const *const u8) -> isize { 0 }
578580
# fn main() {}
579-
# mod std { // for-loops
580-
# pub use core::iter;
581-
# pub use core::option;
582-
# }
583581
```
584582

585583
Note that there is one extra lang item here which differs from the examples
@@ -656,8 +654,8 @@ and one for deallocation. A freestanding program that uses the `Box`
656654
sugar for dynamic allocations via `malloc` and `free`:
657655

658656
```
657+
#![feature(lang_items, box_syntax, start, no_std)]
659658
#![no_std]
660-
#![feature(lang_items, box_syntax, start)]
661659
662660
extern crate libc;
663661

trunk/src/liballoc/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
6666
html_root_url = "http://doc.rust-lang.org/nightly/")]
6767

68+
#![feature(no_std)]
6869
#![no_std]
6970
#![feature(lang_items, unsafe_destructor)]
7071
#![feature(box_syntax)]
@@ -126,7 +127,8 @@ pub fn oom() -> ! {
126127
#[doc(hidden)]
127128
pub fn fixme_14344_be_sure_to_link_to_collections() {}
128129

129-
#[cfg(not(test))]
130+
// NOTE: remove after next snapshot
131+
#[cfg(all(stage0, not(test)))]
130132
#[doc(hidden)]
131133
mod std {
132134
pub use core::fmt;

trunk/src/libstd/fmt.rs renamed to trunk/src/libcollections/fmt.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2013-2015 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -134,7 +134,7 @@
134134
//! * `E` ⇒ `UpperExp`
135135
//!
136136
//! What this means is that any type of argument which implements the
137-
//! `std::fmt::Binary` trait can then be formatted with `{:b}`. Implementations
137+
//! `fmt::Binary` trait can then be formatted with `{:b}`. Implementations
138138
//! are provided for these traits for a number of primitive types by the
139139
//! standard library as well. If no format is specified (as in `{}` or `{:6}`),
140140
//! then the format trait used is the `Display` trait.
@@ -146,7 +146,7 @@
146146
//! # use std::fmt;
147147
//! # struct Foo; // our custom type
148148
//! # impl fmt::Display for Foo {
149-
//! fn fmt(&self, f: &mut std::fmt::Formatter) -> fmt::Result {
149+
//! fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
150150
//! # write!(f, "testing, testing")
151151
//! # } }
152152
//! ```
@@ -403,8 +403,6 @@
403403
404404
#![unstable(feature = "std_misc")]
405405

406-
use string;
407-
408406
pub use core::fmt::{Formatter, Result, Writer, rt};
409407
pub use core::fmt::{Show, String, Octal, Binary};
410408
pub use core::fmt::{Display, Debug};
@@ -413,6 +411,8 @@ pub use core::fmt::{LowerExp, UpperExp};
413411
pub use core::fmt::Error;
414412
pub use core::fmt::{ArgumentV1, Arguments, write, radix, Radix, RadixFmt};
415413

414+
use string;
415+
416416
/// The format function takes a precompiled format string and a list of
417417
/// arguments, to return the resulting formatted string.
418418
///
@@ -434,3 +434,15 @@ pub fn format(args: Arguments) -> string::String {
434434
let _ = write!(&mut output, "{}", args);
435435
output
436436
}
437+
438+
#[cfg(test)]
439+
mod tests {
440+
use prelude::*;
441+
use fmt;
442+
443+
#[test]
444+
fn test_format() {
445+
let s = fmt::format(format_args!("Hello, {}!", "world"));
446+
assert_eq!(s.as_slice(), "Hello, world!");
447+
}
448+
}

trunk/src/libcollections/lib.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#![cfg_attr(test, feature(test))]
3434
#![cfg_attr(test, allow(deprecated))] // rand
3535

36+
#![feature(no_std)]
3637
#![no_std]
3738

3839
#[macro_use]
@@ -68,6 +69,7 @@ mod bit;
6869
mod btree;
6970
pub mod dlist;
7071
pub mod enum_set;
72+
pub mod fmt;
7173
pub mod ring_buf;
7274
pub mod slice;
7375
pub mod str;
@@ -107,15 +109,16 @@ pub fn fixme_14344_be_sure_to_link_to_collections() {}
107109

108110
#[cfg(not(test))]
109111
mod std {
110-
pub use core::fmt; // necessary for panic!()
111-
pub use core::option; // necessary for panic!()
112-
pub use core::clone; // derive(Clone)
113-
pub use core::cmp; // derive(Eq, Ord, etc.)
114-
pub use core::marker; // derive(Copy)
115-
pub use core::hash; // derive(Hash)
112+
// NOTE: remove after next snapshot
113+
#[cfg(stage0)] pub use core::clone; // derive(Clone)
114+
#[cfg(stage0)] pub use core::cmp; // derive(Eq, Ord, etc.)
115+
#[cfg(stage0)] pub use core::marker; // derive(Copy)
116+
#[cfg(stage0)] pub use core::hash; // derive(Hash)
117+
#[cfg(stage0)] pub use core::iter;
118+
#[cfg(stage0)] pub use core::fmt; // necessary for panic!()
119+
#[cfg(stage0)] pub use core::option; // necessary for panic!()
120+
116121
pub use core::ops; // RangeFull
117-
// for-loops
118-
pub use core::iter;
119122
}
120123

121124
#[cfg(test)]

trunk/src/libcollections/macros.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,19 @@ macro_rules! vec {
2222
);
2323
($($x:expr,)*) => (vec![$($x),*])
2424
}
25+
26+
/// Use the syntax described in `std::fmt` to create a value of type `String`.
27+
/// See `std::fmt` for more information.
28+
///
29+
/// # Example
30+
///
31+
/// ```
32+
/// format!("test");
33+
/// format!("hello {}", "world!");
34+
/// format!("x = {}, y = {y}", 10, y = 30);
35+
/// ```
36+
#[macro_export]
37+
#[stable(feature = "rust1", since = "1.0.0")]
38+
macro_rules! format {
39+
($($arg:tt)*) => ($crate::fmt::format(format_args!($($arg)*)))
40+
}

trunk/src/libcollections/ring_buf.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ use core::ops::{Index, IndexMut};
2727
use core::ptr;
2828
use core::raw::Slice as RawSlice;
2929

30-
use std::hash::{Writer, Hash, Hasher};
31-
use std::cmp;
30+
use core::hash::{Writer, Hash, Hasher};
31+
use core::cmp;
3232

3333
use alloc::heap;
3434

trunk/src/libcore/iter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ use num::{ToPrimitive, Int};
6767
use ops::{Add, Deref, FnMut};
6868
use option::Option;
6969
use option::Option::{Some, None};
70-
use std::marker::Sized;
70+
use marker::Sized;
7171
use usize;
7272

7373
/// An interface for dealing with "external iterators". These types of iterators

trunk/src/libcore/lib.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
html_root_url = "http://doc.rust-lang.org/nightly/",
5757
html_playground_url = "http://play.rust-lang.org/")]
5858

59+
#![feature(no_std)]
5960
#![no_std]
6061
#![allow(raw_pointer_derive)]
6162
#![deny(missing_docs)]
@@ -148,17 +149,25 @@ mod array;
148149
mod core {
149150
pub use panicking;
150151
pub use fmt;
152+
#[cfg(not(stage0))] pub use clone;
153+
#[cfg(not(stage0))] pub use cmp;
154+
#[cfg(not(stage0))] pub use hash;
155+
#[cfg(not(stage0))] pub use marker;
156+
#[cfg(not(stage0))] pub use option;
157+
#[cfg(not(stage0))] pub use iter;
151158
}
152159

153160
#[doc(hidden)]
154161
mod std {
155-
pub use clone;
156-
pub use cmp;
157-
pub use fmt;
158-
pub use hash;
159-
pub use marker;
162+
// NOTE: remove after next snapshot
163+
#[cfg(stage0)] pub use clone;
164+
#[cfg(stage0)] pub use cmp;
165+
#[cfg(stage0)] pub use hash;
166+
#[cfg(stage0)] pub use marker;
167+
#[cfg(stage0)] pub use option;
168+
#[cfg(stage0)] pub use fmt;
169+
#[cfg(stage0)] pub use iter;
170+
171+
// range syntax
160172
pub use ops;
161-
pub use option;
162-
// for-loops
163-
pub use iter;
164173
}

trunk/src/libcore/marker.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -311,16 +311,17 @@ impl<T: ?Sized> Clone for ContravariantType<T> {
311311
///
312312
/// # Example
313313
///
314-
/// The Cell type is an example which uses unsafe code to achieve
315-
/// "interior" mutability:
314+
/// The Cell type is an example of an `InvariantType` which uses unsafe
315+
/// code to achieve "interior" mutability:
316316
///
317317
/// ```
318318
/// struct Cell<T> { value: T }
319319
/// ```
320320
///
321-
/// The type system would infer that `value` is only read here and
322-
/// never written, but in fact `Cell` uses unsafe code to achieve
323-
/// interior mutability.
321+
/// The type system would infer that `value` is only read here
322+
/// and never written, but in fact `Cell` uses unsafe code to achieve
323+
/// interior mutability. In order to get correct behavior, the
324+
/// `InvariantType` marker must be applied.
324325
#[unstable(feature = "core",
325326
reason = "likely to change with new variance strategy")]
326327
#[lang="invariant_type"]

trunk/src/liblibc/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#![cfg_attr(not(feature = "cargo-build"), staged_api)]
1717
#![cfg_attr(not(feature = "cargo-build"), feature(core))]
1818
#![feature(int_uint)]
19+
#![feature(no_std)]
1920
#![no_std]
2021
#![doc(html_logo_url = "http://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
2122
html_favicon_url = "http://www.rust-lang.org/favicon.ico",
@@ -5729,8 +5730,9 @@ pub fn issue_14344_workaround() {} // FIXME #14344 force linkage to happen corre
57295730

57305731
#[test] fn work_on_windows() { } // FIXME #10872 needed for a happy windows
57315732

5733+
// NOTE: remove after next snapshot
57325734
#[doc(hidden)]
5733-
#[cfg(not(test))]
5735+
#[cfg(all(stage0, not(test)))]
57345736
mod std {
57355737
pub use core::marker;
57365738
}

trunk/src/librand/lib.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
html_root_url = "http://doc.rust-lang.org/nightly/",
2424
html_playground_url = "http://play.rust-lang.org/")]
2525
#![feature(int_uint)]
26+
#![feature(no_std)]
2627
#![no_std]
2728
#![unstable(feature = "rand")]
2829
#![feature(staged_api)]
@@ -496,7 +497,8 @@ pub struct Open01<F>(pub F);
496497
/// ```
497498
pub struct Closed01<F>(pub F);
498499

499-
#[cfg(not(test))]
500+
// NOTE: remove after next snapshot
501+
#[cfg(all(stage0, not(test)))]
500502
mod std {
501503
pub use core::{option, fmt}; // panic!()
502504
pub use core::clone; // derive Clone

trunk/src/librustc/metadata/loader.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,8 @@ impl<'a> Context<'a> {
370370
// must be loaded via -L plus some filtering.
371371
if self.hash.is_none() {
372372
self.should_match_name = false;
373-
match self.find_commandline_library() {
374-
Some(l) => return Some(l),
375-
None => {}
373+
if let Some(s) = self.sess.opts.externs.get(self.crate_name) {
374+
return self.find_commandline_library(s);
376375
}
377376
self.should_match_name = true;
378377
}
@@ -619,12 +618,7 @@ impl<'a> Context<'a> {
619618
(t.options.dll_prefix.clone(), t.options.dll_suffix.clone())
620619
}
621620

622-
fn find_commandline_library(&mut self) -> Option<Library> {
623-
let locs = match self.sess.opts.externs.get(self.crate_name) {
624-
Some(s) => s,
625-
None => return None,
626-
};
627-
621+
fn find_commandline_library(&mut self, locs: &[String]) -> Option<Library> {
628622
// First, filter out all libraries that look suspicious. We only accept
629623
// files which actually exist that have the correct naming scheme for
630624
// rlibs/dylibs.

0 commit comments

Comments
 (0)