Skip to content

Commit 0c7a3d6

Browse files
committed
auto merge of #18978 : jakub-/rust/roll-up, r=cmr
2 parents cb51567 + 892d4e2 commit 0c7a3d6

Some content is hidden

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

74 files changed

+1011
-933
lines changed

src/compiletest/common.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
use std::from_str::FromStr;
1211
use std::fmt;
12+
use std::str::FromStr;
1313
use regex::Regex;
1414

1515
#[deriving(Clone, PartialEq)]

src/compiletest/compiletest.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ extern crate regex;
2222
use std::os;
2323
use std::io;
2424
use std::io::fs;
25-
use std::from_str::FromStr;
25+
use std::str::FromStr;
2626
use getopts::{optopt, optflag, reqopt};
2727
use common::Config;
2828
use common::{Pretty, DebugInfoGdb, DebugInfoLldb, Codegen};

src/compiletest/header.rs

+3-5
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ use common::Config;
1212
use common;
1313
use util;
1414

15-
use std::from_str::FromStr;
16-
1715
pub struct TestProps {
1816
// Lines that should be expected, in order, on standard out
1917
pub error_patterns: Vec<String> ,
@@ -353,8 +351,8 @@ pub fn gdb_version_to_int(version_string: &str) -> int {
353351
panic!("{}", error_string);
354352
}
355353

356-
let major: int = FromStr::from_str(components[0]).expect(error_string);
357-
let minor: int = FromStr::from_str(components[1]).expect(error_string);
354+
let major: int = from_str(components[0]).expect(error_string);
355+
let minor: int = from_str(components[1]).expect(error_string);
358356

359357
return major * 1000 + minor;
360358
}
@@ -364,6 +362,6 @@ pub fn lldb_version_to_int(version_string: &str) -> int {
364362
"Encountered LLDB version string with unexpected format: {}",
365363
version_string);
366364
let error_string = error_string.as_slice();
367-
let major: int = FromStr::from_str(version_string).expect(error_string);
365+
let major: int = from_str(version_string).expect(error_string);
368366
return major;
369367
}

src/doc/complement-design-faq.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ code should need to run is a stack.
9595
`match` being exhaustive has some useful properties. First, if every
9696
possibility is covered by the `match`, adding further variants to the `enum`
9797
in the future will prompt a compilation failure, rather than runtime panic.
98-
Second, it makes cost explicit. In general, only safe way to have a
98+
Second, it makes cost explicit. In general, the only safe way to have a
9999
non-exhaustive match would be to panic the task if nothing is matched, though
100100
it could fall through if the type of the `match` expression is `()`. This sort
101101
of hidden cost and special casing is against the language's philosophy. It's

