From e653d493fb8df74bd0583c4f32c882a590135ef1 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 18 Sep 2012 15:52:21 -0700 Subject: [PATCH] rustc: Remove legacy mode inference, unless #[legacy_modes] is used --- src/fuzzer/fuzzer.rc | 2 ++ src/libcore/core.rc | 2 ++ src/libstd/std.rc | 2 ++ src/libsyntax/syntax.rc | 2 ++ src/rustc/driver/driver.rs | 2 +- src/rustc/driver/rustc.rs | 1 + src/rustc/middle/lint.rs | 9 ++++++- src/rustc/middle/ty.rs | 27 ++++++++++++++++--- src/rustc/middle/typeck/astconv.rs | 3 ++- src/rustc/middle/typeck/check/writeback.rs | 2 +- src/rustc/rustc.rc | 2 ++ src/rustc/util/ppaux.rs | 2 +- src/rustdoc/rustdoc.rc | 2 ++ src/test/auxiliary/cci_iter_lib.rs | 1 + src/test/auxiliary/cci_nested_lib.rs | 4 ++- src/test/bench/graph500-bfs.rs | 2 ++ src/test/bench/msgsend-pipes-shared.rs | 2 ++ src/test/bench/msgsend-pipes.rs | 2 ++ src/test/bench/shootout-k-nucleotide-pipes.rs | 2 ++ src/test/bench/shootout-mandelbrot.rs | 2 ++ src/test/bench/shootout-pfib.rs | 2 ++ .../bench/task-perf-word-count-generic.rs | 2 ++ .../borrowck-unchecked-with-borrow.rs | 4 +++ src/test/compile-fail/fn-variance-1.rs | 2 ++ src/test/compile-fail/issue-2587-2.rs | 2 ++ src/test/compile-fail/mode-inference-fail.rs | 2 ++ src/test/compile-fail/pure-higher-order.rs | 4 ++- .../compile-fail/regions-creating-enums.rs | 4 ++- src/test/run-pass-fulldeps/qquote.rs | 2 ++ src/test/run-pass/argument-passing.rs | 2 ++ src/test/run-pass/assignability-trait.rs | 2 ++ src/test/run-pass/auto_serialize.rs | 2 ++ src/test/run-pass/block-iter-1.rs | 2 ++ src/test/run-pass/block-iter-2.rs | 2 ++ src/test/run-pass/cci_iter_exe.rs | 2 ++ src/test/run-pass/cci_nested_exe.rs | 2 ++ .../class-impl-very-parameterized-trait.rs | 2 ++ src/test/run-pass/class-implement-traits.rs | 4 ++- src/test/run-pass/closure-inference.rs | 2 ++ src/test/run-pass/expr-alt-generic-box2.rs | 6 ++--- src/test/run-pass/expr-alt-generic-unique2.rs | 6 ++--- src/test/run-pass/expr-alt-generic.rs | 5 ++-- src/test/run-pass/expr-block-generic-box2.rs | 5 ++-- .../run-pass/expr-block-generic-unique2.rs | 5 ++-- src/test/run-pass/expr-block-generic.rs | 5 ++-- src/test/run-pass/expr-copy.rs | 2 ++ src/test/run-pass/expr-if-generic-box2.rs | 5 ++-- src/test/run-pass/expr-if-generic.rs | 4 +-- src/test/run-pass/fixed-point-bind-box.rs | 2 ++ src/test/run-pass/fixed-point-bind-unique.rs | 2 ++ src/test/run-pass/fn-bare-spawn.rs | 3 ++- src/test/run-pass/generic-temporary.rs | 2 +- src/test/run-pass/intrinsic-frame-address.rs | 1 + src/test/run-pass/issue-2185.rs | 2 ++ src/test/run-pass/issue-2611.rs | 4 ++- src/test/run-pass/last-use-corner-cases.rs | 2 ++ src/test/run-pass/monad.rs | 2 ++ src/test/run-pass/operator-overloading.rs | 2 ++ src/test/run-pass/reflect-visit-data.rs | 1 + src/test/run-pass/regions-params.rs | 4 ++- src/test/run-pass/resource-generic.rs | 2 ++ src/test/run-pass/ret-break-cont-in-block.rs | 2 ++ src/test/run-pass/sendfn-generic-fn.rs | 2 ++ src/test/run-pass/sendfn-is-a-block.rs | 4 ++- src/test/run-pass/static-impl.rs | 2 ++ src/test/run-pass/static-method-test.rs | 1 + src/test/run-pass/task-comm-0.rs | 2 ++ src/test/run-pass/task-comm-10.rs | 2 ++ src/test/run-pass/task-comm-11.rs | 2 ++ src/test/run-pass/task-comm-13.rs | 2 ++ src/test/run-pass/task-comm-14.rs | 1 + src/test/run-pass/task-comm-15.rs | 2 ++ src/test/run-pass/task-comm-3.rs | 2 ++ src/test/run-pass/task-comm-7.rs | 2 ++ src/test/run-pass/task-comm-9.rs | 2 ++ src/test/run-pass/trait-generic.rs | 2 ++ src/test/run-pass/type-param-constraints.rs | 2 ++ 77 files changed, 181 insertions(+), 42 deletions(-) diff --git a/src/fuzzer/fuzzer.rc b/src/fuzzer/fuzzer.rc index da1003b026b..82c18f6976f 100644 --- a/src/fuzzer/fuzzer.rc +++ b/src/fuzzer/fuzzer.rc @@ -4,6 +4,8 @@ #[no_core]; +#[legacy_modes]; + #[allow(vecs_implicitly_copyable)]; #[allow(non_camel_case_types)]; diff --git a/src/libcore/core.rc b/src/libcore/core.rc index 48c61e82cb0..971f8b57170 100644 --- a/src/libcore/core.rc +++ b/src/libcore/core.rc @@ -31,6 +31,8 @@ // Don't link to core. We are core. #[no_core]; +#[legacy_modes]; + #[warn(vecs_implicitly_copyable)]; #[deny(non_camel_case_types)]; diff --git a/src/libstd/std.rc b/src/libstd/std.rc index c43faa1fd6c..9b4d937a533 100644 --- a/src/libstd/std.rc +++ b/src/libstd/std.rc @@ -10,6 +10,8 @@ #[no_core]; +#[legacy_modes]; + #[allow(vecs_implicitly_copyable)]; #[deny(non_camel_case_types)]; diff --git a/src/libsyntax/syntax.rc b/src/libsyntax/syntax.rc index 63c3fa89b75..6ce8ef11d91 100644 --- a/src/libsyntax/syntax.rc +++ b/src/libsyntax/syntax.rc @@ -8,6 +8,8 @@ #[no_core]; +#[legacy_modes]; + #[allow(vecs_implicitly_copyable)]; #[allow(non_camel_case_types)]; diff --git a/src/rustc/driver/driver.rs b/src/rustc/driver/driver.rs index 44d62e8d926..abaee09790e 100644 --- a/src/rustc/driver/driver.rs +++ b/src/rustc/driver/driver.rs @@ -206,7 +206,7 @@ fn compile_upto(sess: session, cfg: ast::crate_cfg, middle::region::determine_rp_in_crate(sess, ast_map, def_map, crate)); let ty_cx = ty::mk_ctxt(sess, def_map, ast_map, freevars, - region_map, rp_set, move lang_items); + region_map, rp_set, move lang_items, crate); let (method_map, vtable_map) = time(time_passes, ~"typechecking", || typeck::check_crate(ty_cx, diff --git a/src/rustc/driver/rustc.rs b/src/rustc/driver/rustc.rs index 79df5b596cd..56eb6fe762c 100644 --- a/src/rustc/driver/rustc.rs +++ b/src/rustc/driver/rustc.rs @@ -1,6 +1,7 @@ #[no_core]; #[allow(vecs_implicitly_copyable)]; #[allow(non_camel_case_types)]; +#[legacy_modes]; extern mod core(vers = "0.4"); extern mod std(vers = "0.4"); diff --git a/src/rustc/middle/lint.rs b/src/rustc/middle/lint.rs index 889bd085e33..8e22315ef6b 100644 --- a/src/rustc/middle/lint.rs +++ b/src/rustc/middle/lint.rs @@ -13,7 +13,7 @@ use syntax::ast_util::{path_to_ident}; use syntax::print::pprust::{expr_to_str, mode_to_str, pat_to_str}; export lint, ctypes, unused_imports, while_true, path_statement, old_vecs; export unrecognized_lint, non_implicitly_copyable_typarams; -export vecs_implicitly_copyable, implicit_copies; +export vecs_implicitly_copyable, implicit_copies, legacy_modes; export level, allow, warn, deny, forbid; export lint_dict, get_lint_dict, level_to_str; export get_lint_level, get_lint_settings_level; @@ -59,6 +59,8 @@ enum lint { owned_heap_memory, heap_memory, + legacy_modes, + // FIXME(#3266)--make liveness warnings lintable // unused_variable, // dead_assignment @@ -179,6 +181,11 @@ fn get_lint_dict() -> lint_dict { desc: ~"use of any structural records", default: allow}), + (~"legacy modes", + @{lint: legacy_modes, + desc: ~"allow legacy modes", + default: forbid}), + /* FIXME(#3266)--make liveness warnings lintable (~"unused_variable", @{lint: unused_variable, diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs index a31d5568fa1..b3450b922bb 100644 --- a/src/rustc/middle/ty.rs +++ b/src/rustc/middle/ty.rs @@ -319,6 +319,7 @@ type ctxt = interner: HashMap, mut next_id: uint, vecs_implicitly_copyable: bool, + legacy_modes: bool, cstore: metadata::cstore::cstore, sess: session::session, def_map: resolve::DefMap, @@ -827,7 +828,19 @@ fn mk_ctxt(s: session::session, freevars: freevars::freevar_map, region_map: middle::region::region_map, region_paramd_items: middle::region::region_paramd_items, - +lang_items: middle::lang_items::LanguageItems) -> ctxt { + +lang_items: middle::lang_items::LanguageItems, + crate: @ast::crate) -> ctxt { + let mut legacy_modes = false; + for crate.node.attrs.each |attribute| { + match attribute.node.value.node { + ast::meta_word(w) if w == ~"legacy_modes" => { + legacy_modes = true; + break; + } + _ => {} + } + } + let interner = map::HashMap(); let vecs_implicitly_copyable = get_lint_level(s.lint_settings.default_settings, @@ -836,6 +849,7 @@ fn mk_ctxt(s: session::session, interner: interner, mut next_id: 0u, vecs_implicitly_copyable: vecs_implicitly_copyable, + legacy_modes: legacy_modes, cstore: s.cstore, sess: s, def_map: dm, @@ -1075,9 +1089,14 @@ pure fn mach_sty(cfg: @session::config, t: t) -> sty { } } -fn default_arg_mode_for_ty(ty: ty::t) -> ast::rmode { - if ty::type_is_immediate(ty) { ast::by_val } - else { ast::by_ref } +fn default_arg_mode_for_ty(tcx: ctxt, ty: ty::t) -> ast::rmode { + if ty::type_is_immediate(ty) { + ast::by_val + } else if tcx.legacy_modes { + ast::by_ref + } else { + ast::by_copy + } } // Returns the narrowest lifetime enclosing the evaluation of the expression diff --git a/src/rustc/middle/typeck/astconv.rs b/src/rustc/middle/typeck/astconv.rs index 620f3cad570..b38a4b22675 100644 --- a/src/rustc/middle/typeck/astconv.rs +++ b/src/rustc/middle/typeck/astconv.rs @@ -432,7 +432,8 @@ fn ty_of_arg( // tables in tcx but should never fail, because nothing else // will have been unified with m yet: _ => { - let m1 = ast::expl(ty::default_arg_mode_for_ty(ty)); + let m1 = ast::expl(ty::default_arg_mode_for_ty(self.tcx(), + ty)); result::get(ty::unify_mode( self.tcx(), ty::expected_found {expected: m1, diff --git a/src/rustc/middle/typeck/check/writeback.rs b/src/rustc/middle/typeck/check/writeback.rs index d57b012503b..d12095babb8 100644 --- a/src/rustc/middle/typeck/check/writeback.rs +++ b/src/rustc/middle/typeck/check/writeback.rs @@ -145,7 +145,7 @@ fn visit_expr(e: @ast::expr, wbcx: wb_ctxt, v: wb_vt) { match (r_ty, input.mode) { (Some(t), ast::infer(_)) => { let tcx = wbcx.fcx.ccx.tcx; - let m_def = ty::default_arg_mode_for_ty(t); + let m_def = ty::default_arg_mode_for_ty(tcx, t); ty::set_default_mode(tcx, input.mode, m_def); } _ => () diff --git a/src/rustc/rustc.rc b/src/rustc/rustc.rc index 501192d3ced..67f36e3f249 100644 --- a/src/rustc/rustc.rc +++ b/src/rustc/rustc.rc @@ -11,6 +11,8 @@ #[no_core]; +#[legacy_modes]; + #[allow(vecs_implicitly_copyable)]; #[allow(non_camel_case_types)]; // #[warn(deprecated_pattern)]; diff --git a/src/rustc/util/ppaux.rs b/src/rustc/util/ppaux.rs index 6dc6440350a..e67aba71eae 100644 --- a/src/rustc/util/ppaux.rs +++ b/src/rustc/util/ppaux.rs @@ -258,7 +258,7 @@ fn ty_to_str(cx: ctxt, typ: t) -> ~str { ast::infer(_) => ~"", ast::expl(m) => { if !ty::type_needs_infer(ty) && - m == ty::default_arg_mode_for_ty(ty) { + m == ty::default_arg_mode_for_ty(cx, ty) { ~"" } else { mode_to_str(ast::expl(m)) diff --git a/src/rustdoc/rustdoc.rc b/src/rustdoc/rustdoc.rc index b50defeb99d..b68efef69a5 100644 --- a/src/rustdoc/rustdoc.rc +++ b/src/rustdoc/rustdoc.rc @@ -11,6 +11,8 @@ #[no_core]; +#[legacy_modes]; + #[allow(vecs_implicitly_copyable, non_implicitly_copyable_typarams)]; #[allow(non_camel_case_types)]; diff --git a/src/test/auxiliary/cci_iter_lib.rs b/src/test/auxiliary/cci_iter_lib.rs index ca7140f4504..8d1c3e99a13 100644 --- a/src/test/auxiliary/cci_iter_lib.rs +++ b/src/test/auxiliary/cci_iter_lib.rs @@ -1,4 +1,5 @@ #[link(name="cci_iter_lib", vers="0.0")]; +#[legacy_modes]; #[inline] fn iter(v: ~[T], f: fn(T)) { diff --git a/src/test/auxiliary/cci_nested_lib.rs b/src/test/auxiliary/cci_nested_lib.rs index 6ead738753e..ed924f01d33 100644 --- a/src/test/auxiliary/cci_nested_lib.rs +++ b/src/test/auxiliary/cci_nested_lib.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + use dvec::DVec; type entry = {key: A, value: B}; @@ -26,4 +28,4 @@ fn new_int_alist_2() -> alist { #[inline] fn eq_int(&&a: int, &&b: int) -> bool { a == b } return {eq_fn: eq_int, data: DVec()}; -} \ No newline at end of file +} diff --git a/src/test/bench/graph500-bfs.rs b/src/test/bench/graph500-bfs.rs index ddd900aa382..3729f1d31f7 100644 --- a/src/test/bench/graph500-bfs.rs +++ b/src/test/bench/graph500-bfs.rs @@ -4,6 +4,8 @@ An implementation of the Graph500 Breadth First Search problem in Rust. */ +#[legacy_modes]; + extern mod std; use std::arc; use std::time; diff --git a/src/test/bench/msgsend-pipes-shared.rs b/src/test/bench/msgsend-pipes-shared.rs index a8c51b2502b..5d459f97a25 100644 --- a/src/test/bench/msgsend-pipes-shared.rs +++ b/src/test/bench/msgsend-pipes-shared.rs @@ -10,6 +10,8 @@ // xfail-pretty +#[legacy_modes]; + extern mod std; use io::Writer; use io::WriterUtil; diff --git a/src/test/bench/msgsend-pipes.rs b/src/test/bench/msgsend-pipes.rs index 52a30861b62..f6da3296a03 100644 --- a/src/test/bench/msgsend-pipes.rs +++ b/src/test/bench/msgsend-pipes.rs @@ -6,6 +6,8 @@ // xfail-pretty +#[legacy_modes]; + extern mod std; use io::Writer; use io::WriterUtil; diff --git a/src/test/bench/shootout-k-nucleotide-pipes.rs b/src/test/bench/shootout-k-nucleotide-pipes.rs index da4a226d9c0..4915a19f878 100644 --- a/src/test/bench/shootout-k-nucleotide-pipes.rs +++ b/src/test/bench/shootout-k-nucleotide-pipes.rs @@ -2,6 +2,8 @@ // multi tasking k-nucleotide +#[legacy_modes]; + extern mod std; use std::map; use std::map::HashMap; diff --git a/src/test/bench/shootout-mandelbrot.rs b/src/test/bench/shootout-mandelbrot.rs index 167bbe7dc7d..44ba7eaf0c9 100644 --- a/src/test/bench/shootout-mandelbrot.rs +++ b/src/test/bench/shootout-mandelbrot.rs @@ -12,6 +12,8 @@ // // writes pbm image to output path +#[legacy_modes]; + extern mod std; use io::WriterUtil; use std::map::HashMap; diff --git a/src/test/bench/shootout-pfib.rs b/src/test/bench/shootout-pfib.rs index e929690ccfa..57f64760745 100644 --- a/src/test/bench/shootout-pfib.rs +++ b/src/test/bench/shootout-pfib.rs @@ -10,6 +10,8 @@ */ +#[legacy_modes]; + extern mod std; use std::{time, getopts}; diff --git a/src/test/bench/task-perf-word-count-generic.rs b/src/test/bench/task-perf-word-count-generic.rs index 37407881674..4aeaf26fb1a 100644 --- a/src/test/bench/task-perf-word-count-generic.rs +++ b/src/test/bench/task-perf-word-count-generic.rs @@ -10,6 +10,8 @@ // xfail-pretty +#[legacy_modes]; + extern mod std; use option = option; diff --git a/src/test/compile-fail/borrowck-unchecked-with-borrow.rs b/src/test/compile-fail/borrowck-unchecked-with-borrow.rs index 22a1c15986c..0c5bcdd6ac1 100644 --- a/src/test/compile-fail/borrowck-unchecked-with-borrow.rs +++ b/src/test/compile-fail/borrowck-unchecked-with-borrow.rs @@ -1,3 +1,7 @@ +// xfail-test +// xfail-fast +#[legacy_modes]; + fn impure(_i: int) {} // check that unchecked alone does not override borrowck: diff --git a/src/test/compile-fail/fn-variance-1.rs b/src/test/compile-fail/fn-variance-1.rs index 01abd73bb47..2e7ea89bfc3 100644 --- a/src/test/compile-fail/fn-variance-1.rs +++ b/src/test/compile-fail/fn-variance-1.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn takes_mut(&&x: @mut int) { } fn takes_const(&&x: @const int) { } fn takes_imm(&&x: @int) { } diff --git a/src/test/compile-fail/issue-2587-2.rs b/src/test/compile-fail/issue-2587-2.rs index 36cf99b321c..a8381f223af 100644 --- a/src/test/compile-fail/issue-2587-2.rs +++ b/src/test/compile-fail/issue-2587-2.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn foo(+_t: T) { fail; } fn bar(+_t: T) { fail; } diff --git a/src/test/compile-fail/mode-inference-fail.rs b/src/test/compile-fail/mode-inference-fail.rs index 9f9eabab44a..d87c04f6cb4 100644 --- a/src/test/compile-fail/mode-inference-fail.rs +++ b/src/test/compile-fail/mode-inference-fail.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + // In this test, the mode gets inferred to ++ due to the apply_int(), // but then we get a failure in the generic apply(). diff --git a/src/test/compile-fail/pure-higher-order.rs b/src/test/compile-fail/pure-higher-order.rs index 9737b195cfa..b08004b182d 100644 --- a/src/test/compile-fail/pure-higher-order.rs +++ b/src/test/compile-fail/pure-higher-order.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + // Test rules governing higher-order pure fns. pure fn range(from: uint, to: uint, f: fn(uint)) { @@ -45,4 +47,4 @@ fn print(i: uint) { error!("i=%u", i); } pure fn noop(_i: uint) {} fn main() { -} \ No newline at end of file +} diff --git a/src/test/compile-fail/regions-creating-enums.rs b/src/test/compile-fail/regions-creating-enums.rs index 6cacf49300d..e226b9b6589 100644 --- a/src/test/compile-fail/regions-creating-enums.rs +++ b/src/test/compile-fail/regions-creating-enums.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + enum ast { num(uint), add(&ast, &ast) @@ -30,4 +32,4 @@ fn map_nums(x: &ast, f: fn(uint) -> uint) -> &ast { } } -fn main() {} \ No newline at end of file +fn main() {} diff --git a/src/test/run-pass-fulldeps/qquote.rs b/src/test/run-pass-fulldeps/qquote.rs index 66299089df9..a5a061bc25c 100644 --- a/src/test/run-pass-fulldeps/qquote.rs +++ b/src/test/run-pass-fulldeps/qquote.rs @@ -1,5 +1,7 @@ // xfail-pretty +#[legacy_modes]; + extern mod std; extern mod syntax; diff --git a/src/test/run-pass/argument-passing.rs b/src/test/run-pass/argument-passing.rs index 1d1ae9c785f..baad882d2f4 100644 --- a/src/test/run-pass/argument-passing.rs +++ b/src/test/run-pass/argument-passing.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn f1(a: {mut x: int}, &b: int, -c: int) -> int { let r = a.x + b + c; a.x = 0; diff --git a/src/test/run-pass/assignability-trait.rs b/src/test/run-pass/assignability-trait.rs index 3f53525a5ba..37c7f36445c 100644 --- a/src/test/run-pass/assignability-trait.rs +++ b/src/test/run-pass/assignability-trait.rs @@ -2,6 +2,8 @@ // making method calls, but only if there aren't any matches without // it. +#[legacy_modes]; + trait iterable { fn iterate(blk: fn(A) -> bool); } diff --git a/src/test/run-pass/auto_serialize.rs b/src/test/run-pass/auto_serialize.rs index 034d906741f..aada71e13cc 100644 --- a/src/test/run-pass/auto_serialize.rs +++ b/src/test/run-pass/auto_serialize.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; // These tests used to be separate files, but I wanted to refactor all diff --git a/src/test/run-pass/block-iter-1.rs b/src/test/run-pass/block-iter-1.rs index e9d548dd6ef..dcf43c0e86a 100644 --- a/src/test/run-pass/block-iter-1.rs +++ b/src/test/run-pass/block-iter-1.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn iter_vec(v: ~[T], f: fn(T)) { for v.each |x| { f(x); } } fn main() { diff --git a/src/test/run-pass/block-iter-2.rs b/src/test/run-pass/block-iter-2.rs index 125e003a3f5..2c8d693e0f2 100644 --- a/src/test/run-pass/block-iter-2.rs +++ b/src/test/run-pass/block-iter-2.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn iter_vec(v: ~[T], f: fn(T)) { for v.each |x| { f(x); } } fn main() { diff --git a/src/test/run-pass/cci_iter_exe.rs b/src/test/run-pass/cci_iter_exe.rs index 973732b18c2..8bd4b03db2a 100644 --- a/src/test/run-pass/cci_iter_exe.rs +++ b/src/test/run-pass/cci_iter_exe.rs @@ -1,6 +1,8 @@ // xfail-fast - check-fast doesn't understand aux-build // aux-build:cci_iter_lib.rs +#[legacy_modes]; + extern mod cci_iter_lib; fn main() { diff --git a/src/test/run-pass/cci_nested_exe.rs b/src/test/run-pass/cci_nested_exe.rs index a5d62b95712..11f0d3a5c94 100644 --- a/src/test/run-pass/cci_nested_exe.rs +++ b/src/test/run-pass/cci_nested_exe.rs @@ -1,6 +1,8 @@ // xfail-fast - check-fast doesn't understand aux-build // aux-build:cci_nested_lib.rs +#[legacy_modes]; + extern mod cci_nested_lib; use cci_nested_lib::*; diff --git a/src/test/run-pass/class-impl-very-parameterized-trait.rs b/src/test/run-pass/class-impl-very-parameterized-trait.rs index b304eb677a3..97ed4487e70 100644 --- a/src/test/run-pass/class-impl-very-parameterized-trait.rs +++ b/src/test/run-pass/class-impl-very-parameterized-trait.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; use std::map::*; diff --git a/src/test/run-pass/class-implement-traits.rs b/src/test/run-pass/class-implement-traits.rs index aa8e52e3351..c39ab16d744 100644 --- a/src/test/run-pass/class-implement-traits.rs +++ b/src/test/run-pass/class-implement-traits.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + trait noisy { fn speak(); } @@ -56,4 +58,4 @@ fn main() { assert(!nyan.eat()); for uint::range(1u, 10u) |_i| { make_speak(nyan); }; assert(nyan.eat()); -} \ No newline at end of file +} diff --git a/src/test/run-pass/closure-inference.rs b/src/test/run-pass/closure-inference.rs index 72d08a5fd20..d02f420b6c0 100644 --- a/src/test/run-pass/closure-inference.rs +++ b/src/test/run-pass/closure-inference.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn foo(i: int) -> int { i + 1 } fn apply(f: fn(A) -> A, v: A) -> A { f(v) } diff --git a/src/test/run-pass/expr-alt-generic-box2.rs b/src/test/run-pass/expr-alt-generic-box2.rs index ef0b2c2078d..97806131b7b 100644 --- a/src/test/run-pass/expr-alt-generic-box2.rs +++ b/src/test/run-pass/expr-alt-generic-box2.rs @@ -1,7 +1,7 @@ - - - // -*- rust -*- + +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-alt-generic-unique2.rs b/src/test/run-pass/expr-alt-generic-unique2.rs index e5c8d2acd87..122b999c068 100644 --- a/src/test/run-pass/expr-alt-generic-unique2.rs +++ b/src/test/run-pass/expr-alt-generic-unique2.rs @@ -1,7 +1,7 @@ - - - // -*- rust -*- + +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-alt-generic.rs b/src/test/run-pass/expr-alt-generic.rs index d17d7db9038..931c65827f8 100644 --- a/src/test/run-pass/expr-alt-generic.rs +++ b/src/test/run-pass/expr-alt-generic.rs @@ -1,7 +1,6 @@ - - - // -*- rust -*- +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-block-generic-box2.rs b/src/test/run-pass/expr-block-generic-box2.rs index 8fc566d5843..83a87892cbd 100644 --- a/src/test/run-pass/expr-block-generic-box2.rs +++ b/src/test/run-pass/expr-block-generic-box2.rs @@ -1,7 +1,6 @@ - - - // -*- rust -*- +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-block-generic-unique2.rs b/src/test/run-pass/expr-block-generic-unique2.rs index cda0148cfe8..40cba1bb294 100644 --- a/src/test/run-pass/expr-block-generic-unique2.rs +++ b/src/test/run-pass/expr-block-generic-unique2.rs @@ -1,7 +1,6 @@ - - - // -*- rust -*- +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-block-generic.rs b/src/test/run-pass/expr-block-generic.rs index adb49f3142d..8618bba4bed 100644 --- a/src/test/run-pass/expr-block-generic.rs +++ b/src/test/run-pass/expr-block-generic.rs @@ -1,8 +1,7 @@ - - - // -*- rust -*- +#[legacy_modes]; + // Tests for standalone blocks as expressions with dynamic type sizes type compare = fn@(T, T) -> bool; diff --git a/src/test/run-pass/expr-copy.rs b/src/test/run-pass/expr-copy.rs index 279e916b75a..6aebd902194 100644 --- a/src/test/run-pass/expr-copy.rs +++ b/src/test/run-pass/expr-copy.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn f(arg: {mut a: int}) { arg.a = 100; } diff --git a/src/test/run-pass/expr-if-generic-box2.rs b/src/test/run-pass/expr-if-generic-box2.rs index e5370db83d1..9550b22fb2f 100644 --- a/src/test/run-pass/expr-if-generic-box2.rs +++ b/src/test/run-pass/expr-if-generic-box2.rs @@ -1,7 +1,6 @@ - - - // -*- rust -*- +#[legacy_modes]; + type compare = fn@(T, T) -> bool; fn test_generic(expected: T, not_expected: T, eq: compare) { diff --git a/src/test/run-pass/expr-if-generic.rs b/src/test/run-pass/expr-if-generic.rs index 5d7730809d5..8ad7d480aad 100644 --- a/src/test/run-pass/expr-if-generic.rs +++ b/src/test/run-pass/expr-if-generic.rs @@ -1,7 +1,5 @@ - - - // -*- rust -*- +#[legacy_modes]; // Tests for if as expressions with dynamic type sizes type compare = fn@(T, T) -> bool; diff --git a/src/test/run-pass/fixed-point-bind-box.rs b/src/test/run-pass/fixed-point-bind-box.rs index 7bf1b813e93..3ea976df27c 100644 --- a/src/test/run-pass/fixed-point-bind-box.rs +++ b/src/test/run-pass/fixed-point-bind-box.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn fix_help(f: extern fn(fn@(A) -> B, A) -> B, x: A) -> B { return f({|a|fix_help(f, a)}, x); } diff --git a/src/test/run-pass/fixed-point-bind-unique.rs b/src/test/run-pass/fixed-point-bind-unique.rs index 2c7ef7fb125..b70a6c4039f 100644 --- a/src/test/run-pass/fixed-point-bind-unique.rs +++ b/src/test/run-pass/fixed-point-bind-unique.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn fix_help(f: extern fn(fn@(A) -> B, A) -> B, x: A) -> B { return f({|a|fix_help(f, a)}, x); } diff --git a/src/test/run-pass/fn-bare-spawn.rs b/src/test/run-pass/fn-bare-spawn.rs index cc57ba6a9af..ae0a754fc6d 100644 --- a/src/test/run-pass/fn-bare-spawn.rs +++ b/src/test/run-pass/fn-bare-spawn.rs @@ -1,4 +1,5 @@ // This is what the signature to spawn should look like with bare functions +#[legacy_modes]; fn spawn(val: T, f: extern fn(T)) { f(val); @@ -10,4 +11,4 @@ fn f(&&i: int) { fn main() { spawn(100, f); -} \ No newline at end of file +} diff --git a/src/test/run-pass/generic-temporary.rs b/src/test/run-pass/generic-temporary.rs index f0a16e79fb0..37dc1e9fb57 100644 --- a/src/test/run-pass/generic-temporary.rs +++ b/src/test/run-pass/generic-temporary.rs @@ -1,4 +1,4 @@ - +#[legacy_modes]; fn mk() -> int { return 1; } diff --git a/src/test/run-pass/intrinsic-frame-address.rs b/src/test/run-pass/intrinsic-frame-address.rs index 31ea745d162..7ed6dd2946b 100644 --- a/src/test/run-pass/intrinsic-frame-address.rs +++ b/src/test/run-pass/intrinsic-frame-address.rs @@ -1,3 +1,4 @@ +#[legacy_modes]; #[abi = "rust-intrinsic"] extern mod rusti { fn frame_address(f: fn(*u8)); diff --git a/src/test/run-pass/issue-2185.rs b/src/test/run-pass/issue-2185.rs index 7bd5dab7d95..5491f7dfd7e 100644 --- a/src/test/run-pass/issue-2185.rs +++ b/src/test/run-pass/issue-2185.rs @@ -2,6 +2,8 @@ // However, the condition it was testing seemed complex enough to // warrant still having a test, so I inlined the old definitions. +#[legacy_modes]; + trait iterable { fn iter(blk: fn(A)); } diff --git a/src/test/run-pass/issue-2611.rs b/src/test/run-pass/issue-2611.rs index 0d5c244abcb..5f2248a3870 100644 --- a/src/test/run-pass/issue-2611.rs +++ b/src/test/run-pass/issue-2611.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + use iter::BaseIter; trait FlatMapToVec { @@ -10,4 +12,4 @@ impl BaseIter: FlatMapToVec { } } -fn main() {} \ No newline at end of file +fn main() {} diff --git a/src/test/run-pass/last-use-corner-cases.rs b/src/test/run-pass/last-use-corner-cases.rs index 6963cdf5d16..b6fb3547bc9 100644 --- a/src/test/run-pass/last-use-corner-cases.rs +++ b/src/test/run-pass/last-use-corner-cases.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn main() { // Make sure closing over can be a last use let q = ~10; diff --git a/src/test/run-pass/monad.rs b/src/test/run-pass/monad.rs index 36eea6e89d5..ae8797ce764 100644 --- a/src/test/run-pass/monad.rs +++ b/src/test/run-pass/monad.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + trait vec_monad { fn bind(f: fn(A) -> ~[B]) -> ~[B]; } diff --git a/src/test/run-pass/operator-overloading.rs b/src/test/run-pass/operator-overloading.rs index 79eef40bfeb..6956d8b653d 100644 --- a/src/test/run-pass/operator-overloading.rs +++ b/src/test/run-pass/operator-overloading.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + struct Point { x: int, y: int diff --git a/src/test/run-pass/reflect-visit-data.rs b/src/test/run-pass/reflect-visit-data.rs index 7ead5028956..8f48b44aa3b 100644 --- a/src/test/run-pass/reflect-visit-data.rs +++ b/src/test/run-pass/reflect-visit-data.rs @@ -1,3 +1,4 @@ +#[legacy_modes]; use intrinsic::{TyDesc, get_tydesc, visit_tydesc, TyVisitor}; use libc::c_void; diff --git a/src/test/run-pass/regions-params.rs b/src/test/run-pass/regions-params.rs index 5f2b2756fb0..75e3afc07d8 100644 --- a/src/test/run-pass/regions-params.rs +++ b/src/test/run-pass/regions-params.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn region_identity(x: &r/uint) -> &r/uint { x } fn apply(t: T, f: fn(T) -> T) -> T { f(t) } @@ -12,4 +14,4 @@ fn parameterized(x: &uint) -> uint { fn main() { let x = 3u; assert parameterized(&x) == 3u; -} \ No newline at end of file +} diff --git a/src/test/run-pass/resource-generic.rs b/src/test/run-pass/resource-generic.rs index 392d68d8763..a63ec8d154a 100644 --- a/src/test/run-pass/resource-generic.rs +++ b/src/test/run-pass/resource-generic.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + struct finish { arg: {val: T, fin: extern fn(T)}, drop { self.arg.fin(self.arg.val); } diff --git a/src/test/run-pass/ret-break-cont-in-block.rs b/src/test/run-pass/ret-break-cont-in-block.rs index 90eddb794f4..12ad2d78929 100644 --- a/src/test/run-pass/ret-break-cont-in-block.rs +++ b/src/test/run-pass/ret-break-cont-in-block.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + use cmp::Eq; fn iter(v: ~[T], it: fn(T) -> bool) { diff --git a/src/test/run-pass/sendfn-generic-fn.rs b/src/test/run-pass/sendfn-generic-fn.rs index 194c3ada9ac..bc23e6734d2 100644 --- a/src/test/run-pass/sendfn-generic-fn.rs +++ b/src/test/run-pass/sendfn-generic-fn.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; use comm::Chan; diff --git a/src/test/run-pass/sendfn-is-a-block.rs b/src/test/run-pass/sendfn-is-a-block.rs index 21af730caba..5e16a3de748 100644 --- a/src/test/run-pass/sendfn-is-a-block.rs +++ b/src/test/run-pass/sendfn-is-a-block.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn test(f: fn(uint) -> uint) -> uint { return f(22u); } @@ -5,4 +7,4 @@ fn test(f: fn(uint) -> uint) -> uint { fn main() { let y = test(fn~(x: uint) -> uint { return 4u * x; }); assert y == 88u; -} \ No newline at end of file +} diff --git a/src/test/run-pass/static-impl.rs b/src/test/run-pass/static-impl.rs index e29f3fdd5e4..ded9b1e6768 100644 --- a/src/test/run-pass/static-impl.rs +++ b/src/test/run-pass/static-impl.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + use a::*; trait plus { diff --git a/src/test/run-pass/static-method-test.rs b/src/test/run-pass/static-method-test.rs index 1fc930a688e..80a2246e6e3 100644 --- a/src/test/run-pass/static-method-test.rs +++ b/src/test/run-pass/static-method-test.rs @@ -1,3 +1,4 @@ +#[legacy_modes]; // A trait for objects that can be used to do an if-then-else // (No actual need for this to be static, but it is a simple test.) diff --git a/src/test/run-pass/task-comm-0.rs b/src/test/run-pass/task-comm-0.rs index 406c08cd3fb..4655792e216 100644 --- a/src/test/run-pass/task-comm-0.rs +++ b/src/test/run-pass/task-comm-0.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; use pipes::Chan; diff --git a/src/test/run-pass/task-comm-10.rs b/src/test/run-pass/task-comm-10.rs index 9b52172cfc5..57942e23939 100644 --- a/src/test/run-pass/task-comm-10.rs +++ b/src/test/run-pass/task-comm-10.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; fn start(c: pipes::Chan>) { diff --git a/src/test/run-pass/task-comm-11.rs b/src/test/run-pass/task-comm-11.rs index b90f8fed400..826436ff2a9 100644 --- a/src/test/run-pass/task-comm-11.rs +++ b/src/test/run-pass/task-comm-11.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; fn start(c: pipes::Chan>) { diff --git a/src/test/run-pass/task-comm-13.rs b/src/test/run-pass/task-comm-13.rs index 267d16852b9..de13722e238 100644 --- a/src/test/run-pass/task-comm-13.rs +++ b/src/test/run-pass/task-comm-13.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; use pipes::send; diff --git a/src/test/run-pass/task-comm-14.rs b/src/test/run-pass/task-comm-14.rs index 9f4aac349d3..efb4f49b2b1 100644 --- a/src/test/run-pass/task-comm-14.rs +++ b/src/test/run-pass/task-comm-14.rs @@ -1,3 +1,4 @@ +#[legacy_modes]; fn main() { let po = pipes::PortSet(); diff --git a/src/test/run-pass/task-comm-15.rs b/src/test/run-pass/task-comm-15.rs index 15ed2d26aa2..22f40e784a7 100644 --- a/src/test/run-pass/task-comm-15.rs +++ b/src/test/run-pass/task-comm-15.rs @@ -1,4 +1,6 @@ // xfail-win32 +#[legacy_modes]; + extern mod std; fn start(c: pipes::Chan, i0: int) { diff --git a/src/test/run-pass/task-comm-3.rs b/src/test/run-pass/task-comm-3.rs index f232e9bf8c8..f54b1d173f3 100644 --- a/src/test/run-pass/task-comm-3.rs +++ b/src/test/run-pass/task-comm-3.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; use pipes::Chan; use pipes::send; diff --git a/src/test/run-pass/task-comm-7.rs b/src/test/run-pass/task-comm-7.rs index f5778fcb6e3..025c1f35451 100644 --- a/src/test/run-pass/task-comm-7.rs +++ b/src/test/run-pass/task-comm-7.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; fn main() { test00(); } diff --git a/src/test/run-pass/task-comm-9.rs b/src/test/run-pass/task-comm-9.rs index eefc7452969..bc553998e90 100644 --- a/src/test/run-pass/task-comm-9.rs +++ b/src/test/run-pass/task-comm-9.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + extern mod std; fn main() { test00(); } diff --git a/src/test/run-pass/trait-generic.rs b/src/test/run-pass/trait-generic.rs index 4c7d0415d85..6e684cea403 100644 --- a/src/test/run-pass/trait-generic.rs +++ b/src/test/run-pass/trait-generic.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + trait to_str { fn to_str() -> ~str; } diff --git a/src/test/run-pass/type-param-constraints.rs b/src/test/run-pass/type-param-constraints.rs index f96c2bede61..dc52a181daf 100644 --- a/src/test/run-pass/type-param-constraints.rs +++ b/src/test/run-pass/type-param-constraints.rs @@ -1,3 +1,5 @@ +#[legacy_modes]; + fn p_foo(pinned: T) { } fn s_foo(shared: T) { } fn u_foo(unique: T) { }