Skip to content

Commit 2fd41d1

Browse files
committed
---
yaml --- r: 44858 b: refs/heads/master c: 332c046 h: refs/heads/master v: v3
1 parent e759126 commit 2fd41d1

30 files changed

+78
-63
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: bcf626812b88f63932c541f81c7f68360e31a7c1
2+
refs/heads/master: 332c0460290ade81edf44b55d47edcb4990a3b5a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: a6d9689399d091c3265f00434a69c551a61c28dc
55
refs/heads/try: ef355f6332f83371e4acf04fc4eb940ab41d78d3

trunk/doc/rust.md

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,6 +1085,15 @@ let p = Point(10, 11);
10851085
let px: int = match p { Point(x, _) => x };
10861086
~~~~
10871087

1088+
A _unit-like struct_ is a structure without any fields, defined by leaving off the fields list entirely.
1089+
Such types will have a single value, just like the [unit value `()`](#unit-and-boolean-literals) of the unit type.
1090+
For example:
1091+
1092+
~~~~
1093+
struct Cookie;
1094+
let c = [Cookie, Cookie, Cookie, Cookie];
1095+
~~~~
1096+
10881097
### Enumerations
10891098

10901099
An _enumeration_ is a simultaneous definition of a nominal [enumerated type](#enumerated-types) as well as a set of *constructors*,
@@ -1590,7 +1599,8 @@ struct_expr : expr_path '{' ident ':' expr
15901599
[ ',' ident ':' expr ] *
15911600
[ ".." expr ] '}' |
15921601
expr_path '(' expr
1593-
[ ',' expr ] * ')'
1602+
[ ',' expr ] * ')' |
1603+
expr_path
15941604
~~~~~~~~
15951605

15961606
There are several forms of structure expressions.
@@ -1600,23 +1610,28 @@ providing the field values of a new instance of the structure.
16001610
A field name can be any identifier, and is separated from its value expression by a colon.
16011611
To indicate that a field is mutable, the `mut` keyword is written before its name.
16021612

1603-
A _tuple structure expression_ constists of the [path](#paths) of a [structure item](#structures),
1613+
A _tuple structure expression_ consists of the [path](#paths) of a [structure item](#structures),
16041614
followed by a parenthesized list of one or more comma-separated expressions
16051615
(in other words, the path of a structured item followed by a tuple expression).
16061616
The structure item must be a tuple structure item.
16071617

1618+
A _unit-like structure expression_ consists only of the [path](#paths) of a [structure item](#structures).
1619+
16081620
The following are examples of structure expressions:
16091621

16101622
~~~~
16111623
# struct Point { x: float, y: float }
16121624
# struct TuplePoint(float, float);
16131625
# mod game { pub struct User { name: &str, age: uint, score: uint } }
1626+
# struct Cookie; fn some_fn<T>(t: T) {}
16141627
Point {x: 10f, y: 20f};
16151628
TuplePoint(10f, 20f);
16161629
let u = game::User {name: "Joe", age: 35u, score: 100_000};
1630+
some_fn::<Cookie>(Cookie);
16171631
~~~~
16181632

16191633
A structure expression forms a new value of the named structure type.
1634+
Note that for a given *unit-like* structure type, this will always be the same value.
16201635

16211636
A structure expression can terminate with the syntax `..` followed by an expression to denote a functional update.
16221637
The expression following `..` (the base) must be of the same structure type as the new structure type being formed.
@@ -2643,7 +2658,10 @@ the resulting `struct` value will always be laid out in memory in the order spec
26432658
The fields of a `struct` may be qualified by [visibility modifiers](#visibility-modifiers),
26442659
to restrict access to implementation-private data in a structure.
26452660

2646-
A `tuple struct` type is just like a structure type, except that the fields are anonymous.
2661+
A _tuple struct_ type is just like a structure type, except that the fields are anonymous.
2662+
2663+
A _unit-like struct_ type is like a structure type, except that it has no fields.
2664+
The one value constructed by the associated [structure expression](#structure-expression) is the only value that inhabits such a type.
26472665

26482666
### Enumerated types
26492667

trunk/src/libcore/at_vec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ pub mod raw {
183183
use at_vec::{capacity, rustrt};
184184
use cast::transmute;
185185
use libc;
186-
use unstable::intrinsics::{move_val_init};
186+
use private::intrinsics::{move_val_init};
187187
use ptr::addr_of;
188188
use ptr;
189189
use sys;

trunk/src/libcore/comm.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use either::{Either, Left, Right};
1212
use kinds::Owned;
1313
use option;
1414
use option::{Option, Some, None, unwrap};
15-
use unstable;
15+
use private;
1616
use vec;
1717

1818
use pipes::{recv, try_recv, wait_many, peek, PacketHeader};
@@ -242,7 +242,7 @@ impl<T: Owned> Peekable<T> for PortSet<T> {
242242
}
243243
244244
/// A channel that can be shared between many senders.
245-
pub type SharedChan<T> = unstable::Exclusive<Chan<T>>;
245+
pub type SharedChan<T> = private::Exclusive<Chan<T>>;
246246
247247
impl<T: Owned> GenericChan<T> for SharedChan<T> {
248248
fn send(x: T) {
@@ -268,7 +268,7 @@ impl<T: Owned> GenericSmartChan<T> for SharedChan<T> {
268268
269269
/// Converts a `chan` into a `shared_chan`.
270270
pub fn SharedChan<T:Owned>(c: Chan<T>) -> SharedChan<T> {
271-
unstable::exclusive(c)
271+
private::exclusive(c)
272272
}
273273
274274
/// Receive a message from one of two endpoints.

trunk/src/libcore/core.rc

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,8 @@ pub const debug : u32 = 4_u32;
228228
// The runtime interface used by the compiler
229229
#[cfg(notest)] pub mod rt;
230230
// Private APIs
231-
pub mod unstable;
232-
// NOTE: Remove after snapshot
233-
#[cfg(stage0)]
234-
pub mod private {
235-
pub use super::unstable::extfmt;
236-
}
231+
pub mod private;
232+
237233

238234
/* For internal use, not exported */
239235

trunk/src/libcore/num/f32.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use num::strconv;
1818
use num;
1919
use ops;
2020
use option::Option;
21-
use unstable::intrinsics::floorf32;
21+
use private::intrinsics::floorf32;
2222
use from_str;
2323
use to_str;
2424

trunk/src/libcore/num/f64.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use num::strconv;
1919
use num;
2020
use ops;
2121
use option::Option;
22-
use unstable::intrinsics::floorf64;
22+
use private::intrinsics::floorf64;
2323
use to_str;
2424
use from_str;
2525

trunk/src/libcore/os.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use libc::{mode_t, pid_t, FILE};
3535
use option;
3636
use option::{Some, None};
3737
use prelude::*;
38+
use private;
3839
use ptr;
3940
use str;
4041
use task;
@@ -144,8 +145,8 @@ This uses a per-runtime lock to serialize access.
144145
FIXME #4726: It would probably be appropriate to make this a real global
145146
*/
146147
fn with_env_lock<T>(f: &fn() -> T) -> T {
147-
use unstable::global::global_data_clone_create;
148-
use unstable::{Exclusive, exclusive};
148+
use private::global::global_data_clone_create;
149+
use private::{Exclusive, exclusive};
149150

150151
struct SharedValue(());
151152
type ValueMutex = Exclusive<SharedValue>;

trunk/src/libcore/pipes.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ use libc;
9191
use option;
9292
use option::{None, Option, Some, unwrap};
9393
use pipes;
94-
use unstable::intrinsics;
94+
use private::intrinsics;
9595
use ptr;
96-
use unstable;
96+
use private;
9797
use task;
9898
use vec;
9999

trunk/src/libcore/prelude.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ pub use option;
6969
pub use os;
7070
pub use path;
7171
pub use comm;
72-
pub use unstable;
72+
pub use private;
7373
pub use ptr;
7474
pub use rand;
7575
pub use result;

trunk/src/libcore/unstable.rs renamed to trunk/src/libcore/private.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,19 @@ use task;
2222
use task::{TaskBuilder, atomically};
2323
use uint;
2424

25-
#[path = "unstable/at_exit.rs"]
25+
#[path = "private/at_exit.rs"]
2626
pub mod at_exit;
27-
#[path = "unstable/global.rs"]
27+
#[path = "private/global.rs"]
2828
pub mod global;
29-
#[path = "unstable/finally.rs"]
29+
#[path = "private/finally.rs"]
3030
pub mod finally;
31-
#[path = "unstable/weak_task.rs"]
31+
#[path = "private/weak_task.rs"]
3232
pub mod weak_task;
33-
#[path = "unstable/exchange_alloc.rs"]
33+
#[path = "private/exchange_alloc.rs"]
3434
pub mod exchange_alloc;
35-
#[path = "unstable/intrinsics.rs"]
35+
#[path = "private/intrinsics.rs"]
3636
pub mod intrinsics;
37-
#[path = "unstable/extfmt.rs"]
37+
#[path = "private/extfmt.rs"]
3838
pub mod extfmt;
3939

4040
extern mod rustrt {
@@ -312,7 +312,7 @@ pub mod tests {
312312
use cell::Cell;
313313
use comm;
314314
use option;
315-
use super::exclusive;
315+
use private::exclusive;
316316
use result;
317317
use task;
318318
use uint;

trunk/src/libcore/unstable/exchange_alloc.rs renamed to trunk/src/libcore/private/exchange_alloc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use c_malloc = libc::malloc;
1414
use c_free = libc::free;
1515
use managed::raw::{BoxHeaderRepr, BoxRepr};
1616
use cast::transmute;
17-
use unstable::intrinsics::{atomic_xadd,atomic_xsub};
17+
use private::intrinsics::{atomic_xadd,atomic_xsub};
1818
use ptr::null;
1919
use intrinsic::TyDesc;
2020

trunk/src/libcore/unstable/global.rs renamed to trunk/src/libcore/private/global.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ use libc::{c_void, uintptr_t};
3232
use option::{Option, Some, None};
3333
use ops::Drop;
3434
use pipes;
35-
use unstable::{Exclusive, exclusive};
36-
use unstable::{SharedMutableState, shared_mutable_state};
37-
use unstable::{get_shared_immutable_state};
38-
use unstable::at_exit::at_exit;
39-
use unstable::intrinsics::atomic_cxchg;
35+
use private::{Exclusive, exclusive};
36+
use private::{SharedMutableState, shared_mutable_state};
37+
use private::{get_shared_immutable_state};
38+
use private::at_exit::at_exit;
39+
use private::intrinsics::atomic_cxchg;
4040
use hashmap::linear::LinearMap;
4141
use sys::Closure;
4242
use task::spawn;

trunk/src/libcore/unstable/weak_task.rs renamed to trunk/src/libcore/private/weak_task.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ use comm::{Port, Chan, SharedChan, GenericChan, GenericPort};
2424
use hashmap::linear::LinearMap;
2525
use ops::Drop;
2626
use option::{Some, None, swap_unwrap};
27-
use unstable::at_exit::at_exit;
28-
use unstable::finally::Finally;
29-
use unstable::global::global_data_clone_create;
27+
use private::at_exit::at_exit;
28+
use private::finally::Finally;
29+
use private::global::global_data_clone_create;
3030
use task::rt::{task_id, get_task_id};
3131
use task::{Task, task, spawn};
3232

trunk/src/libcore/ptr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use cast;
1414
use cmp::{Eq, Ord};
1515
use libc;
1616
use libc::{c_void, size_t};
17-
use unstable::intrinsics::{memmove32,memmove64};
17+
use private::intrinsics::{memmove32,memmove64};
1818
use ptr;
1919
use str;
2020
use sys;

trunk/src/libcore/rt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use libc::{c_char, c_uchar, c_void, size_t, uintptr_t, c_int};
1515
use managed::raw::BoxRepr;
1616
use str;
1717
use sys;
18-
use unstable::exchange_alloc;
18+
use private::exchange_alloc;
1919
use cast::transmute;
2020

2121
use gc::{cleanup_stack_for_failure, gc, Word};

trunk/src/libcore/task/spawn.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ use option;
7979
use comm::{Chan, GenericChan, GenericPort, Port, stream};
8080
use pipes;
8181
use prelude::*;
82-
use unstable;
82+
use private;
8383
use ptr;
8484
use hashmap::linear::LinearSet;
8585
use task::local_data_priv::{local_get, local_set};
@@ -123,7 +123,7 @@ struct TaskGroupData {
123123
// tasks in this group.
124124
mut descendants: TaskSet,
125125
}
126-
type TaskGroupArc = unstable::Exclusive<Option<TaskGroupData>>;
126+
type TaskGroupArc = private::Exclusive<Option<TaskGroupData>>;
127127

128128
type TaskGroupInner = &mut Option<TaskGroupData>;
129129

@@ -153,7 +153,7 @@ struct AncestorNode {
153153
mut ancestors: AncestorList,
154154
}
155155

156-
enum AncestorList = Option<unstable::Exclusive<AncestorNode>>;
156+
enum AncestorList = Option<private::Exclusive<AncestorNode>>;
157157

158158
// Accessors for taskgroup arcs and ancestor arcs that wrap the unsafety.
159159
#[inline(always)]
@@ -162,7 +162,7 @@ fn access_group<U>(x: &TaskGroupArc, blk: fn(TaskGroupInner) -> U) -> U {
162162
}
163163

164164
#[inline(always)]
165-
fn access_ancestors<U>(x: &unstable::Exclusive<AncestorNode>,
165+
fn access_ancestors<U>(x: &private::Exclusive<AncestorNode>,
166166
blk: fn(x: &mut AncestorNode) -> U) -> U {
167167
unsafe { x.with(blk) }
168168
}
@@ -458,7 +458,7 @@ fn gen_child_taskgroup(linked: bool, supervised: bool)
458458
// Main task, doing first spawn ever. Lazily initialise here.
459459
let mut members = new_taskset();
460460
taskset_insert(&mut members, spawner);
461-
let tasks = unstable::exclusive(Some(TaskGroupData {
461+
let tasks = private::exclusive(Some(TaskGroupData {
462462
members: members,
463463
descendants: new_taskset(),
464464
}));
@@ -482,7 +482,7 @@ fn gen_child_taskgroup(linked: bool, supervised: bool)
482482
(g, a, spawner_group.is_main)
483483
} else {
484484
// Child is in a separate group from spawner.
485-
let g = unstable::exclusive(Some(TaskGroupData {
485+
let g = private::exclusive(Some(TaskGroupData {
486486
members: new_taskset(),
487487
descendants: new_taskset(),
488488
}));
@@ -502,7 +502,7 @@ fn gen_child_taskgroup(linked: bool, supervised: bool)
502502
};
503503
assert new_generation < uint::max_value;
504504
// Build a new node in the ancestor list.
505-
AncestorList(Some(unstable::exclusive(AncestorNode {
505+
AncestorList(Some(private::exclusive(AncestorNode {
506506
generation: new_generation,
507507
parent_group: Some(spawner_group.tasks.clone()),
508508
ancestors: old_ancestors,

trunk/src/libcore/vec.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use kinds::Copy;
2222
use libc;
2323
use libc::size_t;
2424
use option::{None, Option, Some};
25-
use unstable::intrinsics;
25+
use private::intrinsics;
2626
use ptr;
2727
use ptr::addr_of;
2828
use sys;
@@ -2008,7 +2008,7 @@ pub mod raw {
20082008
use managed;
20092009
use option::{None, Some};
20102010
use option;
2011-
use unstable::intrinsics;
2011+
use private::intrinsics;
20122012
use ptr::addr_of;
20132013
use ptr;
20142014
use sys;
@@ -2622,8 +2622,8 @@ mod tests {
26222622
#[test]
26232623
fn test_swap_remove_noncopyable() {
26242624
// Tests that we don't accidentally run destructors twice.
2625-
let mut v = ~[::unstable::exclusive(()), ::unstable::exclusive(()),
2626-
::unstable::exclusive(())];
2625+
let mut v = ~[::private::exclusive(()), ::private::exclusive(()),
2626+
::private::exclusive(())];
26272627
let mut _e = v.swap_remove(0);
26282628
assert (len(v) == 2);
26292629
_e = v.swap_remove(1);

trunk/src/libstd/arc.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ use core::cast;
2020
use core::cell::Cell;
2121
use core::pipes;
2222
use core::prelude::*;
23-
use core::unstable::{SharedMutableState, shared_mutable_state};
24-
use core::unstable::{clone_shared_mutable_state};
25-
use core::unstable::{get_shared_mutable_state, get_shared_immutable_state};
23+
use core::private::{SharedMutableState, shared_mutable_state};
24+
use core::private::{clone_shared_mutable_state};
25+
use core::private::{get_shared_mutable_state, get_shared_immutable_state};
2626
use core::ptr;
2727
use core::task;
2828
use core::util;

trunk/src/libstd/sync.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use core::cell::Cell;
1919
use core::option;
2020
use core::pipes;
2121
use core::prelude::*;
22-
use core::unstable::{Exclusive, exclusive};
22+
use core::private::{Exclusive, exclusive};
2323
use core::ptr;
2424
use core::task;
2525
use core::util;

0 commit comments

Comments
 (0)