]> git.lizzy.rs Git - rust.git/commitdiff
use + mode for (almost) everything when not using legacy modes
authorNiko Matsakis <niko@alum.mit.edu>
Thu, 20 Sep 2012 22:59:09 +0000 (15:59 -0700)
committerNiko Matsakis <niko@alum.mit.edu>
Tue, 25 Sep 2012 19:47:35 +0000 (12:47 -0700)
58 files changed:
src/cargo/cargo.rc
src/compiletest/compiletest.rs
src/libcore/pipes.rs
src/libcore/uint-template.rs
src/libcore/vec.rs
src/rustc/front/intrinsic.rs
src/rustc/middle/ty.rs
src/rustc/middle/typeck.rs
src/rustc/middle/typeck/check.rs
src/test/bench/core-map.rs
src/test/bench/core-std.rs
src/test/bench/core-uint-to-str.rs
src/test/bench/core-vec-append.rs
src/test/bench/graph500-bfs.rs
src/test/bench/msgsend-pipes-shared.rs
src/test/bench/msgsend-pipes.rs
src/test/bench/msgsend-ring-mutex-arcs.rs
src/test/bench/msgsend-ring-pipes.rs
src/test/bench/msgsend-ring-rw-arcs.rs
src/test/bench/msgsend-ring.rs
src/test/bench/msgsend.rs
src/test/bench/shootout-ackermann.rs
src/test/bench/shootout-binarytrees.rs
src/test/bench/shootout-chameneos-redux.rs
src/test/bench/shootout-fannkuchredux.rs
src/test/bench/shootout-fasta.rs
src/test/bench/shootout-fibo.rs
src/test/bench/shootout-k-nucleotide-pipes.rs
src/test/bench/shootout-k-nucleotide.rs
src/test/bench/shootout-mandelbrot.rs
src/test/bench/shootout-nbody.rs
src/test/bench/shootout-pfib.rs
src/test/bench/shootout-spectralnorm.rs
src/test/bench/shootout-threadring.rs
src/test/bench/std-smallintmap.rs
src/test/bench/sudoku.rs
src/test/bench/task-perf-jargon-metal-smoke.rs
src/test/bench/task-perf-linked-failure.rs
src/test/bench/task-perf-one-million.rs
src/test/bench/task-perf-spawnalot.rs
src/test/bench/task-perf-word-count-generic.rs
src/test/compile-fail/bad-main.rs
src/test/run-pass/alt-pattern-drop.rs
src/test/run-pass/argv.rs
src/test/run-pass/command-line-args.rs
src/test/run-pass/foreign2.rs
src/test/run-pass/import4.rs
src/test/run-pass/import5.rs
src/test/run-pass/import7.rs
src/test/run-pass/issue-2834.rs
src/test/run-pass/main-ivec.rs
src/test/run-pass/non-legacy-modes.rs [new file with mode: 0644]
src/test/run-pass/option-ext.rs
src/test/run-pass/path.rs
src/test/run-pass/swap-2.rs
src/test/run-pass/tag-in-block.rs
src/test/run-pass/type-param.rs
src/test/run-pass/type-ptr.rs

index 79803ffa5297c34e272003f2de8580e377e03796..ae09531887384a9cfed5ef836b5c9752dfc9c364 100644 (file)
@@ -19,6 +19,8 @@
 #[no_core];
 #[legacy_exports];
 
+#[legacy_modes];
+
 #[allow(vecs_implicitly_copyable,
         non_implicitly_copyable_typarams)];
 #[allow(non_camel_case_types)];
index 1e6c008421d49780574c91670a1cdb32638692e3..5bee7fb255dc7cf2f1c1b1fcc92cb91be39bafd8 100644 (file)
@@ -12,7 +12,7 @@
 use common::mode;
 use util::logv;
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let config = parse_config(args);
     log_config(config);
     run_tests(config);
