Skip to content

Commit 79d3670

Browse files
committed
---
yaml --- r: 22580 b: refs/heads/master c: db020ab h: refs/heads/master v: v3
1 parent e0a228e commit 79d3670

File tree

112 files changed

+1741
-521
lines changed

Some content is hidden

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

112 files changed

+1741
-521
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: b5729bd60095fb5ca884936775e031cf19900760
2+
refs/heads/master: db020ab63cd51dd4a25cba2d00117f016128762b
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/cargo/cargo.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import result::{ok, err};
1111
import io::writer_util;
1212
import std::{map, json, tempfile, term, sort, getopts};
1313
import map::hashmap;
14-
import json::to_str;
14+
import to_str::to_str;
1515
import getopts::{optflag, optopt, opt_present};
1616

1717
type package = {
@@ -535,7 +535,7 @@ fn load_one_source_package(src: source, p: map::hashmap<~str, json::json>) {
535535
versions: ~[]
536536
};
537537

538-
alt src.packages.position(|pkg| pkg.uuid == uuid ) {
538+
alt vec::position(src.packages, |pkg| pkg.uuid == uuid) {
539539
some(idx) {
540540
src.packages[idx] = newpkg;
541541
log(debug, ~" updated package: " + src.name + ~"/" + name);

trunk/src/libcore/core.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
import option::{some, none};
66
import option = option::option;
77
import path = path::path;
8-
import str::extensions;
98
import tuple::extensions;
9+
import str::{extensions, str_slice, unique_str};
1010
import vec::extensions;
11+
import vec::{const_vector, copyable_vector, immutable_vector};
12+
import vec::{immutable_copyable_vector, iter_trait_extensions, vec_concat};
13+
import iter::{base_iter, extended_iter, copyable_iter, times};
1114
import option::extensions;
1215
import option_iter::extensions;
13-
import ptr::extensions;
16+
import ptr::{extensions, ptr};
1417
import rand::extensions;
1518
import result::extensions;
1619
import int::{num, times};
@@ -26,11 +29,18 @@ import u64::{num, times};
2629
import float::num;
2730
import f32::num;
2831
import f64::num;
32+
import num::num;
2933

3034
export path, option, some, none, unreachable;
3135
export extensions;
3236
// The following exports are the extension impls for numeric types
3337
export num, times;
38+
// The following exports are the common traits
39+
export str_slice, unique_str;
40+
export const_vector, copyable_vector, immutable_vector;
41+
export immutable_copyable_vector, iter_trait_extensions, vec_concat;
42+
export base_iter, copyable_iter, extended_iter;
43+
export ptr;
3444

3545
// Export the log levels as global constants. Higher levels mean
3646
// more-verbosity. Error is the bottom level, default logging level is

trunk/src/libcore/int-template.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,7 @@ fn test_ifaces() {
233233

234234
#[test]
235235
fn test_times() {
236+
import iter::times;
236237
let ten = 10 as T;
237238
let mut accum = 0;
238239
for ten.times { accum += 1; }
@@ -243,5 +244,6 @@ fn test_times() {
243244
#[should_fail]
244245
#[ignore(cfg(windows))]
245246
fn test_times_negative() {
247+
import iter::times;
246248
for (-10).times { log(error, ~"nope!"); }
247249
}

trunk/src/libcore/iter-trait.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ export extensions;
88
impl extensions<A> of iter::base_iter<A> for IMPL_T<A> {
99
fn each(blk: fn(A) -> bool) { EACH(self, blk) }
1010
fn size_hint() -> option<uint> { SIZE_HINT(self) }
11+
}
12+
13+
impl extensions<A> of iter::extended_iter<A> for IMPL_T<A> {
1114
fn eachi(blk: fn(uint, A) -> bool) { iter::eachi(self, blk) }
1215
fn all(blk: fn(A) -> bool) -> bool { iter::all(self, blk) }
1316
fn any(blk: fn(A) -> bool) -> bool { iter::any(self, blk) }

trunk/src/libcore/iter.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@ iface base_iter<A> {
33
fn size_hint() -> option<uint>;
44
}
55

6+
trait extended_iter<A> {
7+
fn eachi(blk: fn(uint, A) -> bool);
8+
fn all(blk: fn(A) -> bool) -> bool;
9+
fn any(blk: fn(A) -> bool) -> bool;
10+
fn foldl<B>(+b0: B, blk: fn(B, A) -> B) -> B;
11+
fn contains(x: A) -> bool;
12+
fn count(x: A) -> uint;
13+
fn position(f: fn(A) -> bool) -> option<uint>;
14+
}
15+
616
iface times {
717
fn times(it: fn() -> bool);
818
}

trunk/src/libcore/option.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ pure fn iter<T>(opt: option<T>, f: fn(T)) {
9292
alt opt { none { } some(t) { f(t); } }
9393
}
9494

95+
#[inline(always)]
9596
pure fn unwrap<T>(-opt: option<T>) -> T {
9697
/*!
9798
* Moves a value out of an option type and returns it.

trunk/src/libcore/pipes.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,11 @@ impl<T: send> of selectable for pipes::port<T> {
578578

579579
type shared_chan<T: send> = arc::exclusive<pipes::chan<T>>;
580580

581-
impl chan<T: send> for shared_chan<T> {
581+
trait send_on_shared_chan<T> {
582+
fn send(+x: T);
583+
}
584+
585+
impl chan<T: send> of send_on_shared_chan<T> for shared_chan<T> {
582586
fn send(+x: T) {
583587
let mut xx = some(x);
584588
do self.with |_c, chan| {

trunk/src/libcore/ptr.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export memset;
1414
export buf_len;
1515
export position;
1616
export extensions;
17+
export ptr;
1718

1819
import libc::{c_void, size_t};
1920

trunk/src/libcore/str.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ export
106106
escape_unicode,
107107

108108
unsafe,
109-
extensions;
109+
extensions,
110+
str_slice,
111+
unique_str;
110112

111113
#[abi = "cdecl"]
112114
extern mod rustrt {

trunk/src/libcore/uint-template.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ fn to_str_radix17() {
278278

279279
#[test]
280280
fn test_times() {
281+
import iter::times;
281282
let ten = 10 as T;
282283
let mut accum = 0;
283284
for ten.times { accum += 1; }

trunk/src/libcore/vec.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ export unpack_const_slice;
8585
export unsafe;
8686
export u8;
8787
export extensions;
88+
export const_vector;
89+
export copyable_vector;
90+
export immutable_vector;
91+
export immutable_copyable_vector;
92+
export iter_trait_extensions;
93+
export vec_concat;
8894

8995
#[abi = "cdecl"]
9096
extern mod rustrt {
@@ -179,11 +185,12 @@ pure fn len<T>(&&v: &[const T]) -> uint {
179185
* Creates an immutable vector of size `n_elts` and initializes the elements
180186
* to the value returned by the function `op`.
181187
*/
182-
pure fn from_fn<T>(n_elts: uint, op: init_op<T>) -> ~[T] {
188+
pure fn from_fn<T: copy>(n_elts: uint, op: init_op<T>) -> ~[T] {
183189
let mut v = ~[];
184190
unchecked{reserve(v, n_elts);}
185191
let mut i: uint = 0u;
186-
while i < n_elts unsafe { push(v, op(i)); i += 1u; }
192+
while i < n_elts unsafe { ref_set(v, i, op(i)); i += 1u; }
193+
unsafe { unsafe::set_len(v, n_elts); }
187194
ret v;
188195
}
189196

@@ -197,8 +204,9 @@ pure fn from_elem<T: copy>(n_elts: uint, t: T) -> ~[T] {
197204
let mut v = ~[];
198205
unchecked{reserve(v, n_elts)}
199206
let mut i: uint = 0u;
200-
unsafe { // because push is impure
201-
while i < n_elts { push(v, t); i += 1u; }
207+
unsafe { // because ref_set is unsafe
208+
while i < n_elts { ref_set(v, i, t); i += 1u; }
209+
unsafe { unsafe::set_len(v, n_elts); }
202210
}
203211
ret v;
204212
}
@@ -468,6 +476,16 @@ unsafe fn ref<T: copy>(v: &[const T], i: uint) -> T {
468476
unpack_slice(v, |p, _len| *ptr::offset(p, i))
469477
}
470478

479+
#[inline(always)]
480+
unsafe fn ref_set<T: copy>(v: &[mut T], i: uint, +val: T) {
481+
let mut box = some(val);
482+
do unpack_mut_slice(v) |p, _len| {
483+
let mut box2 = none;
484+
box2 <-> box;
485+
rusti::move_val_init(*ptr::mut_offset(p, i), option::unwrap(box2));
486+
}
487+
}
488+
471489
#[inline(always)]
472490
fn push_all<T: copy>(&v: ~[const T], rhs: &[const T]) {
473491
reserve(v, v.len() + rhs.len());
@@ -1591,6 +1609,9 @@ mod u8 {
15911609
impl extensions/&<A> of iter::base_iter<A> for &[const A] {
15921610
fn each(blk: fn(A) -> bool) { each(self, blk) }
15931611
fn size_hint() -> option<uint> { some(len(self)) }
1612+
}
1613+
1614+
impl extensions/&<A> of iter::extended_iter<A> for &[const A] {
15941615
fn eachi(blk: fn(uint, A) -> bool) { iter::eachi(self, blk) }
15951616
fn all(blk: fn(A) -> bool) -> bool { iter::all(self, blk) }
15961617
fn any(blk: fn(A) -> bool) -> bool { iter::any(self, blk) }
@@ -1599,6 +1620,7 @@ impl extensions/&<A> of iter::base_iter<A> for &[const A] {
15991620
}
16001621
fn contains(x: A) -> bool { iter::contains(self, x) }
16011622
fn count(x: A) -> uint { iter::count(self, x) }
1623+
fn position(f: fn(A) -> bool) -> option<uint> { iter::position(self, f) }
16021624
}
16031625

16041626
trait iter_trait_extensions<A> {

trunk/src/libstd/arena.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ import list;
66
import list::{list, cons, nil};
77

88
type chunk = {data: ~[u8], mut fill: uint};
9-
type arena = {mut chunks: @list<@chunk>};
9+
10+
type arena_ = {mut chunks: @list<@chunk>};
11+
12+
enum arena {
13+
arena_(arena_)
14+
}
1015

1116
fn chunk(size: uint) -> @chunk {
1217
let mut v = ~[];
@@ -15,7 +20,7 @@ fn chunk(size: uint) -> @chunk {
1520
}
1621

1722
fn arena_with_size(initial_size: uint) -> arena {
18-
ret {mut chunks: @cons(chunk(initial_size), @nil)};
23+
ret arena_({mut chunks: @cons(chunk(initial_size), @nil)});
1924
}
2025

2126
fn arena() -> arena {

trunk/src/libstd/ebml.rs

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,11 @@ fn doc_as_i32(d: doc) -> i32 { doc_as_u32(d) as i32 }
155155
fn doc_as_i64(d: doc) -> i64 { doc_as_u64(d) as i64 }
156156

157157
// ebml writing
158-
type writer = {writer: io::writer, mut size_positions: ~[uint]};
158+
type writer_ = {writer: io::writer, mut size_positions: ~[uint]};
159+
160+
enum writer {
161+
writer_(writer_)
162+
}
159163

160164
fn write_sized_vuint(w: io::writer, n: uint, size: uint) {
161165
alt size {
@@ -187,7 +191,7 @@ fn write_vuint(w: io::writer, n: uint) {
187191

188192
fn writer(w: io::writer) -> writer {
189193
let size_positions: ~[uint] = ~[];
190-
ret {writer: w, mut size_positions: size_positions};
194+
ret writer_({writer: w, mut size_positions: size_positions});
191195
}
192196

193197
// FIXME (#2741): Provide a function to write the standard ebml header.
@@ -311,9 +315,12 @@ enum ebml_serializer_tag {
311315
es_label // Used only when debugging
312316
}
313317

314-
impl serializer of serialization::serializer for ebml::writer {
315-
fn emit_nil() {}
318+
trait serializer_priv {
319+
fn _emit_tagged_uint(t: ebml_serializer_tag, v: uint);
320+
fn _emit_label(label: ~str);
321+
}
316322

323+
impl serializer of serializer_priv for ebml::writer {
317324
// used internally to emit things like the vector length and so on
318325
fn _emit_tagged_uint(t: ebml_serializer_tag, v: uint) {
319326
assert v <= 0xFFFF_FFFF_u;
@@ -329,6 +336,10 @@ impl serializer of serialization::serializer for ebml::writer {
329336
// try and check failures more quickly.
330337
if debug { self.wr_tagged_str(es_label as uint, label) }
331338
}
339+
}
340+
341+
impl serializer of serialization::serializer for ebml::writer {
342+
fn emit_nil() {}
332343

333344
fn emit_uint(v: uint) { self.wr_tagged_u64(es_uint as uint, v as u64); }
334345
fn emit_u64(v: u64) { self.wr_tagged_u64(es_u64 as uint, v); }
@@ -383,14 +394,18 @@ impl serializer of serialization::serializer for ebml::writer {
383394
fn emit_tup_elt(_idx: uint, f: fn()) { f() }
384395
}
385396

386-
type ebml_deserializer = {mut parent: ebml::doc,
387-
mut pos: uint};
397+
type ebml_deserializer_ = {mut parent: ebml::doc,
398+
mut pos: uint};
399+
400+
enum ebml_deserializer {
401+
ebml_deserializer_(ebml_deserializer_)
402+
}
388403

389404
fn ebml_deserializer(d: ebml::doc) -> ebml_deserializer {
390-
{mut parent: d, mut pos: d.start}
405+
ebml_deserializer_({mut parent: d, mut pos: d.start})
391406
}
392407

393-
impl deserializer of serialization::deserializer for ebml_deserializer {
408+
impl deserializer_priv for ebml_deserializer {
394409
fn _check_label(lbl: ~str) {
395410
if self.pos < self.parent.end {
396411
let {tag: r_tag, doc: r_doc} =
@@ -443,7 +458,9 @@ impl deserializer of serialization::deserializer for ebml_deserializer {
443458
#debug["_next_uint exp_tag=%? result=%?", exp_tag, r];
444459
ret r as uint;
445460
}
461+
}
446462

463+
impl deserializer of serialization::deserializer for ebml_deserializer {
447464
fn read_nil() -> () { () }
448465

449466
fn read_u64() -> u64 { ebml::doc_as_u64(self.next_doc(es_u64)) }

trunk/src/libstd/json.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import io;
88
import io::{reader_util, writer_util};
99
import map;
1010
import map::hashmap;
11+
import map::map;
1112
import core::vec::extensions;
1213

1314
export json;
@@ -114,13 +115,17 @@ fn to_str(j: json) -> ~str {
114115
io::with_str_writer(|wr| to_writer(wr, j))
115116
}
116117

117-
type parser = {
118+
type parser_ = {
118119
rdr: io::reader,
119120
mut ch: char,
120121
mut line: uint,
121122
mut col: uint,
122123
};
123124

125+
enum parser {
126+
parser_(parser_)
127+
}
128+
124129
impl parser for parser {
125130
fn eof() -> bool { self.ch == -1 as char }
126131

@@ -463,12 +468,12 @@ impl parser for parser {
463468

464469
/// Deserializes a json value from an io::reader
465470
fn from_reader(rdr: io::reader) -> result<json, error> {
466-
let parser = {
471+
let parser = parser_({
467472
rdr: rdr,
468473
mut ch: rdr.read_char(),
469474
mut line: 1u,
470475
mut col: 1u,
471-
};
476+
});
472477

473478
parser.parse()
474479
}

0 commit comments

Comments
 (0)