src/doc/guide-pointers.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,11 @@ pass-by-reference. Basically, languages can make two choices (this is made
133133
up syntax, it's not Rust):
134134

135135
```{notrust,ignore}
136-
fn foo(x) {
136+
func foo(x) {
137137
x = 5
138138
}
139139
140-
fn main() {
140+
func main() {
141141
i = 1
142142
foo(i)
143143
// what is the value of i here?
@@ -153,11 +153,11 @@ So what do pointers have to do with this? Well, since pointers point to a
153153
location in memory...
154154

155155
```{notrust,ignore}
156-
fn foo(&int x) {
156+
func foo(&int x) {
157157
*x = 5
158158
}
159159
160-
fn main() {
160+
func main() {
161161
i = 1
162162
foo(&i)
163163
// what is the value of i here?
@@ -192,13 +192,13 @@ When you combine pointers and functions, it's easy to accidentally invalidate
192192
the memory the pointer is pointing to. For example:
193193

194194
```{notrust,ignore}
195-
fn make_pointer(): &int {
195+
func make_pointer(): &int {
196196
x = 5;
197197
198198
return &x;
199199
}
200200
201-
fn main() {
201+
func main() {
202202
&int i = make_pointer();
203203
*i = 5; // uh oh!
204204
}
@@ -214,11 +214,11 @@ issue. Two pointers are said to alias when they point at the same location
214214
in memory. Like this:
215215

216216
```{notrust,ignore}
217-
fn mutate(&int i, int j) {
217+
func mutate(&int i, int j) {
218218
*i = j;
219219
}
220220
221-
fn main() {
221+
func main() {
222222
x = 5;
223223
y = &x;
224224
z = &x; //y and z are aliased

src/doc/guide-strings.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ println!("{}", s[0]);
155155
This does not compile. This is on purpose. In the world of UTF-8, direct
156156
indexing is basically never what you want to do. The reason is that each
157157
character can be a variable number of bytes. This means that you have to iterate
158-
through the characters anyway, which is a O(n) operation.
158+
through the characters anyway, which is an O(n) operation.
159159

160160
There's 3 basic levels of unicode (and its encodings):
161161

src/doc/reference.md

+7-8
Original file line numberDiff line numberDiff line change
@@ -2526,7 +2526,7 @@ The currently implemented features of the reference compiler are:
25262526

25272527
* `plugin_registrar` - Indicates that a crate has [compiler plugins][plugin] that it
25282528
wants to load. As with `phase`, the implementation is
2529-
in need of a overhaul, and it is not clear that plugins
2529+
in need of an overhaul, and it is not clear that plugins
25302530
defined using this will continue to work.
25312531

25322532
* `quote` - Allows use of the `quote_*!` family of macros, which are
@@ -2583,7 +2583,7 @@ there isn't a parser error first). The directive in this case is no longer
25832583
necessary, and it's likely that existing code will break if the feature isn't
25842584
removed.
25852585

2586-
If a unknown feature is found in a directive, it results in a compiler error.
2586+
If an unknown feature is found in a directive, it results in a compiler error.
25872587
An unknown feature is one which has never been recognized by the compiler.
25882588

25892589
# Statements and expressions
@@ -2685,7 +2685,7 @@ When an lvalue is evaluated in an _lvalue context_, it denotes a memory
26852685
location; when evaluated in an _rvalue context_, it denotes the value held _in_
26862686
that memory location.
26872687

2688-
When an rvalue is used in lvalue context, a temporary un-named lvalue is
2688+
When an rvalue is used in an lvalue context, a temporary un-named lvalue is
26892689
created and used instead. A temporary's lifetime equals the largest lifetime
26902690
of any reference that points to it.
26912691

@@ -2833,7 +2833,7 @@ foo().x;
28332833
```
28342834

28352835
A field access is an [lvalue](#lvalues,-rvalues-and-temporaries) referring to
2836-
the value of that field. When the type providing the field inherits mutabilty,
2836+
the value of that field. When the type providing the field inherits mutability,
28372837
it can be [assigned](#assignment-expressions) to.
28382838

28392839
Also, if the type of the expression to the left of the dot is a pointer, it is
@@ -3108,11 +3108,10 @@ then the expression completes.
31083108
Some examples of call expressions:
31093109

31103110
```
3111-
# use std::from_str::FromStr;
31123111
# fn add(x: int, y: int) -> int { 0 }
31133112
31143113
let x: int = add(1, 2);
3115-
let pi: Option<f32> = FromStr::from_str("3.14");
3114+
let pi: Option<f32> = from_str("3.14");
31163115
```
31173116

31183117
### Lambda expressions
@@ -3321,7 +3320,7 @@ between `_` and `..` is that the pattern `C(_)` is only type-correct if `C` has
33213320
exactly one argument, while the pattern `C(..)` is type-correct for any enum
33223321
variant `C`, regardless of how many arguments `C` has.
33233322

3324-
Used inside a array pattern, `..` stands for any number of elements, when the
3323+
Used inside an array pattern, `..` stands for any number of elements, when the
33253324
`advanced_slice_patterns` feature gate is turned on. This wildcard can be used
33263325
at most once for a given array, which implies that it cannot be used to
33273326
specifically match elements that are at an unknown distance from both ends of a
@@ -3584,7 +3583,7 @@ is not a surrogate), represented as a 32-bit unsigned word in the 0x0000 to
35843583
0xD7FF or 0xE000 to 0x10FFFF range. A `[char]` array is effectively an UCS-4 /
35853584
UTF-32 string.
35863585

3587-
A value of type `str` is a Unicode string, represented as a array of 8-bit
3586+
A value of type `str` is a Unicode string, represented as an array of 8-bit
35883587
unsigned bytes holding a sequence of UTF-8 codepoints. Since `str` is of
35893588
unknown size, it is not a _first class_ type, but can only be instantiated
35903589
through a pointer type, such as `&str` or `String`.

src/etc/snapshot.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ def full_snapshot_name(date, rev, platform, hsh):
7575

7676

7777
def get_kernel(triple):
78-
os_name = triple.split('-')[2]
78+
t = triple.split('-')
79+
if len(t) == 2:
80+
os_name = t[1]
81+
else:
82+
os_name = t[2]
7983
if os_name == "windows":
8084
return "winnt"
8185
if os_name == "darwin":

src/etc/vim/syntax/rust.vim

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ syn keyword rustTrait RawPtr
105105
syn keyword rustTrait Buffer Writer Reader Seek
106106
syn keyword rustTrait Str StrVector StrSlice
107107
syn keyword rustTrait IntoMaybeOwned StrAllocating UnicodeStrSlice
108-
syn keyword rustTrait ToString IntoStr
108+
syn keyword rustTrait ToString IntoString
109109
syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
110110
syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
111111
syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12

src/liballoc/rc.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,9 @@ pub struct Rc<T> {
179179
_noshare: marker::NoSync
180180
}
181181

182-
#[stable]
183182
impl<T> Rc<T> {
184183
/// Constructs a new reference-counted pointer.
184+
#[stable]
185185
pub fn new(value: T) -> Rc<T> {
186186
unsafe {
187187
Rc {
@@ -200,9 +200,7 @@ impl<T> Rc<T> {
200200
}
201201
}
202202
}
203-
}
204203

205-
impl<T> Rc<T> {
206204
/// Downgrades the reference-counted pointer to a weak reference.
207205
#[experimental = "Weak pointers may not belong in this module"]
208206
pub fn downgrade(&self) -> Weak<T> {

src/libcollections/str.rs

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ pub use core::str::{CharSplitsN, AnyLines, MatchIndices, StrSplits};
7373
pub use core::str::{Utf16CodeUnits, eq_slice, is_utf8, is_utf16, Utf16Items};
7474
pub use core::str::{Utf16Item, ScalarValue, LoneSurrogate, utf16_items};
7575
pub use core::str::{truncate_utf16_at_nul, utf8_char_width, CharRange};
76+
pub use core::str::{FromStr, from_str};
7677
pub use core::str::{Str, StrPrelude};
7778
pub use unicode::str::{UnicodeStrPrelude, Words, Graphemes, GraphemeIndices};
7879

src/libcollections/string.rs

+51-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use core::raw::Slice as RawSlice;
2525
use hash;
2626
use slice::CloneSliceAllocPrelude;
2727
use str;
28-
use str::{CharRange, StrAllocating, MaybeOwned, Owned};
28+
use str::{CharRange, FromStr, StrAllocating, MaybeOwned, Owned};
2929
use str::Slice as MaybeOwnedSlice; // So many `Slice`s...
3030
use vec::{DerefVec, Vec, as_vec};
3131

@@ -795,6 +795,33 @@ pub fn as_string<'a>(x: &'a str) -> DerefString<'a> {
795795
DerefString { x: as_vec(x.as_bytes()) }
796796
}
797797

798+
impl FromStr for String {
799+
#[inline]
800+
fn from_str(s: &str) -> Option<String> {
801+
Some(String::from_str(s))
802+
}
803+
}
804+
805+
/// Trait for converting a type to a string, consuming it in the process.
806+
pub trait IntoString {
807+
/// Consume and convert to a string.
808+
fn into_string(self) -> String;
809+
}
810+
811+
/// A generic trait for converting a value to a string
812+
pub trait ToString {
813+
/// Converts the value of `self` to an owned string
814+
fn to_string(&self) -> String;
815+
}
816+
817+
impl<T: fmt::Show> ToString for T {
818+
fn to_string(&self) -> String {
819+
let mut buf = Vec::<u8>::new();
820+
let _ = format_args!(|args| fmt::write(&mut buf, args), "{}", self);
821+
String::from_utf8(buf).unwrap()
822+
}
823+
}
824+
798825
/// Unsafe operations
799826
#[unstable = "waiting on raw module conventions"]
800827
pub mod raw {
@@ -860,7 +887,7 @@ mod tests {
860887

861888
use str;
862889
use str::{Str, StrPrelude, Owned};
863-
use super::{as_string, String};
890+
use super::{as_string, String, ToString};
864891
use vec::Vec;
865892
use slice::CloneSliceAllocPrelude;
866893

@@ -1164,6 +1191,28 @@ mod tests {
11641191
assert_eq!("oob", s[1..4]);
11651192
}
11661193

1194+
#[test]
1195+
fn test_simple_types() {
1196+
assert_eq!(1i.to_string(), "1".to_string());
1197+
assert_eq!((-1i).to_string(), "-1".to_string());
1198+
assert_eq!(200u.to_string(), "200".to_string());
1199+
assert_eq!(2u8.to_string(), "2".to_string());
1200+
assert_eq!(true.to_string(), "true".to_string());
1201+
assert_eq!(false.to_string(), "false".to_string());
1202+
assert_eq!(().to_string(), "()".to_string());
1203+
assert_eq!(("hi".to_string()).to_string(), "hi".to_string());
1204+
}
1205+
1206+
#[test]
1207+
fn test_vectors() {
1208+
let x: Vec<int> = vec![];
1209+
assert_eq!(x.to_string(), "[]".to_string());
1210+
assert_eq!((vec![1i]).to_string(), "[1]".to_string());
1211+
assert_eq!((vec![1i, 2, 3]).to_string(), "[1, 2, 3]".to_string());
1212+
assert!((vec![vec![], vec![1i], vec![1i, 1]]).to_string() ==
1213+
"[[], [1], [1, 1]]".to_string());
1214+
}
1215+
11671216
#[bench]
11681217
fn bench_with_capacity(b: &mut Bencher) {
11691218
b.iter(|| {

src/libcollections/tree/set.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -504,9 +504,9 @@ impl<T: Ord> TreeSet<T> {
504504
/// # Example
505505
///
506506
/// ```
507-
/// use std::collections::BTreeSet;
507+
/// use std::collections::TreeSet;
508508
///
509-
/// let mut set = BTreeSet::new();
509+
/// let mut set = TreeSet::new();
510510
///
511511
/// assert_eq!(set.insert(2i), true);
512512
/// assert_eq!(set.insert(2i), false);
@@ -522,9 +522,9 @@ impl<T: Ord> TreeSet<T> {
522522
/// # Example
523523
///
524524
/// ```
525-
/// use std::collections::BTreeSet;
525+
/// use std::collections::TreeSet;
526526
///
527-
/// let mut set = BTreeSet::new();
527+
/// let mut set = TreeSet::new();
528528
///
529529
/// set.insert(2i);
530530
/// assert_eq!(set.remove(&2), true);

src/libcollections/vec.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,6 @@ impl<T> Vec<T> {
645645
/// assert!(vec.capacity() >= 3);
646646
/// ```
647647
#[stable]
648-
#[unstable = "matches collection reform specification, waiting for dust to settle"]
649648
pub fn shrink_to_fit(&mut self) {
650649
if mem::size_of::<T>() == 0 { return }
651650

@@ -1653,6 +1652,13 @@ impl<T> Vec<T> {
16531652
}
16541653
}
16551654

1655+
impl<'a> fmt::FormatWriter for Vec<u8> {
1656+
fn write(&mut self, buf: &[u8]) -> fmt::Result {
1657+
self.push_all(buf);
1658+
Ok(())
1659+
}
1660+
}
1661+
16561662
#[cfg(test)]
16571663
mod tests {
16581664
extern crate test;

src/libcore/any.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ use intrinsics::TypeId;
8888
#[stable]
8989
pub trait Any: 'static {
9090
/// Get the `TypeId` of `self`
91+
#[stable]
9192
fn get_type_id(&self) -> TypeId;
9293
}
9394

@@ -117,7 +118,6 @@ pub trait AnyRefExt<'a> {
117118
#[stable]
118119
impl<'a> AnyRefExt<'a> for &'a Any {
119120
#[inline]
120-
#[stable]
121121
fn is<T: 'static>(self) -> bool {
122122
// Get TypeId of the type this function is instantiated with
123123
let t = TypeId::of::<T>();
@@ -130,7 +130,6 @@ impl<'a> AnyRefExt<'a> for &'a Any {
130130
}
131131

132132
#[inline]
133-
#[unstable = "naming conventions around acquiring references may change"]
134133
fn downcast_ref<T: 'static>(self) -> Option<&'a T> {
135134
if self.is::<T>() {
136135
unsafe {
@@ -159,7 +158,6 @@ pub trait AnyMutRefExt<'a> {
159158
#[stable]
160159
impl<'a> AnyMutRefExt<'a> for &'a mut Any {
161160
#[inline]
162-
#[unstable = "naming conventions around acquiring references may change"]
163161
fn downcast_mut<T: 'static>(self) -> Option<&'a mut T> {
164162
if self.is::<T>() {
165163
unsafe {

0 commit comments

Comments
 (0)