Skip to content

Commit ba3eebd

Browse files
committed
Make it illegal to use modes in a fn signature with providing
an explicit variable name. (Step one to changing the defaults) First step to #3535
1 parent 2e7ddee commit ba3eebd

35 files changed

+111
-92
lines changed

src/libcore/at_vec.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ pure fn capacity<T>(&&v: @[const T]) -> uint {
5050
* onto the vector being constructed.
5151
*/
5252
#[inline(always)]
53-
pure fn build_sized<A>(size: uint, builder: fn(push: pure fn(+A))) -> @[A] {
53+
pure fn build_sized<A>(size: uint,
54+
builder: fn(push: pure fn(+v: A))) -> @[A] {
5455
let mut vec = @[];
5556
unsafe { raw::reserve(vec, size); }
5657
builder(|+x| unsafe { raw::push(vec, move x) });
@@ -68,7 +69,7 @@ pure fn build_sized<A>(size: uint, builder: fn(push: pure fn(+A))) -> @[A] {
6869
* onto the vector being constructed.
6970
*/
7071
#[inline(always)]
71-
pure fn build<A>(builder: fn(push: pure fn(+A))) -> @[A] {
72+
pure fn build<A>(builder: fn(push: pure fn(+v: A))) -> @[A] {
7273
build_sized(4, builder)
7374
}
7475

@@ -86,7 +87,7 @@ pure fn build<A>(builder: fn(push: pure fn(+A))) -> @[A] {
8687
*/
8788
#[inline(always)]
8889
pure fn build_sized_opt<A>(size: Option<uint>,
89-
builder: fn(push: pure fn(+A))) -> @[A] {
90+
builder: fn(push: pure fn(+v: A))) -> @[A] {
9091
build_sized(size.get_default(4), builder)
9192
}
9293

src/libcore/dvec.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ priv impl<A> DVec<A> {
9393
}
9494

9595
#[inline(always)]
96-
fn check_out<B>(f: fn(-~[A]) -> B) -> B {
96+
fn check_out<B>(f: fn(-v: ~[A]) -> B) -> B {
9797
unsafe {
9898
let mut data = cast::reinterpret_cast(&null::<()>());
9999
data <-> self.data;
@@ -126,7 +126,7 @@ impl<A> DVec<A> {
126126
* and return a new vector to replace it with.
127127
*/
128128
#[inline(always)]
129-
fn swap(f: fn(-~[A]) -> ~[A]) {
129+
fn swap(f: fn(-v: ~[A]) -> ~[A]) {
130130
self.check_out(|v| self.give_back(f(move v)))
131131
}
132132

@@ -136,7 +136,7 @@ impl<A> DVec<A> {
136136
* and return a new vector to replace it with.
137137
*/
138138
#[inline(always)]
139-
fn swap_mut(f: fn(-~[mut A]) -> ~[mut A]) {
139+
fn swap_mut(f: fn(-v: ~[mut A]) -> ~[mut A]) {
140140
do self.swap |v| {
141141
vec::from_mut(f(vec::to_mut(move v)))
142142
}

src/libcore/io.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,7 @@ mod fsync {
827827
// FIXME (#2004) find better way to create resources within lifetime of
828828
// outer res
829829
fn FILE_res_sync(&&file: FILERes, opt_level: Option<Level>,
830-
blk: fn(&&Res<*libc::FILE>)) {
830+
blk: fn(&&v: Res<*libc::FILE>)) {
831831
blk(Res({
832832
val: file.f, opt_level: opt_level,
833833
fsync_fn: fn@(&&file: *libc::FILE, l: Level) -> int {
@@ -838,7 +838,7 @@ mod fsync {
838838

839839
// fsync fd after executing blk
840840
fn fd_res_sync(&&fd: FdRes, opt_level: Option<Level>,
841-
blk: fn(&&Res<fd_t>)) {
841+
blk: fn(&&v: Res<fd_t>)) {
842842
blk(Res({
843843
val: fd.fd, opt_level: opt_level,
844844
fsync_fn: fn@(&&fd: fd_t, l: Level) -> int {
@@ -852,7 +852,7 @@ mod fsync {
852852

853853
// Call o.fsync after executing blk
854854
fn obj_sync(&&o: FSyncable, opt_level: Option<Level>,
855-
blk: fn(&&Res<FSyncable>)) {
855+
blk: fn(&&v: Res<FSyncable>)) {
856856
blk(Res({
857857
val: o, opt_level: opt_level,
858858
fsync_fn: fn@(&&o: FSyncable, l: Level) -> int {

src/libcore/iter.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ trait Buildable<A> {
6363
* onto the sequence being constructed.
6464
*/
6565
static pure fn build_sized(size: uint,
66-
builder: fn(push: pure fn(+A))) -> self;
66+
builder: fn(push: pure fn(+v: A))) -> self;
6767
}
6868

6969
pure fn eachi<A,IA:BaseIter<A>>(self: IA, blk: fn(uint, v: &A) -> bool) {
@@ -223,7 +223,7 @@ pure fn find<A: Copy,IA:BaseIter<A>>(self: IA,
223223
* onto the sequence being constructed.
224224
*/
225225
#[inline(always)]
226-
pure fn build<A,B: Buildable<A>>(builder: fn(push: pure fn(+A))) -> B {
226+
pure fn build<A,B: Buildable<A>>(builder: fn(push: pure fn(+v: A))) -> B {
227227
build_sized(4, builder)
228228
}
229229

@@ -243,7 +243,7 @@ pure fn build<A,B: Buildable<A>>(builder: fn(push: pure fn(+A))) -> B {
243243
#[inline(always)]
244244
pure fn build_sized_opt<A,B: Buildable<A>>(
245245
size: Option<uint>,
246-
builder: fn(push: pure fn(+A))) -> B {
246+
builder: fn(push: pure fn(+v: A))) -> B {
247247

248248
build_sized(size.get_default(4), builder)
249249
}

src/libcore/option.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ pure fn map_ref<T, U>(opt: &Option<T>, f: fn(x: &T) -> U) -> Option<U> {
6969
match *opt { Some(ref x) => Some(f(x)), None => None }
7070
}
7171

72-
pure fn map_consume<T, U>(+opt: Option<T>, f: fn(+T) -> U) -> Option<U> {
72+
pure fn map_consume<T, U>(+opt: Option<T>, f: fn(+v: T) -> U) -> Option<U> {
7373
/*!
7474
* As `map`, but consumes the option and gives `f` ownership to avoid
7575
* copying.
@@ -107,7 +107,7 @@ pure fn or<T>(+opta: Option<T>, +optb: Option<T>) -> Option<T> {
107107
}
108108

109109
#[inline(always)]
110-
pure fn while_some<T>(+x: Option<T>, blk: fn(+T) -> Option<T>) {
110+
pure fn while_some<T>(+x: Option<T>, blk: fn(+v: T) -> Option<T>) {
111111
//! Applies a function zero or more times until the result is none.
112112
113113
let mut opt <- x;
@@ -248,7 +248,7 @@ impl<T: Copy> Option<T> {
248248
*/
249249
pure fn expect(reason: ~str) -> T { expect(self, reason) }
250250
/// Applies a function zero or more times until the result is none.
251-
pure fn while_some(blk: fn(+T) -> Option<T>) { while_some(self, blk) }
251+
pure fn while_some(blk: fn(+v: T) -> Option<T>) { while_some(self, blk) }
252252
}
253253

254254
#[cfg(stage0)]

src/libcore/pipes.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ endpoint is passed to the new task.
889889
fn spawn_service<T: Send, Tb: Send>(
890890
init: extern fn() -> (SendPacketBuffered<T, Tb>,
891891
RecvPacketBuffered<T, Tb>),
892-
+service: fn~(+RecvPacketBuffered<T, Tb>))
892+
+service: fn~(+v: RecvPacketBuffered<T, Tb>))
893893
-> SendPacketBuffered<T, Tb>
894894
{
895895
let (client, server) = init();
@@ -913,7 +913,7 @@ receive state.
913913
fn spawn_service_recv<T: Send, Tb: Send>(
914914
init: extern fn() -> (RecvPacketBuffered<T, Tb>,
915915
SendPacketBuffered<T, Tb>),
916-
+service: fn~(+SendPacketBuffered<T, Tb>))
916+
+service: fn~(+v: SendPacketBuffered<T, Tb>))
917917
-> RecvPacketBuffered<T, Tb>
918918
{
919919
let (client, server) = init();

src/libcore/str.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -2109,7 +2109,8 @@ mod raw {
21092109
unsafe fn from_byte(u: u8) -> ~str { raw::from_bytes([u]) }
21102110

21112111
/// Form a slice from a *u8 buffer of the given length without copying.
2112-
unsafe fn buf_as_slice<T>(buf: *u8, len: uint, f: fn(&& &str) -> T) -> T {
2112+
unsafe fn buf_as_slice<T>(buf: *u8, len: uint,
2113+
f: fn(&&v: &str) -> T) -> T {
21132114
let v = (buf, len + 1);
21142115
assert is_utf8(::cast::reinterpret_cast(&v));
21152116
f(::cast::transmute(move v))

src/libcore/task.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ type TaskOpts = {
338338
// FIXME (#2585): Replace the 'consumed' bit with move mode on self
339339
enum TaskBuilder = {
340340
opts: TaskOpts,
341-
gen_body: fn@(+fn~()) -> fn~(),
341+
gen_body: fn@(+v: fn~()) -> fn~(),
342342
can_not_copy: Option<util::NonCopyable>,
343343
mut consumed: bool,
344344
};
@@ -466,7 +466,7 @@ impl TaskBuilder {
466466
* # Failure
467467
* Fails if a future_result was already set for this task.
468468
*/
469-
fn future_result(blk: fn(+future::Future<TaskResult>)) -> TaskBuilder {
469+
fn future_result(blk: fn(+v: future::Future<TaskResult>)) -> TaskBuilder {
470470
// FIXME (#1087, #1857): Once linked failure and notification are
471471
// handled in the library, I can imagine implementing this by just
472472
// registering an arbitrary number of task::on_exit handlers and
@@ -528,7 +528,7 @@ impl TaskBuilder {
528528
* generator by applying the task body which results from the
529529
* existing body generator to the new body generator.
530530
*/
531-
fn add_wrapper(wrapper: fn@(+fn~()) -> fn~()) -> TaskBuilder {
531+
fn add_wrapper(wrapper: fn@(+v: fn~()) -> fn~()) -> TaskBuilder {
532532
let prev_gen_body = self.gen_body;
533533
let notify_chan = if self.opts.notify_chan.is_none() {
534534
None
@@ -578,7 +578,7 @@ impl TaskBuilder {
578578
spawn::spawn_raw(move opts, x.gen_body(move f));
579579
}
580580
/// Runs a task, while transfering ownership of one argument to the child.
581-
fn spawn_with<A: Send>(+arg: A, +f: fn~(+A)) {
581+
fn spawn_with<A: Send>(+arg: A, +f: fn~(+v: A)) {
582582
let arg = ~mut Some(move arg);
583583
do self.spawn |move arg, move f|{
584584
f(option::swap_unwrap(arg))
@@ -705,7 +705,7 @@ fn spawn_supervised(+f: fn~()) {
705705
task().supervised().spawn(move f)
706706
}
707707
708-
fn spawn_with<A:Send>(+arg: A, +f: fn~(+A)) {
708+
fn spawn_with<A:Send>(+arg: A, +f: fn~(+v: A)) {
709709
/*!
710710
* Runs a task, while transfering ownership of one argument to the
711711
* child.
@@ -1246,7 +1246,7 @@ fn test_spawn_sched_blocking() {
12461246
}
12471247

12481248
#[cfg(test)]
1249-
fn avoid_copying_the_body(spawnfn: fn(+fn~())) {
1249+
fn avoid_copying_the_body(spawnfn: fn(+v: fn~())) {
12501250
let p = comm::Port::<uint>();
12511251
let ch = comm::Chan(p);
12521252

src/libcore/task/local_data.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use local_data_priv::{
4343
*
4444
* These two cases aside, the interface is safe.
4545
*/
46-
type LocalDataKey<T: Owned> = &fn(+@T);
46+
type LocalDataKey<T: Owned> = &fn(+v: @T);
4747

4848
/**
4949
* Remove a task-local data value from the table, returning the

src/libcore/task/spawn.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ fn taskset_remove(tasks: &mut TaskSet, task: *rust_task) {
8282
let was_present = tasks.remove(&task);
8383
assert was_present;
8484
}
85-
fn taskset_each(tasks: &TaskSet, blk: fn(+*rust_task) -> bool) {
85+
fn taskset_each(tasks: &TaskSet, blk: fn(+v: *rust_task) -> bool) {
8686
tasks.each_key(|k| blk(*k))
8787
}
8888

src/libcore/vec.rs

+8-7
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,8 @@ pure fn with_capacity<T>(capacity: uint) -> ~[T] {
235235
* onto the vector being constructed.
236236
*/
237237
#[inline(always)]
238-
pure fn build_sized<A>(size: uint, builder: fn(push: pure fn(+A))) -> ~[A] {
238+
pure fn build_sized<A>(size: uint,
239+
builder: fn(push: pure fn(+v: A))) -> ~[A] {
239240
let mut vec = with_capacity(size);
240241
builder(|+x| unsafe { push(vec, move x) });
241242
move vec
@@ -252,7 +253,7 @@ pure fn build_sized<A>(size: uint, builder: fn(push: pure fn(+A))) -> ~[A] {
252253
* onto the vector being constructed.
253254
*/
254255
#[inline(always)]
255-
pure fn build<A>(builder: fn(push: pure fn(+A))) -> ~[A] {
256+
pure fn build<A>(builder: fn(push: pure fn(+v: A))) -> ~[A] {
256257
build_sized(4, builder)
257258
}
258259

@@ -270,7 +271,7 @@ pure fn build<A>(builder: fn(push: pure fn(+A))) -> ~[A] {
270271
*/
271272
#[inline(always)]
272273
pure fn build_sized_opt<A>(size: Option<uint>,
273-
builder: fn(push: pure fn(+A))) -> ~[A] {
274+
builder: fn(push: pure fn(+v: A))) -> ~[A] {
274275
build_sized(size.get_default(4), builder)
275276
}
276277

@@ -506,7 +507,7 @@ fn unshift<T>(&v: ~[T], +x: T) {
506507
}
507508
}
508509

509-
fn consume<T>(+v: ~[T], f: fn(uint, +T)) unsafe {
510+
fn consume<T>(+v: ~[T], f: fn(uint, +v: T)) unsafe {
510511
do as_imm_buf(v) |p, ln| {
511512
for uint::range(0, ln) |i| {
512513
let x <- *ptr::offset(p, i);
@@ -517,7 +518,7 @@ fn consume<T>(+v: ~[T], f: fn(uint, +T)) unsafe {
517518
raw::set_len(v, 0);
518519
}
519520

520-
fn consume_mut<T>(+v: ~[mut T], f: fn(uint, +T)) unsafe {
521+
fn consume_mut<T>(+v: ~[mut T], f: fn(uint, +v: T)) unsafe {
521522
do as_imm_buf(v) |p, ln| {
522523
for uint::range(0, ln) |i| {
523524
let x <- *ptr::offset(p, i);
@@ -748,7 +749,7 @@ pure fn map<T, U>(v: &[T], f: fn(v: &T) -> U) -> ~[U] {
748749
move result
749750
}
750751

751-
fn map_consume<T, U>(+v: ~[T], f: fn(+T) -> U) -> ~[U] {
752+
fn map_consume<T, U>(+v: ~[T], f: fn(+v: T) -> U) -> ~[U] {
752753
let mut result = ~[];
753754
do consume(move v) |_i, x| {
754755
vec::push(result, f(move x));
@@ -1808,7 +1809,7 @@ mod raw {
18081809
* not bytes).
18091810
*/
18101811
#[inline(always)]
1811-
unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn(&& &[T]) -> U) -> U {
1812+
unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn(&&v: &[T]) -> U) -> U {
18121813
let pair = (p, len * sys::size_of::<T>());
18131814
let v : *(&blk/[T]) =
18141815
::cast::reinterpret_cast(&ptr::addr_of(pair));

src/libstd/arc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ impl<T: Const Send> &RWARC<T> {
340340
* }
341341
* ~~~
342342
*/
343-
fn write_downgrade<U>(blk: fn(+RWWriteMode<T>) -> U) -> U {
343+
fn write_downgrade<U>(blk: fn(+v: RWWriteMode<T>) -> U) -> U {
344344
let state = unsafe { get_shared_mutable_state(&self.x) };
345345
do borrow_rwlock(state).write_downgrade |write_mode| {
346346
check_poison(false, state.failed);

src/libstd/bitv.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ impl BigBitv {
140140
}
141141

142142
#[inline(always)]
143-
fn each_storage(op: fn(&uint) -> bool) {
143+
fn each_storage(op: fn(&v: uint) -> bool) {
144144
for uint::range(0, self.storage.len()) |i| {
145145
let mut w = self.storage[i];
146146
let b = !op(w);

src/libstd/map.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ trait Map<K:Eq IterBytes Hash Copy, V: Copy> {
3333
*
3434
* Returns true if the key did not already exist in the map
3535
*/
36-
fn insert(+K, +V) -> bool;
36+
fn insert(+v: K, +v: V) -> bool;
3737

3838
/// Returns true if the map contains a value for the specified key
3939
fn contains_key(+key: K) -> bool;

src/libstd/sync.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ impl &RWlock {
539539
* }
540540
* ~~~
541541
*/
542-
fn write_downgrade<U>(blk: fn(+RWlockWriteMode) -> U) -> U {
542+
fn write_downgrade<U>(blk: fn(+v: RWlockWriteMode) -> U) -> U {
543543
// Implementation slightly different from the slicker 'write's above.
544544
// The exit path is conditional on whether the caller downgrades.
545545
let mut _release = None;

src/libsyntax/ast.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ type spanned<T> = {node: T, span: span};
3434
/* can't import macros yet, so this is copied from token.rs. See its comment
3535
* there. */
3636
macro_rules! interner_key (
37-
() => (cast::transmute::<(uint, uint), &fn(+@@token::ident_interner)>(
37+
() => (cast::transmute::<(uint, uint), &fn(+v: @@token::ident_interner)>(
3838
(-3 as uint, 0u)))
3939
)
4040

src/libsyntax/ext/auto_serialize.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ fn ser_variant(cx: ext_ctxt,
351351
span: span,
352352
-s: @ast::expr,
353353
pfn: fn(~[@ast::pat]) -> ast::pat_,
354-
bodyfn: fn(-@ast::expr, ast::blk) -> @ast::expr,
355-
argfn: fn(-@ast::expr, uint, ast::blk) -> @ast::expr)
354+
bodyfn: fn(-v: @ast::expr, ast::blk) -> @ast::expr,
355+
argfn: fn(-v: @ast::expr, uint, ast::blk) -> @ast::expr)
356356
-> ast::arm {
357357
let vnames = do vec::from_fn(vec::len(tys)) |i| {
358358
cx.parse_sess().interner.intern(@fmt!("__v%u", i))
@@ -535,7 +535,7 @@ fn ser_ty(cx: ext_ctxt, tps: ser_tps_map,
535535
fn mk_ser_fn(cx: ext_ctxt, span: span, name: ast::ident,
536536
tps: ~[ast::ty_param],
537537
f: fn(ext_ctxt, ser_tps_map,
538-
-@ast::expr, -@ast::expr) -> ~[@ast::stmt])
538+
-v: @ast::expr, -v: @ast::expr) -> ~[@ast::stmt])
539539
-> @ast::item {
540540
let ext_cx = cx; // required for #ast
541541

@@ -747,7 +747,7 @@ fn deser_ty(cx: ext_ctxt, tps: deser_tps_map,
747747

748748
fn mk_deser_fn(cx: ext_ctxt, span: span,
749749
name: ast::ident, tps: ~[ast::ty_param],
750-
f: fn(ext_ctxt, deser_tps_map, -@ast::expr) -> @ast::expr)
750+
f: fn(ext_ctxt, deser_tps_map, -v: @ast::expr) -> @ast::expr)
751751
-> @ast::item {
752752
let ext_cx = cx; // required for #ast
753753

src/libsyntax/ext/expand.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ fn expand_mod_items(exts: HashMap<~str, syntax_extension>, cx: ext_ctxt,
167167
// When we enter a module, record it, for the sake of `module!`
168168
fn expand_item(exts: HashMap<~str, syntax_extension>,
169169
cx: ext_ctxt, &&it: @ast::item, fld: ast_fold,
170-
orig: fn@(&&@ast::item, ast_fold) -> Option<@ast::item>)
170+
orig: fn@(&&v: @ast::item, ast_fold) -> Option<@ast::item>)
171171
-> Option<@ast::item>
172172
{
173173
let is_mod = match it.node {

src/libsyntax/ext/pipes/ast_builder.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ trait ext_ctxt_ast_builder {
7777
fn item_ty(name: ident, span: span, ty: @ast::ty) -> @ast::item;
7878
fn ty_vars(+ty_params: ~[ast::ty_param]) -> ~[@ast::ty];
7979
fn ty_field_imm(name: ident, ty: @ast::ty) -> ast::ty_field;
80-
fn ty_rec(+~[ast::ty_field]) -> @ast::ty;
80+
fn ty_rec(+v: ~[ast::ty_field]) -> @ast::ty;
8181
fn field_imm(name: ident, e: @ast::expr) -> ast::field;
82-
fn rec(+~[ast::field]) -> @ast::expr;
82+
fn rec(+v: ~[ast::field]) -> @ast::expr;
8383
fn block(+stmts: ~[@ast::stmt], e: @ast::expr) -> ast::blk;
8484
fn stmt_let(ident: ident, e: @ast::expr) -> @ast::stmt;
8585
fn stmt_expr(e: @ast::expr) -> @ast::stmt;

0 commit comments

Comments
 (0)