index e213ce033d034e7b4de12043e8f14f39c1faed23..7321829f6b61c6b96eac4008e910b3a220b17dfb 100644 (file)
@@ -256,16 +256,31 @@ fn entangle_buffer<T: Send, Tstart: Send>(
     (SendPacketBuffered(p), RecvPacketBuffered(p))
 }
 
+#[cfg(stage0)]
 #[abi = "rust-intrinsic"]
 #[doc(hidden)]
 extern mod rusti {
     #[legacy_exports];
-    fn atomic_xchg(dst: &mut int, src: int) -> int;
-    fn atomic_xchg_acq(dst: &mut int, src: int) -> int;
-    fn atomic_xchg_rel(dst: &mut int, src: int) -> int;
+    fn atomic_xchg(dst: &mut int, ++src: int) -> int;
+    fn atomic_xchg_acq(dst: &mut int, ++src: int) -> int;
+    fn atomic_xchg_rel(dst: &mut int, ++src: int) -> int;
 
-    fn atomic_xadd_acq(dst: &mut int, src: int) -> int;
-    fn atomic_xsub_rel(dst: &mut int, src: int) -> int;
+    fn atomic_xadd_acq(dst: &mut int, ++src: int) -> int;
+    fn atomic_xsub_rel(dst: &mut int, ++src: int) -> int;
+}
+
+#[cfg(stage1)]
+#[cfg(stage2)]
+#[abi = "rust-intrinsic"]
+#[doc(hidden)]
+extern mod rusti {
+    #[legacy_exports];
+    fn atomic_xchg(dst: &mut int, +src: int) -> int;
+    fn atomic_xchg_acq(dst: &mut int, +src: int) -> int;
+    fn atomic_xchg_rel(dst: &mut int, +src: int) -> int;
+
+    fn atomic_xadd_acq(dst: &mut int, +src: int) -> int;
+    fn atomic_xsub_rel(dst: &mut int, +src: int) -> int;
 }
 
 // If I call the rusti versions directly from a polymorphic function,
index 8b3a60f4fe35fdfbc72e28771f6b16da3ff4f87d..dba28ec06e612e116f94747ff0477a1c4276e640 100644 (file)
@@ -240,7 +240,7 @@ fn digit(n: T) -> u8 {
             }
 
             vec::raw::form_slice(ptr::offset(p, i),
-                                    len - i, f)
+                                 len - i, f)
         }
     }
 }
index d458ac411e358691ee7f52773737c3838fecaf4f..e3df52b3cd6e2ad7ce48e2e14197a5754ae58c21 100644 (file)
@@ -1723,7 +1723,7 @@ unsafe fn to_mut_ptr<T>(v: &[mut T]) -> *mut T {
      * not bytes).
      */
     #[inline(always)]
