Skip to content

Commit f0503f0

Browse files
committed
---
yaml --- r: 179087 b: refs/heads/master c: bfdcd34 h: refs/heads/master i: 179085: dfc21e2 179083: 03fcc78 179079: 39968a8 179071: c66d46b v: v3
1 parent 1ce241b commit f0503f0

File tree

264 files changed

+1591
-561
lines changed

Some content is hidden

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

264 files changed

+1591
-561
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: 8f2ab66ab631a11113ac2fbb66384ce7c2fc34d5
2+
refs/heads/master: bfdcd34e82fca5186f0565c28c5c9b6a9f9b6c76
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: ac134f7ca435551964996ee88319241cd3c7c110
55
refs/heads/try: ccf8fedf1cffcb8f6f3581d53d220039e192fe77

trunk/mk/tests.mk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,7 @@ RPASS_FULL_RS := $(wildcard $(S)src/test/run-pass-fulldeps/*.rs)
452452
CFAIL_FULL_RS := $(wildcard $(S)src/test/compile-fail-fulldeps/*.rs)
453453
RFAIL_RS := $(wildcard $(S)src/test/run-fail/*.rs)
454454
CFAIL_RS := $(wildcard $(S)src/test/compile-fail/*.rs)
455+
PFAIL_RS := $(wildcard $(S)src/test/parse-fail/*.rs)
455456
BENCH_RS := $(wildcard $(S)src/test/bench/*.rs)
456457
PRETTY_RS := $(wildcard $(S)src/test/pretty/*.rs)
457458
DEBUGINFO_GDB_RS := $(wildcard $(S)src/test/debuginfo/*.rs)
@@ -468,7 +469,7 @@ RPASS_VALGRIND_TESTS := $(RPASS_VALGRIND_RS)
468469
RPASS_FULL_TESTS := $(RPASS_FULL_RS)
469470
CFAIL_FULL_TESTS := $(CFAIL_FULL_RS)
470471
RFAIL_TESTS := $(RFAIL_RS)
471-
CFAIL_TESTS := $(CFAIL_RS)
472+
CFAIL_TESTS := $(CFAIL_RS) $(PFAIL_RS)
472473
BENCH_TESTS := $(BENCH_RS)
473474
PERF_TESTS := $(PERF_RS)
474475
PRETTY_TESTS := $(PRETTY_RS)

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/grammar/testparser.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,34 +35,42 @@
3535
ok[parser] = 0
3636
bad[parser] = []
3737
devnull = open(os.devnull, 'w')
38-
print "\n"
38+
print("\n")
3939

4040
for base, dirs, files in os.walk(args.source_dir[0]):
4141
for f in filter(lambda p: p.endswith('.rs'), files):
4242
p = os.path.join(base, f)
43-
compile_fail = 'compile-fail' in p
44-
ignore = any('ignore-test' in line or 'ignore-lexer-test' in line
45-
for line in open(p).readlines())
46-
if compile_fail or ignore:
43+
parse_fail = 'parse-fail' in p
44+
if sys.version_info.major == 3:
45+
lines = open(p, encoding='utf-8').readlines()
46+
else:
47+
lines = open(p).readlines()
48+
if any('ignore-test' in line or 'ignore-lexer-test' in line for line in lines):
4749
continue
4850
total += 1
4951
for parser in args.parser:
5052
if subprocess.call(parser, stdin=open(p), stderr=subprocess.STDOUT, stdout=devnull) == 0:
51-
ok[parser] += 1
53+
if parse_fail:
54+
bad[parser].append(p)
55+
else:
56+
ok[parser] += 1
5257
else:
53-
bad[parser].append(p)
58+
if parse_fail:
59+
ok[parser] += 1
60+
else:
61+
bad[parser].append(p)
5462
parser_stats = ', '.join(['{}: {}'.format(parser, ok[parser]) for parser in args.parser])
5563
sys.stdout.write("\033[K\r total: {}, {}, scanned {}"
5664
.format(total, os.path.relpath(parser_stats), os.path.relpath(p)))
5765

5866
devnull.close()
5967

60-
print "\n"
68+
print("\n")
6169

6270
for parser in args.parser:
6371
filename = os.path.basename(parser) + '.bad'
64-
print("writing {} files that failed to parse with {} to {}".format(len(bad[parser]), parser, filename))
72+
print("writing {} files that did not yield the correct result with {} to {}".format(len(bad[parser]), parser, filename))
6573
with open(filename, "w") as f:
66-
for p in bad[parser]:
67-
f.write(p)
68-
f.write("\n")
74+
for p in bad[parser]:
75+
f.write(p)
76+
f.write("\n")

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/liballoc/rc.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ struct RcBox<T> {
172172

173173
/// An immutable reference-counted pointer type.
174174
///
175-
/// See the [module level documentation](../index.html) for more details.
175+
/// See the [module level documentation](./index.html) for more details.
176176
#[unsafe_no_drop_flag]
177177
#[stable(feature = "rust1", since = "1.0.0")]
178178
pub struct Rc<T> {
@@ -624,7 +624,7 @@ impl<T: fmt::Debug> fmt::Debug for Rc<T> {
624624
///
625625
/// Weak references do not count when determining if the inner value should be dropped.
626626
///
627-
/// See the [module level documentation](../index.html) for more.
627+
/// See the [module level documentation](./index.html) for more.
628628
#[unsafe_no_drop_flag]
629629
#[unstable(feature = "alloc",
630630
reason = "Weak pointers may not belong in this module.")]

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
}

0 commit comments

Comments
 (0)