-    unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn(&&v: &[T]) -> U) -> U {
+    unsafe fn form_slice<T,U>(p: *T, len: uint, f: fn(v: &[T]) -> U) -> U {
         let pair = (p, len * sys::size_of::<T>());
         let v : *(&blk/[T]) =
             ::cast::reinterpret_cast(&ptr::addr_of(pair));
index 7c9b1e690afe1cc986f9693d871c65535159e4ef..879c73308da84e333118a45a9469d5764f679bc4 100644 (file)
@@ -116,6 +116,6 @@ fn visit_leave_fn(purity: uint, proto: uint,
     extern mod rusti {
         #[legacy_exports];
         fn get_tydesc<T>() -> *();
-        fn visit_tydesc(td: *TyDesc, &&tv: TyVisitor);
+        fn visit_tydesc(++td: *TyDesc, &&tv: TyVisitor);
     }
 }
index b063b759845edc935eb7c1afbc24937374b1734e..f256b4b76cdbbdf41821b7fe2a31ec2223e600ba 100644 (file)
 export type_is_pod;
 export type_is_scalar;
 export type_is_immediate;
+export type_is_borrowed;
 export type_is_sequence;
 export type_is_signed;
 export type_is_structural;
@@ -1090,13 +1091,21 @@ fn mk_with_id(cx: ctxt, base: t, def_id: ast::def_id) -> t {
 }
 
 fn default_arg_mode_for_ty(tcx: ctxt, ty: ty::t) -> ast::rmode {
-    return if ty::type_is_immediate(ty) {
-        ast::by_val
-    } else if tcx.legacy_modes || type_is_fn(ty) {
-        //                        ^^^^^^^^^^^^^^
+    return if type_is_fn(ty) {
+        //    ^^^^^^^^^^^^^^
         // FIXME(#2202) --- We retain by-ref by default to workaround a memory
         // leak that otherwise results when @fn is upcast to &fn.
         ast::by_ref
+    } else if tcx.legacy_modes {
+        if type_is_borrowed(ty) {
+            // the old mode default was ++ for things like &ptr, but to be
+            // forward-compatible with non-legacy, we should use +
+            ast::by_copy
+        } else if ty::type_is_immediate(ty) {
+            ast::by_val
+        } else {
+            ast::by_ref
+        }
     } else {
         ast::by_copy
     };
@@ -1107,6 +1116,18 @@ fn type_is_fn(ty: t) -> bool {
             _ => false
         }
     }
+
+    fn type_is_borrowed(ty: t) -> bool {
+        match ty::get(ty).sty {
+            ty::ty_rptr(*) => true,
+            ty_evec(_, vstore_slice(_)) => true,
+            ty_estr(vstore_slice(_)) => true,
+
+            // technically, we prob ought to include
+            // &fn(), but that is treated specially due to #2202
+            _ => false
+        }
+    }
 }
 
 // Returns the narrowest lifetime enclosing the evaluation of the expression
@@ -1575,7 +1596,6 @@ fn type_is_immediate(ty: t) -> bool {
         type_is_unique(ty) || type_is_region_ptr(ty);
 }
 
-
 fn type_needs_drop(cx: ctxt, ty: t) -> bool {
     match cx.needs_drop_cache.find(ty) {
       Some(result) => return result,
index a01dbb881c5b8adbe3a2d4ea8e8df94b86e34ec3..e0b2ca5ae6425afe0ef8b5cba74703bba3b9ca4c 100644 (file)
@@ -256,7 +256,14 @@ fn require_same_types(
     }
 }
 
-fn arg_is_argv_ty(_tcx: ty::ctxt, a: ty::arg) -> bool {
+fn arg_is_argv_ty(tcx: ty::ctxt, a: ty::arg) -> bool {
+    match ty::resolved_mode(tcx, a.mode) {
+        ast::by_val => { /*ok*/ }
+        _ => {
+            return false;
+        }
+    }
+
     match ty::get(a.ty).sty {
       ty::ty_evec(mt, vstore_uniq) => {
         if mt.mutbl != ast::m_imm { return false; }
@@ -300,7 +307,7 @@ fn check_main_fn_ty(ccx: @crate_ctxt,
                 tcx.sess.span_err(
                     main_span,
                     fmt!("Wrong type in main function: found `%s`, \
-                          expected `extern fn(~[str]) -> ()` \
+                          expected `extern fn(++v: ~[~str]) -> ()` \
                           or `extern fn() -> ()`",
                          ty_to_str(tcx, main_t)));
             }
index cfc14999430ceb40185dfa97eefe160889a7743b..8d2384cd5306989f3323ecbd5a7cedd34b8fd52a 100644 (file)
@@ -2609,10 +2609,10 @@ fn arg(m: ast::rmode, ty: ty::t) -> ty::arg {
       ~"atomic_xchg"     | ~"atomic_xadd"     | ~"atomic_xsub" |
       ~"atomic_xchg_acq" | ~"atomic_xadd_acq" | ~"atomic_xsub_acq" |
       ~"atomic_xchg_rel" | ~"atomic_xadd_rel" | ~"atomic_xsub_rel" => {
-        (0u, ~[arg(ast::by_val,
+        (0u, ~[arg(ast::by_copy,
                    ty::mk_mut_rptr(tcx, ty::re_bound(ty::br_anon(0)),
                                    ty::mk_int(tcx))),
-               arg(ast::by_val, ty::mk_int(tcx))],
+               arg(ast::by_copy, ty::mk_int(tcx))],
          ty::mk_int(tcx))
       }
 
index 32cce47610b817c7851846dd154bfd2d34b4f8f8..279905fe3f182f3ada49d217ec3f682e18101b12 100644 (file)
@@ -142,7 +142,7 @@ fn empty_results() -> Results {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let num_keys = {
         if args.len() == 2 {
             uint::from_str(args[1]).get()
index 8ab41b0e3631223ec5be2d25ccca1411fcd7dffe..a88793705a6b6cee3ad323f843c1cab5ebb2953d 100644 (file)
@@ -8,7 +8,7 @@
 
 use io::{Reader, ReaderUtil};
 
-fn main(argv: ~[~str]) {
+fn main(++argv: ~[~str]) {
     #macro[
         [#bench[id],
          maybe_run_test(argv, #stringify(id), id)
index 5a6c9b9def7f591bfd9e267a24ab6597a1882bbd..05643536dc0ad379782512383b8effb7e8127de7 100644 (file)
@@ -1,4 +1,4 @@
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"10000000"]
     } else if args.len() <= 1u {
index 33f120bd1e4ef6df509638167ec2adda326df26a..d708ac9eaa7b69964050ebd8371977ee8a003fbf 100644 (file)
@@ -20,7 +20,7 @@ fn collect_dvec(num: uint) -> ~[uint] {
     return dvec::unwrap(move result);
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"50000000"]
     } else if args.len() <= 1u {
index c950585347cce636962dd636f744c21d19b2fcb0..89ca8eadde4fbc247a60554a582f2b81e8b647e4 100644 (file)
@@ -384,7 +384,7 @@ fn validate(edges: ~[(node_id, node_id)],
     true
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"15", ~"48"]
     } else if args.len() <= 1u {
index 2326c06f280bb5f9eef3acc785e4121574ccc132..89d339b7a763d24afbe4117f0d8e32445eeb3a29 100644 (file)
@@ -90,7 +90,7 @@ fn run(args: &[~str]) {
     assert result == num_bytes * size;
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"1000000", ~"10000"]
     } else if args.len() <= 1u {
index 6d47c2a7378af29e95461e2ded8e7750705d6fd2..babc97694a5631c6b639d50eb86a9d8dbd8e176e 100644 (file)
@@ -87,7 +87,7 @@ fn run(args: &[~str]) {
     assert result == num_bytes * size;
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"1000000", ~"8"]
     } else if args.len() <= 1u {
index 3bc88fdcae18bc0d87269fba91b7bd079c72c604..e3d8afce1bf08e6e8689ef2896ca07151e051e63 100644 (file)
@@ -56,7 +56,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100", ~"10000"]
     } else if args.len() <= 1u {
index 25532fb46a6d7c61c1fb639c3dced927b99a4b61..645aa65470006640d113a6d143bd88b9c8f0cc6a 100644 (file)
@@ -52,7 +52,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100", ~"10000"]
     } else if args.len() <= 1u {
index 0b44410184507722f2b88c3c2ffc3be20bae9300..b4b75adc3b5cdac7a9e3a0e2b4149176fafa8c0c 100644 (file)
@@ -56,7 +56,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100", ~"10000"]
     } else if args.len() <= 1u {
index 719ab1b00ba7693b745e08ff976632565b953841..47ce0d2b91f41eccfe2630e83f1f17117849ad0a 100644 (file)
@@ -21,7 +21,7 @@ fn thread_ring(i: uint,
     };
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100", ~"10000"]
     } else if args.len() <= 1u {
index 1b2c926508fda7ef8fb893994c1ebccb01bb22a4..2790f00d40d1fcef493a708e5a666c4db152a416 100644 (file)
@@ -57,7 +57,7 @@ fn run(args: ~[~str]) {
     io::stdout().write_str(fmt!("Throughput=%f per sec\n", thruput));
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"1000000", ~"10000"]
     } else if args.len() <= 1u {
index 3de75ee10abf7f0ce034cf762c0ff179e2e818b0..03985a22d112274cefc3b507634baeedf3dec75e 100644 (file)
@@ -12,7 +12,7 @@ fn ack(m: int, n: int) -> int {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"12"]
     } else if args.len() <= 1u {
index 976c140ba8b01e1297fb615bea7aadb3f8cac4b5..2003c16fe6f73d19d8036fb87cda4aa1992aea61 100644 (file)
@@ -25,7 +25,7 @@ fn bottom_up_tree(arena: &r/arena::Arena,
     return arena.alloc(|| nil);
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"17"]
     } else if args.len() <= 1u {
index d220135619bc431b728214f59b9dd1f745483178..bdfe4b7b727a88e2975c13fd45a8c518e7c806c5 100644 (file)
@@ -178,7 +178,7 @@ fn rendezvous(nn: uint, set: ~[color]) {
     io::println(show_number(creatures_met));
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"200000"]
     } else if args.len() <= 1u {
index 24a43ec0d9df213c996d3792735cc7dbf922fb69..19dced9aa183d215df326a02d12d1da582aae780 100644 (file)
@@ -5,7 +5,7 @@ fn fannkuch(n: int) -> int {
     fn perm1init(i: uint) -> int { return i as int; }
 
     let perm = vec::to_mut(vec::from_elem(n as uint, 0));
-    let perm1 = vec::to_mut(vec::from_fn(n as uint, perm1init));
+    let perm1 = vec::to_mut(vec::from_fn(n as uint, |i| perm1init(i)));
     let count = vec::to_mut(vec::from_elem(n as uint, 0));
     let mut f = 0;
     let mut i = 0;
@@ -56,7 +56,7 @@ fn fannkuch(n: int) -> int {
     return flips;
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"10"]
     } else if args.len() <= 1u {
index 5813aa87750c777369ba833182a80d9c33635fdd..a07b29f3dc6f88719951b4e6cac9b950c4a00963 100644 (file)
@@ -70,7 +70,7 @@ fn make_repeat_fasta(wr: io::Writer, id: ~str, desc: ~str, s: ~str, n: int) unsa
 
 fn acid(ch: char, prob: u32) -> aminoacids { return {ch: ch, prob: prob}; }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         // alioth tests k-nucleotide with this data at 25,000,000
         ~[~"", ~"5000000"]
index c007892fed4c7540be8523f0cc55de5ab8a03a45..9c39ed4aad1d317f58c211a14641a96f86606db5 100644 (file)
@@ -8,7 +8,7 @@ fn fib(n: int) -> int {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"40"]
     } else if args.len() <= 1u {
index 95f39df64dc82a1e60915d7b170177e59347f553..dbdcf15db8a75a3fdf7f73539f55aeb979f2c940 100644 (file)
@@ -128,7 +128,7 @@ fn make_sequence_processor(sz: uint, from_parent: pipes::Port<~[u8]>,
 }
 
 // given a FASTA file on stdin, process sequence THREE
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
    let rdr = if os::getenv(~"RUST_BENCH").is_some() {
        // FIXME: Using this compile-time env variable is a crummy way to
        // get to this massive data set, but #include_bin chokes on it (#2598)
index a222374c7764fe6d9993495ec17d5a5e65b027bd..d9d5827c56d410333fb9981f931ed5a33b8433bc 100644 (file)
@@ -125,7 +125,7 @@ fn make_sequence_processor(sz: uint, from_parent: comm::Port<~[u8]>,
 }
 
 // given a FASTA file on stdin, process sequence THREE
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
    let rdr = if os::getenv(~"RUST_BENCH").is_some() {
        // FIXME: Using this compile-time env variable is a crummy way to
        // get to this massive data set, but #include_bin chokes on it (#2598)
index 3ec4610babba85a51892528a47c782e9b51df3f4..f6386a207b11a45dbf37bf50768d88ba98b66248 100644 (file)
@@ -151,7 +151,7 @@ fn writer(path: ~str, writech: comm::Chan<comm::Chan<line>>, size: uint)
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"4000", ~"10"]
     } else {
index 129c1ad5a8ed586e5c434cdbb2455d7512a2f9a1..e2d3d2a429eb7382178abe98cd8a18fede817db2 100644 (file)
@@ -14,7 +14,7 @@
     fn sqrt(n: float) -> float;
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"4000000"]
     } else if args.len() <= 1u {
index 4796fdc5b112e5f8619c7b64b29beaeb595551f6..705679bd4030bb690da774fd3e3543478b9d5f77 100644 (file)
@@ -81,7 +81,7 @@ fn stress(num_tasks: int) {
     for results.each |r| { future::get(r); }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"20"]
     } else if args.len() <= 1u {
index b73063464698d040b17c7dd7a59f71c958fceb8b..1f00c419de800aeb0aadd3bde54182f82c536bcb 100644 (file)
@@ -40,7 +40,7 @@ fn eval_AtA_times_u(u: ~[const float], AtAu: ~[mut float]) {
     eval_At_times_u(v, AtAu);
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"2000"]
     } else if args.len() <= 1u {
index 5b823edbc6ffcf3324ccac605302ab5a7dc0d2d4..43229d1db13380ba1d10984f908fc7a46d141dea 100644 (file)
@@ -37,7 +37,7 @@ fn roundtrip(id: int, p: comm::Port<int>, ch: comm::Chan<int>) {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"2000000"]
     } else if args.len() <= 1u {
index 6a19531f927e95c1ebcdc5d84cb59d635980ceff..3fdbe028b70878449c34031f67244abf4ae195c8 100644 (file)
@@ -17,7 +17,7 @@ fn check_sequential(min: uint, max: uint, map: SmallIntMap<uint>) {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100000", ~"100"]
     } else if args.len() <= 1u {
index eae905079ffc15bf83b9b5d4dfac10e68f82521f..8f4e509e629489d60c6ffa3c38641a0826fa53b8 100644 (file)
@@ -126,7 +126,7 @@ fn write_grid(f: io::Writer, g: grid_t) {
      }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let grid = if vec::len(args) == 1u {
         // FIXME create sudoku inline since nested vec consts dont work yet
         // (#571)
index 6114400a45b85711eaa0a8f5ca7bd3e07b7b782e..53735cdbb16a3b61c4410a262d39d0daf23b8892 100644 (file)
@@ -23,7 +23,7 @@ fn child_generation(gens_left: uint, -c: pipes::Chan<()>) {
     }
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100000"]
     } else if args.len() <= 1u {
index c2ebfc785dfcd07b68ddb72d21e4494ea4f1518b..1ba92bfadee834a2f6e6f2d312b2ac0424ab9659 100644 (file)
@@ -37,7 +37,7 @@ fn spawn_supervised_blocking(myname: &str, +f: fn~()) {
     assert x == task::Success;
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100000"]
     } else if args.len() <= 1u {
index fb526ffd07fc82b0bcc90fa8c24be32ab3443a62..da8b1932f6539eac7c341d89561f9dd38d826d42 100644 (file)
@@ -48,7 +48,7 @@ fn calc(children: uint, parent_ch: comm::Chan<msg>) {
     comm::send(parent_ch, done(sum + 1));
 }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"100000"]
     } else if args.len() <= 1u {
index 32e701498b0412564e30b3a4be13c3596d54f1c9..48af1dcd5049cb066d5480fffd1368c98763f65b 100644 (file)
@@ -8,7 +8,7 @@ fn f(&&n: uint) {
 
 fn g() { }
 
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let args = if os::getenv(~"RUST_BENCH").is_some() {
         ~[~"", ~"400"]
     } else if args.len() <= 1u {
index 8bb315576934e5eadcad86c49d2bdf0fc7fb70a1..73c5dab16d865e05d3eca62b974b8ed32aa16059 100644 (file)
@@ -289,7 +289,7 @@ fn map_reduce<K1: Copy Send, K2: Hash IterBytes Eq Const Copy Send, V: Copy Send
     }
 }
 
-fn main(argv: ~[~str]) {
+fn main(++argv: ~[~str]) {
     if vec::len(argv) < 2u && !os::getenv(~"RUST_BENCH").is_some() {
         let out = io::stdout();
 
index 1a7c9616c3dbe3e9c67b9d786d4d3ac1905a215b..79364a1bb520f945cd7181441205987e337571c1 100644 (file)
@@ -1,3 +1,3 @@
-// error-pattern:expected `extern fn(~[str])
+// error-pattern:expected `extern fn(++v: ~[~str])
 
 fn main(x: int) { }
index 1f9532a713774584dbf0451d162796558b4f06ea..21e90f75d0debcddc8e61c885324ad8b0d1c855b 100644 (file)
@@ -18,6 +18,7 @@ fn foo(s: @int) {
     }
     log(debug, sys::refcount(s));
     assert (sys::refcount(s) == count + 1u);
+    let _ = sys::refcount(s); // don't get bitten by last-use.
 }
 
 fn main() {
index 0d067eb0e15e8b36db5e8416822ff54efef2d2a4..a697e0f73dcb470dfde028ceb80b195a56064e8d 100644 (file)
@@ -1,4 +1,4 @@
-fn main(args: ~[~str]) {
+fn main(++args: ~[~str]) {
     let vs: ~[~str] = ~[~"hi", ~"there", ~"this", ~"is", ~"a", ~"vec"];
     let vvs: ~[~[~str]] = ~[args, vs];
     for vvs.each |vs| { for vs.each |s| { log(debug, *s); } }
index 16e0951d238432959aae53f258292b780cb96d42..242392ccbe1726bf45dda3b0439835f96178588f 100644 (file)
@@ -1,3 +1,3 @@
 
 
-fn main(args: ~[~str]) { log(debug, args[0]); }
+fn main(++args: ~[~str]) { log(debug, args[0]); }
index a2678225658b61432074d73d61fffd3818903c70..3d34a6fd0b430bddb7862622f71836d688fd5ca7 100644 (file)
@@ -21,4 +21,4 @@ fn write(fd: int, buf: *u8,
 extern mod baz {
     #[legacy_exports]; }
 
-fn main(args: ~[~str]) { }
+fn main() { }
index 4a9f78a069b616a46df33596ead400d58c966725..09c63c9c71548d0681dcf4e082da420f5dfadb0c 100644 (file)
@@ -6,4 +6,4 @@ mod zed {
     fn bar() { debug!("bar"); }
 }
 
-fn main(args: ~[~str]) { let zed = 42; bar(); }
+fn main() { let zed = 42; bar(); }
index 5a00df6833d3d38e67d04f09dfb4e154fcc658b8..ba711639091227bc665fc231c9a1a5f61ba5ad84 100644 (file)
@@ -9,4 +9,4 @@ mod zed {
     }
 }
 
-fn main(args: ~[~str]) { bar(); }
+fn main() { bar(); }
index e1a0235b0306c7cb9898cdbef5c9718d641c5e03..f4c8a888764be6284f656a38a8b5b66650a28a2c 100644 (file)
@@ -17,4 +17,4 @@ mod zed {
             #[legacy_exports]; }
     }
 }
-fn main(args: ~[~str]) { baz(); }
+fn main() { baz(); }
index 2774e2379145aa34740c99c6385db1d66a47dac7..b61169ee5f6d6fc40f763098152c7475a5bb4dbd 100644 (file)
@@ -14,7 +14,7 @@ fn rendezvous() {
     error!("%?", streams[0]);
 }
 
-fn main(args: ~[~str]) {
+fn main() {
     //os::getenv("FOO");
     rendezvous();
-}
\ No newline at end of file
+}
index 0c2251a24199bae0018f3f786ce9f8e4804a903a..39bbd07c66b12ce0aa4de9fbf59494af3cd6b849 100644 (file)
@@ -1 +1 @@
-fn main(args: ~[~str]) { for args.each |s| { log(debug, *s); } }
+fn main(++args: ~[~str]) { for args.each |s| { log(debug, *s); } }
diff --git a/src/test/run-pass/non-legacy-modes.rs b/src/test/run-pass/non-legacy-modes.rs
new file mode 100644 (file)
index 0000000..8fb843d
--- /dev/null
@@ -0,0 +1,20 @@
+struct X {
+    repr: int
+}
+
+fn apply<T>(x: T, f: fn(T)) {
+    f(x);
+}
+
+fn check_int(x: int) {
+    assert x == 22;
+}
+
+fn check_struct(x: X) {
+    check_int(x.repr);
+}
+
+fn main() {
+    apply(22, check_int);
+    apply(X {repr: 22}, check_struct);
+}
index 0dbe60aca2e6fbfbfcae8afabf4f2e5e414603c9..3d9786b44b065fc133ab1614d908b1a0c6e3d700 100644 (file)
@@ -1,8 +1,8 @@
-fn main(args: ~[~str]) {
+fn main() {
     let thing = ~"{{ f }}";
     let f = str::find_str(thing, ~"{{");
 
     if f.is_none() {
         io::println(~"None!");
     }
-}
\ No newline at end of file
+}
index 47440d2fa5b9c07d277b8f638eebf024ef245849..ef97c2c09f0af7894015998969a191976b37a97a 100644 (file)
@@ -5,4 +5,4 @@ mod foo {
     fn bar(offset: uint) { }
 }
 
-fn main(args: ~[~str]) { foo::bar(0u); }
+fn main() { foo::bar(0u); }
index 9cc81c52ef41c2d86e6a754370d484e9cc8c62b8..ff464594ba21eb72d00cb3e8fb735337bd5cb3e1 100644 (file)
@@ -1,4 +1,4 @@
-fn swap<T>(v: ~[mut T], i: int, j: int) { v[i] <-> v[j]; }
+fn swap<T>(v: &[mut T], i: int, j: int) { v[i] <-> v[j]; }
 
 fn main() {
     let a: ~[mut int] = ~[mut 0, 1, 2, 3, 4, 5, 6];
index f529a8d96ae95e0d49c31016b1bf49ad09f933ee..69c7c5e7a04692da8d72e82f770eb950749bde05 100644 (file)
@@ -6,4 +6,4 @@ enum bar { nil, }
     fn baz() { zed(nil); }
 }
 
-fn main(args: ~[~str]) { }
+fn main() { }
index 525891fc1c3e5d1637eb6e9ce041e2250dd9f7bc..5bf81efd15948bf1d5573037abc98798999ebb40 100644 (file)
@@ -2,4 +2,4 @@
 
 type lteq<T> = extern fn(T) -> bool;
 
-fn main(args: ~[~str]) { }
+fn main() { }
index d980ad34b9b7129fbd7e5abaabc348d126e59141..74ad4951a66d291b18bbd2ac5fcf0d64ebaac1c3 100644 (file)
@@ -2,4 +2,4 @@
 
 fn g(a: *int) -> *int { let b = f(a); return b; }
 
-fn main(args: ~[~str]) { return; }
+fn main() { return; }