about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-09-25 00:43:37 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-09-25 00:43:37 -0700
commit30862a64c29985b044d9bf6f74fcf1394bc145c7 (patch)
tree712da0df6bd5e3661431ec069fa814d048dc703a
parent10a583ce1ac28a8cbf34b0f4274285f33bdfce29 (diff)
downloadrust-30862a64c29985b044d9bf6f74fcf1394bc145c7.tar.gz
rust-30862a64c29985b044d9bf6f74fcf1394bc145c7.zip
Fix run-pass tests to have 'pub fn main'
This is required by the check-fast target because each test is slurped up into a
submodule.
-rwxr-xr-xsrc/etc/combine-tests.py2
-rw-r--r--src/test/run-pass/attr-no-drop-flag-size.rs2
-rw-r--r--src/test/run-pass/borrowck-macro-interaction-issue-6304.rs2
-rw-r--r--src/test/run-pass/borrowck-pat-enum.rs2
-rw-r--r--src/test/run-pass/borrowck-static-item-in-fn.rs2
-rw-r--r--src/test/run-pass/borrowck-unary-move-2.rs2
-rw-r--r--src/test/run-pass/borrowck-uniq-via-ref.rs2
-rw-r--r--src/test/run-pass/borrowck-wg-autoderef-and-autoborrowvec-combined-issue-6272.rs2
-rw-r--r--src/test/run-pass/bug-7183-generics.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-capabilities-transitive.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-capabilities.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-phantom-typaram.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-self-type.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-simple.rs2
-rw-r--r--src/test/run-pass/builtin-superkinds-typaram.rs2
-rw-r--r--src/test/run-pass/cast-mutable-trait.rs4
-rw-r--r--src/test/run-pass/closure-bounds-can-capture-chan.rs2
-rw-r--r--src/test/run-pass/const-binops.rs2
-rw-r--r--src/test/run-pass/const-struct-offsets.rs2
-rw-r--r--src/test/run-pass/default-method-parsing.rs2
-rw-r--r--src/test/run-pass/default-method-supertrait-vtable.rs2
-rw-r--r--src/test/run-pass/deriving-clone-generic-enum.rs2
-rw-r--r--src/test/run-pass/deriving-clone-generic-tuple-struct.rs2
-rw-r--r--src/test/run-pass/deriving-clone-struct.rs2
-rw-r--r--src/test/run-pass/deriving-cmp-shortcircuit.rs2
-rw-r--r--src/test/run-pass/deriving-self-lifetime.rs2
-rw-r--r--src/test/run-pass/deriving-to-str.rs2
-rw-r--r--src/test/run-pass/deriving-zero.rs2
-rw-r--r--src/test/run-pass/enum-discr.rs2
-rw-r--r--src/test/run-pass/enum-vec-initializer.rs2
-rw-r--r--src/test/run-pass/expr-repeat-vstore.rs2
-rw-r--r--src/test/run-pass/extern-call-direct.rs2
-rw-r--r--src/test/run-pass/extern-compare-with-return-type.rs2
-rw-r--r--src/test/run-pass/extoption_env-not-defined.rs2
-rw-r--r--src/test/run-pass/filter-block-view-items.rs2
-rw-r--r--src/test/run-pass/foreach-external-iterators-break.rs2
-rw-r--r--src/test/run-pass/foreach-external-iterators-hashmap-break-restart.rs4
-rw-r--r--src/test/run-pass/foreach-external-iterators-hashmap.rs4
-rw-r--r--src/test/run-pass/foreach-external-iterators-loop.rs2
-rw-r--r--src/test/run-pass/foreach-external-iterators-nested.rs2
-rw-r--r--src/test/run-pass/foreach-external-iterators.rs4
-rw-r--r--src/test/run-pass/func-arg-incomplete-pattern.rs4
-rw-r--r--src/test/run-pass/func-arg-ref-pattern.rs2
-rw-r--r--src/test/run-pass/func-arg-wild-pattern.rs2
-rwxr-xr-xsrc/test/run-pass/generic-static-methods.rs2
-rw-r--r--src/test/run-pass/hygiene-dodging-1.rs2
-rw-r--r--src/test/run-pass/issue-2611-3.rs2
-rw-r--r--src/test/run-pass/issue-3991.rs2
-rw-r--r--src/test/run-pass/issue-4333.rs2
-rw-r--r--src/test/run-pass/issue-4446.rs2
-rw-r--r--src/test/run-pass/issue-4735.rs2
-rw-r--r--src/test/run-pass/issue-5008-borrowed-traitobject-method-call.rs2
-rw-r--r--src/test/run-pass/issue-5060.rs2
-rw-r--r--src/test/run-pass/issue-5192.rs2
-rw-r--r--src/test/run-pass/issue-5239-2.rs2
-rw-r--r--src/test/run-pass/issue-5280.rs2
-rw-r--r--src/test/run-pass/issue-5315.rs2
-rw-r--r--src/test/run-pass/issue-5321-immediates-with-bare-self.rs2
-rw-r--r--src/test/run-pass/issue-5353.rs2
-rw-r--r--src/test/run-pass/issue-5517.rs2
-rw-r--r--src/test/run-pass/issue-5550.rs2
-rw-r--r--src/test/run-pass/issue-5572.rs2
-rw-r--r--src/test/run-pass/issue-5688.rs2
-rw-r--r--src/test/run-pass/issue-5708.rs2
-rw-r--r--src/test/run-pass/issue-5741.rs2
-rw-r--r--src/test/run-pass/issue-5917.rs2
-rw-r--r--src/test/run-pass/issue-6128.rs2
-rw-r--r--src/test/run-pass/issue-6130.rs2
-rw-r--r--src/test/run-pass/issue-6141-leaking-owned-fn.rs4
-rw-r--r--src/test/run-pass/issue-6153.rs2
-rw-r--r--src/test/run-pass/issue-6341.rs2
-rw-r--r--src/test/run-pass/issue-6344-let.rs2
-rw-r--r--src/test/run-pass/issue-6344-match.rs2
-rw-r--r--src/test/run-pass/issue-7012.rs2
-rw-r--r--src/test/run-pass/issue-7344.rs2
-rw-r--r--src/test/run-pass/issue-7519-match-unit-in-arg.rs2
-rw-r--r--src/test/run-pass/issue-7673-cast-generically-implemented-trait.rs2
-rw-r--r--src/test/run-pass/issue-7712.rs2
-rw-r--r--src/test/run-pass/issue-8171-default-method-self-inherit-builtin-trait.rs2
-rw-r--r--src/test/run-pass/issue-8248.rs2
-rw-r--r--src/test/run-pass/issue-8249.rs2
-rw-r--r--src/test/run-pass/issue-8398.rs2
-rw-r--r--src/test/run-pass/issue-9047.rs2
-rw-r--r--src/test/run-pass/issue-9110.rs2
-rw-r--r--src/test/run-pass/let-destruct-ref.rs2
-rw-r--r--src/test/run-pass/let-var-hygiene.rs2
-rw-r--r--src/test/run-pass/link-section.rs2
-rw-r--r--src/test/run-pass/lint-cstack.rs2
-rw-r--r--src/test/run-pass/lint-non-camel-case-types-non-uppercase-statics-unicode.rs2
-rw-r--r--src/test/run-pass/lint-non-uppercase-statics-lowercase-mut-statics.rs2
-rw-r--r--src/test/run-pass/macro-local-data-key.rs2
-rw-r--r--src/test/run-pass/match-drop-strs-issue-4541.rs2
-rw-r--r--src/test/run-pass/match-in-macro.rs2
-rw-r--r--src/test/run-pass/match-pipe-binding.rs2
-rw-r--r--src/test/run-pass/match-range-static.rs2
-rw-r--r--src/test/run-pass/match-vec-rvalue.rs2
-rw-r--r--src/test/run-pass/mid-path-type-params.rs2
-rw-r--r--src/test/run-pass/move-out-of-field.rs2
-rw-r--r--src/test/run-pass/multibyte.rs2
-rw-r--r--src/test/run-pass/nested-enum-same-names.rs2
-rw-r--r--src/test/run-pass/nested-function-names-issue-8587.rs2
-rw-r--r--src/test/run-pass/newtype-struct-drop-run.rs2
-rw-r--r--src/test/run-pass/newtype-temporary.rs2
-rw-r--r--src/test/run-pass/objects-coerce-freeze-borrored.rs2
-rw-r--r--src/test/run-pass/objects-coerce-from-managed-to-borrowed.rs2
-rw-r--r--src/test/run-pass/owned-implies-static.rs2
-rw-r--r--src/test/run-pass/packed-struct-borrow-element.rs2
-rw-r--r--src/test/run-pass/packed-struct-generic-layout.rs2
-rw-r--r--src/test/run-pass/packed-struct-generic-size.rs2
-rw-r--r--src/test/run-pass/packed-struct-layout.rs2
-rw-r--r--src/test/run-pass/packed-struct-match.rs2
-rw-r--r--src/test/run-pass/packed-struct-size.rs2
-rw-r--r--src/test/run-pass/packed-struct-vec.rs2
-rw-r--r--src/test/run-pass/packed-tuple-struct-layout.rs2
-rw-r--r--src/test/run-pass/packed-tuple-struct-size.rs2
-rw-r--r--src/test/run-pass/pub-extern-privacy.rs2
-rw-r--r--src/test/run-pass/region-dependent-autofn.rs2
-rw-r--r--src/test/run-pass/region-dependent-autoslice.rs2
-rw-r--r--src/test/run-pass/send_str_hashmap.rs2
-rw-r--r--src/test/run-pass/send_str_treemap.rs2
-rw-r--r--src/test/run-pass/simd-binop.rs2
-rw-r--r--src/test/run-pass/simd-type.rs2
-rw-r--r--src/test/run-pass/sized-borrowed-pointer.rs2
-rw-r--r--src/test/run-pass/sized-owned-pointer.rs2
-rw-r--r--src/test/run-pass/static-assert.rs2
-rw-r--r--src/test/run-pass/struct-update-moves-and-copies.rs2
-rw-r--r--src/test/run-pass/syntax-extension-bytes.rs2
-rw-r--r--src/test/run-pass/tag-variant-disr-type-mismatch.rs2
-rw-r--r--src/test/run-pass/trait-bounds-basic.rs2
-rw-r--r--src/test/run-pass/trait-bounds-recursion.rs2
-rw-r--r--src/test/run-pass/trait-object-generics.rs2
-rw-r--r--src/test/run-pass/trait-with-bounds-default.rs2
-rw-r--r--src/test/run-pass/traits-default-method-mut.rs2
-rw-r--r--src/test/run-pass/transmute-non-immediate-to-immediate.rs2
-rw-r--r--src/test/run-pass/tuple-struct-constructor-pointer.rs2
-rw-r--r--src/test/run-pass/typeck-macro-interaction-issue-8852.rs4
-rw-r--r--src/test/run-pass/unfold-cross-crate.rs2
137 files changed, 145 insertions, 143 deletions
diff --git a/src/etc/combine-tests.py b/src/etc/combine-tests.py
index 36031d31149..692aa6871e6 100755
--- a/src/etc/combine-tests.py
+++ b/src/etc/combine-tests.py
@@ -29,6 +29,8 @@ for t in os.listdir(run_pass):
         if not ("xfail-test" in s or
                 "xfail-fast" in s or
                 "xfail-win32" in s):
+            if not "pub fn main" in s and "fn main" in s:
+                print("Warning: no public entry point in " + t)
             stage2_tests.append(t)
         f.close()
 
diff --git a/src/test/run-pass/attr-no-drop-flag-size.rs b/src/test/run-pass/attr-no-drop-flag-size.rs
index e5470a1cff4..bbc6501bc77 100644
--- a/src/test/run-pass/attr-no-drop-flag-size.rs
+++ b/src/test/run-pass/attr-no-drop-flag-size.rs
@@ -20,6 +20,6 @@ impl<T> Drop for Test<T> {
     fn drop(&mut self) { }
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(size_of::<int>(), size_of::<Test<int>>());
 }
diff --git a/src/test/run-pass/borrowck-macro-interaction-issue-6304.rs b/src/test/run-pass/borrowck-macro-interaction-issue-6304.rs
index 65d377173c8..4e79013de83 100644
--- a/src/test/run-pass/borrowck-macro-interaction-issue-6304.rs
+++ b/src/test/run-pass/borrowck-macro-interaction-issue-6304.rs
@@ -26,4 +26,4 @@ impl Foo {
   fn check_id(&mut self, s: int) { fail!() }
 }
  
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/borrowck-pat-enum.rs b/src/test/run-pass/borrowck-pat-enum.rs
index f320de39c8c..79cad643dfd 100644
--- a/src/test/run-pass/borrowck-pat-enum.rs
+++ b/src/test/run-pass/borrowck-pat-enum.rs
@@ -43,5 +43,5 @@ fn match_mut_reg(v: &mut Option<int>) {
     }
 }
 
-fn main() {
+pub fn main() {
 }
diff --git a/src/test/run-pass/borrowck-static-item-in-fn.rs b/src/test/run-pass/borrowck-static-item-in-fn.rs
index a3a7a1b8969..366752f46b0 100644
--- a/src/test/run-pass/borrowck-static-item-in-fn.rs
+++ b/src/test/run-pass/borrowck-static-item-in-fn.rs
@@ -10,6 +10,6 @@
 
 // Regression test for issue #7740
 
-fn main() {
+pub fn main() {
     static A: &'static char = &'A';
 }
diff --git a/src/test/run-pass/borrowck-unary-move-2.rs b/src/test/run-pass/borrowck-unary-move-2.rs
index 2ab0f4262fb..87d42943fac 100644
--- a/src/test/run-pass/borrowck-unary-move-2.rs
+++ b/src/test/run-pass/borrowck-unary-move-2.rs
@@ -26,7 +26,7 @@ fn noncopyable() -> noncopyable {
 
 struct wrapper(noncopyable);
 
-fn main() {
+pub fn main() {
     let x1 = wrapper(noncopyable());
     let _x2 = *x1;
 }
diff --git a/src/test/run-pass/borrowck-uniq-via-ref.rs b/src/test/run-pass/borrowck-uniq-via-ref.rs
index 44f3a8f518a..d50b4f15f4e 100644
--- a/src/test/run-pass/borrowck-uniq-via-ref.rs
+++ b/src/test/run-pass/borrowck-uniq-via-ref.rs
@@ -50,5 +50,5 @@ fn box_imm_recs(v: &Outer) {
     borrow(v.f.g.h); // OK
 }
 
-fn main() {
+pub fn main() {
 }
diff --git a/src/test/run-pass/borrowck-wg-autoderef-and-autoborrowvec-combined-issue-6272.rs b/src/test/run-pass/borrowck-wg-autoderef-and-autoborrowvec-combined-issue-6272.rs
index 5da7a6f2b56..4ee0d42ae13 100644
--- a/src/test/run-pass/borrowck-wg-autoderef-and-autoborrowvec-combined-issue-6272.rs
+++ b/src/test/run-pass/borrowck-wg-autoderef-and-autoborrowvec-combined-issue-6272.rs
@@ -27,7 +27,7 @@
 // run-fail/borrowck-wg-autoderef-and-autoborrowvec-combined-fail-issue-6272.rs
 
 
-fn main() {
+pub fn main() {
     let a = @mut 3i;
     let b = @mut [a];
     let c = @mut [3];
diff --git a/src/test/run-pass/bug-7183-generics.rs b/src/test/run-pass/bug-7183-generics.rs
index 52264da2e80..45f4302a5af 100644
--- a/src/test/run-pass/bug-7183-generics.rs
+++ b/src/test/run-pass/bug-7183-generics.rs
@@ -33,7 +33,7 @@ impl<T: Speak> Speak for Option<T> {
 }
 
 
-fn main() {
+pub fn main() {
     assert_eq!(3.hi(), ~"hello: 3");
     assert_eq!(Some(Some(3)).hi(), ~"something!something!hello: 3");
     assert_eq!(None::<int>.hi(), ~"hello - none");
diff --git a/src/test/run-pass/builtin-superkinds-capabilities-transitive.rs b/src/test/run-pass/builtin-superkinds-capabilities-transitive.rs
index 74a218ac469..ec5af692976 100644
--- a/src/test/run-pass/builtin-superkinds-capabilities-transitive.rs
+++ b/src/test/run-pass/builtin-superkinds-capabilities-transitive.rs
@@ -26,7 +26,7 @@ fn foo<T: Foo>(val: T, chan: comm::Chan<T>) {
     chan.send(val);
 }
 
-fn main() {
+pub fn main() {
     let (p,c) = comm::stream();
     foo(31337, c);
     assert!(p.recv() == 31337);
diff --git a/src/test/run-pass/builtin-superkinds-capabilities.rs b/src/test/run-pass/builtin-superkinds-capabilities.rs
index c2d2129b1c1..148fb5a340f 100644
--- a/src/test/run-pass/builtin-superkinds-capabilities.rs
+++ b/src/test/run-pass/builtin-superkinds-capabilities.rs
@@ -22,7 +22,7 @@ fn foo<T: Foo>(val: T, chan: comm::Chan<T>) {
     chan.send(val);
 }
 
-fn main() {
+pub fn main() {
     let (p,c) = comm::stream();
     foo(31337, c);
     assert!(p.recv() == 31337);
diff --git a/src/test/run-pass/builtin-superkinds-phantom-typaram.rs b/src/test/run-pass/builtin-superkinds-phantom-typaram.rs
index b6e58bfbf3d..740b8c2016a 100644
--- a/src/test/run-pass/builtin-superkinds-phantom-typaram.rs
+++ b/src/test/run-pass/builtin-superkinds-phantom-typaram.rs
@@ -18,4 +18,4 @@ struct X<T>(());
 
 impl <T> Foo for X<T> { }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/builtin-superkinds-self-type.rs b/src/test/run-pass/builtin-superkinds-self-type.rs
index 2285c471c91..a8f5f27b4d9 100644
--- a/src/test/run-pass/builtin-superkinds-self-type.rs
+++ b/src/test/run-pass/builtin-superkinds-self-type.rs
@@ -21,7 +21,7 @@ trait Foo : Send {
 
 impl <T: Send> Foo for T { }
 
-fn main() {
+pub fn main() {
     let (p,c) = comm::stream();
     1193182.foo(c);
     assert!(p.recv() == 1193182);
diff --git a/src/test/run-pass/builtin-superkinds-simple.rs b/src/test/run-pass/builtin-superkinds-simple.rs
index 61a22d97498..9643e2986d2 100644
--- a/src/test/run-pass/builtin-superkinds-simple.rs
+++ b/src/test/run-pass/builtin-superkinds-simple.rs
@@ -14,4 +14,4 @@ trait Foo : Send { }
 
 impl Foo for int { }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/builtin-superkinds-typaram.rs b/src/test/run-pass/builtin-superkinds-typaram.rs
index 7dfd1e0629f..d96679c69fd 100644
--- a/src/test/run-pass/builtin-superkinds-typaram.rs
+++ b/src/test/run-pass/builtin-superkinds-typaram.rs
@@ -15,4 +15,4 @@ trait Foo : Send { }
 
 impl <T: Send> Foo for T { }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/cast-mutable-trait.rs b/src/test/run-pass/cast-mutable-trait.rs
index 633188b9a62..ce026d3e2e0 100644
--- a/src/test/run-pass/cast-mutable-trait.rs
+++ b/src/test/run-pass/cast-mutable-trait.rs
@@ -25,10 +25,10 @@ fn bar(t: @mut T) {
     t.foo();
 }
 
-fn main() {
+pub fn main() {
     let s = @mut S { unused: 0 };
     let s2 = s as @mut T;
     s2.foo();
     bar(s2);
     bar(s as @mut T);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/closure-bounds-can-capture-chan.rs b/src/test/run-pass/closure-bounds-can-capture-chan.rs
index 95b0c9d79b7..d35d6d9f07e 100644
--- a/src/test/run-pass/closure-bounds-can-capture-chan.rs
+++ b/src/test/run-pass/closure-bounds-can-capture-chan.rs
@@ -14,7 +14,7 @@ fn foo(blk: ~fn:Send()) {
     blk();
 }
 
-fn main() {
+pub fn main() {
     let (p,c) = comm::stream();
     do foo {
         c.send(());
diff --git a/src/test/run-pass/const-binops.rs b/src/test/run-pass/const-binops.rs
index cd87ca3ab53..b3cb8580f7d 100644
--- a/src/test/run-pass/const-binops.rs
+++ b/src/test/run-pass/const-binops.rs
@@ -56,7 +56,7 @@ static am: bool = 2 > 1;
 static an: bool = 2 > -2;
 static ao: bool = 1.0 > -2.0;
 
-fn main() {
+pub fn main() {
     assert_eq!(a, -1);
     assert_eq!(a2, 6);
     assert_approx_eq!(b, 5.7);
diff --git a/src/test/run-pass/const-struct-offsets.rs b/src/test/run-pass/const-struct-offsets.rs
index cd39c8df872..2bb0516cad4 100644
--- a/src/test/run-pass/const-struct-offsets.rs
+++ b/src/test/run-pass/const-struct-offsets.rs
@@ -10,4 +10,4 @@ struct Bar {
 
 static bar: Bar = Bar { i: 0, v: IntVal(0) };
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/default-method-parsing.rs b/src/test/run-pass/default-method-parsing.rs
index ec607102566..639ea59585e 100644
--- a/src/test/run-pass/default-method-parsing.rs
+++ b/src/test/run-pass/default-method-parsing.rs
@@ -12,4 +12,4 @@ trait Foo {
     fn m(&self, _:int) { }
 }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/default-method-supertrait-vtable.rs b/src/test/run-pass/default-method-supertrait-vtable.rs
index 90a2b914021..0c6430fb36d 100644
--- a/src/test/run-pass/default-method-supertrait-vtable.rs
+++ b/src/test/run-pass/default-method-supertrait-vtable.rs
@@ -31,6 +31,6 @@ impl Y for int {
 
 impl Z for int;
 
-fn main() {
+pub fn main() {
     assert_eq!(12.x(), 12);
 }
diff --git a/src/test/run-pass/deriving-clone-generic-enum.rs b/src/test/run-pass/deriving-clone-generic-enum.rs
index 78abbf504f3..61696c2eeac 100644
--- a/src/test/run-pass/deriving-clone-generic-enum.rs
+++ b/src/test/run-pass/deriving-clone-generic-enum.rs
@@ -15,7 +15,7 @@ enum E<T,U> {
     C
 }
 
-fn main() {
+pub fn main() {
     let _ = A::<int, int>(1i).clone();
     let _ = B(1i, 1.234).deep_clone();
 }
diff --git a/src/test/run-pass/deriving-clone-generic-tuple-struct.rs b/src/test/run-pass/deriving-clone-generic-tuple-struct.rs
index c082a11eab8..02043b524a9 100644
--- a/src/test/run-pass/deriving-clone-generic-tuple-struct.rs
+++ b/src/test/run-pass/deriving-clone-generic-tuple-struct.rs
@@ -11,6 +11,6 @@
 #[deriving(Clone, DeepClone)]
 struct S<T>(T, ());
 
-fn main() {
+pub fn main() {
     let _ = S(1i, ()).clone().deep_clone();
 }
diff --git a/src/test/run-pass/deriving-clone-struct.rs b/src/test/run-pass/deriving-clone-struct.rs
index d540b047af7..412cc3b3a85 100644
--- a/src/test/run-pass/deriving-clone-struct.rs
+++ b/src/test/run-pass/deriving-clone-struct.rs
@@ -31,4 +31,4 @@ struct S {
     _nil: ()
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/deriving-cmp-shortcircuit.rs b/src/test/run-pass/deriving-cmp-shortcircuit.rs
index 7f5c78cf602..431c856ee88 100644
--- a/src/test/run-pass/deriving-cmp-shortcircuit.rs
+++ b/src/test/run-pass/deriving-cmp-shortcircuit.rs
@@ -35,7 +35,7 @@ struct ShortCircuit {
     y: FailCmp
 }
 
-fn main() {
+pub fn main() {
     let a = ShortCircuit { x: 1, y: FailCmp };
     let b = ShortCircuit { x: 2, y: FailCmp };
 
diff --git a/src/test/run-pass/deriving-self-lifetime.rs b/src/test/run-pass/deriving-self-lifetime.rs
index e65e189ea93..2b0245fa5d2 100644
--- a/src/test/run-pass/deriving-self-lifetime.rs
+++ b/src/test/run-pass/deriving-self-lifetime.rs
@@ -13,7 +13,7 @@ struct A<'self> {
     x: &'self int
 }
 
-fn main() {
+pub fn main() {
     let a = A { x: &1 };
     let b = A { x: &2 };
 
diff --git a/src/test/run-pass/deriving-to-str.rs b/src/test/run-pass/deriving-to-str.rs
index 1fc1d6815f5..a6068b52740 100644
--- a/src/test/run-pass/deriving-to-str.rs
+++ b/src/test/run-pass/deriving-to-str.rs
@@ -34,7 +34,7 @@ impl ToStr for Custom {
     fn to_str(&self) -> ~str { ~"yay" }
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(B1.to_str(), ~"B1");
     assert_eq!(B2.to_str(), ~"B2");
     assert_eq!(C1(3).to_str(), ~"C1(3)");
diff --git a/src/test/run-pass/deriving-zero.rs b/src/test/run-pass/deriving-zero.rs
index fb4ffb2c3c1..59acc353fed 100644
--- a/src/test/run-pass/deriving-zero.rs
+++ b/src/test/run-pass/deriving-zero.rs
@@ -33,7 +33,7 @@ struct Lots {
     j: (),
 }
 
-fn main() {
+pub fn main() {
     let lots: Lots = Zero::zero();
     assert!(lots.is_zero());
 }
diff --git a/src/test/run-pass/enum-discr.rs b/src/test/run-pass/enum-discr.rs
index 5a14f0050e8..28f38829167 100644
--- a/src/test/run-pass/enum-discr.rs
+++ b/src/test/run-pass/enum-discr.rs
@@ -12,7 +12,7 @@ enum Hero {
     Spiderman = -4
 }
 
-fn main() {
+pub fn main() {
     let pet: Animal = Snake;
     let hero: Hero = Superman;
     assert!(pet as uint == 3);
diff --git a/src/test/run-pass/enum-vec-initializer.rs b/src/test/run-pass/enum-vec-initializer.rs
index d240e849ad0..a55b5eebefb 100644
--- a/src/test/run-pass/enum-vec-initializer.rs
+++ b/src/test/run-pass/enum-vec-initializer.rs
@@ -15,7 +15,7 @@ enum Flopsy {
 static BAR:uint = Bunny as uint;
 static BAR2:uint = BAR;
 
-fn main() {
+pub fn main() {
     let _v = [0, .. Bunny as uint];
     let _v = [0, .. BAR];
     let _v = [0, .. BAR2];
diff --git a/src/test/run-pass/expr-repeat-vstore.rs b/src/test/run-pass/expr-repeat-vstore.rs
index 5c94f059b49..48bce39970f 100644
--- a/src/test/run-pass/expr-repeat-vstore.rs
+++ b/src/test/run-pass/expr-repeat-vstore.rs
@@ -1,6 +1,6 @@
 use std::io::println;
 
-fn main() {
+pub fn main() {
     let v: ~[int] = ~[ 1, ..5 ];
     println(v[0].to_str());
     println(v[1].to_str());
diff --git a/src/test/run-pass/extern-call-direct.rs b/src/test/run-pass/extern-call-direct.rs
index bc6ee63c0f4..925ec8e7ff7 100644
--- a/src/test/run-pass/extern-call-direct.rs
+++ b/src/test/run-pass/extern-call-direct.rs
@@ -12,7 +12,7 @@
 
 extern fn f(x: uint) -> uint { x * 2 }
 
-fn main() {
+pub fn main() {
     #[fixed_stack_segment];
 
     let x = f(22);
diff --git a/src/test/run-pass/extern-compare-with-return-type.rs b/src/test/run-pass/extern-compare-with-return-type.rs
index 5406fa283e7..53a5d3e9621 100644
--- a/src/test/run-pass/extern-compare-with-return-type.rs
+++ b/src/test/run-pass/extern-compare-with-return-type.rs
@@ -19,7 +19,7 @@ extern fn uintvoidret(_x: uint) {}
 
 extern fn uintuintuintuintret(x: uint, y: uint, z: uint) -> uint { x+y+z }
 
-fn main() {
+pub fn main() {
     assert_eq!(voidret1, voidret1);
     assert!(voidret1 != voidret2);
 
diff --git a/src/test/run-pass/extoption_env-not-defined.rs b/src/test/run-pass/extoption_env-not-defined.rs
index cbf4c36c5df..891133c78d4 100644
--- a/src/test/run-pass/extoption_env-not-defined.rs
+++ b/src/test/run-pass/extoption_env-not-defined.rs
@@ -8,6 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     assert!(option_env!("__HOPEFULLY_DOESNT_EXIST__").is_none());
 }
diff --git a/src/test/run-pass/filter-block-view-items.rs b/src/test/run-pass/filter-block-view-items.rs
index 42861833717..34272b145a2 100644
--- a/src/test/run-pass/filter-block-view-items.rs
+++ b/src/test/run-pass/filter-block-view-items.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     // Make sure that this view item is filtered out because otherwise it would
     // trigger a compilation error
     #[cfg(not_present)] use foo = bar;
diff --git a/src/test/run-pass/foreach-external-iterators-break.rs b/src/test/run-pass/foreach-external-iterators-break.rs
index f5e7d91c225..87ed7826fed 100644
--- a/src/test/run-pass/foreach-external-iterators-break.rs
+++ b/src/test/run-pass/foreach-external-iterators-break.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let x = [1,..100];
     let mut y = 0;
     for i in x.iter() {
diff --git a/src/test/run-pass/foreach-external-iterators-hashmap-break-restart.rs b/src/test/run-pass/foreach-external-iterators-hashmap-break-restart.rs
index 17c5bb5c0e2..34ce8c47113 100644
--- a/src/test/run-pass/foreach-external-iterators-hashmap-break-restart.rs
+++ b/src/test/run-pass/foreach-external-iterators-hashmap-break-restart.rs
@@ -14,7 +14,7 @@ use std::hashmap::HashMap;
 // outside the loop, breaks, then _picks back up_ and continues
 // iterating with it.
 
-fn main() {
+pub fn main() {
     let mut h = HashMap::new();
     let kvs = [(1, 10), (2, 20), (3, 30)];
     for &(k,v) in kvs.iter() {
@@ -38,4 +38,4 @@ fn main() {
 
     assert_eq!(x, 6);
     assert_eq!(y, 60);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/foreach-external-iterators-hashmap.rs b/src/test/run-pass/foreach-external-iterators-hashmap.rs
index 908adc0d762..365cde34dce 100644
--- a/src/test/run-pass/foreach-external-iterators-hashmap.rs
+++ b/src/test/run-pass/foreach-external-iterators-hashmap.rs
@@ -10,7 +10,7 @@
 
 use std::hashmap::HashMap;
 
-fn main() {
+pub fn main() {
     let mut h = HashMap::new();
     let kvs = [(1, 10), (2, 20), (3, 30)];
     for &(k,v) in kvs.iter() {
@@ -24,4 +24,4 @@ fn main() {
     }
     assert_eq!(x, 6);
     assert_eq!(y, 60);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/foreach-external-iterators-loop.rs b/src/test/run-pass/foreach-external-iterators-loop.rs
index c999d810ec6..ced538e163e 100644
--- a/src/test/run-pass/foreach-external-iterators-loop.rs
+++ b/src/test/run-pass/foreach-external-iterators-loop.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let x = [1,..100];
     let mut y = 0;
     for (n,i) in x.iter().enumerate() {
diff --git a/src/test/run-pass/foreach-external-iterators-nested.rs b/src/test/run-pass/foreach-external-iterators-nested.rs
index 904c90dc815..78aba778421 100644
--- a/src/test/run-pass/foreach-external-iterators-nested.rs
+++ b/src/test/run-pass/foreach-external-iterators-nested.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let x = [1,..100];
     let y = [2,..100];
     let mut p = 0;
diff --git a/src/test/run-pass/foreach-external-iterators.rs b/src/test/run-pass/foreach-external-iterators.rs
index c6f903821dd..593a996d8df 100644
--- a/src/test/run-pass/foreach-external-iterators.rs
+++ b/src/test/run-pass/foreach-external-iterators.rs
@@ -8,11 +8,11 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let x = [1,..100];
     let mut y = 0;
     for i in x.iter() {
         y += *i
     }
     assert!(y == 100);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/func-arg-incomplete-pattern.rs b/src/test/run-pass/func-arg-incomplete-pattern.rs
index b08d3beae1b..93c9d6b50ec 100644
--- a/src/test/run-pass/func-arg-incomplete-pattern.rs
+++ b/src/test/run-pass/func-arg-incomplete-pattern.rs
@@ -11,10 +11,10 @@ fn foo(Foo {x, _}: Foo) -> *uint {
     addr
 }
 
-fn main() {
+pub fn main() {
     let obj = ~1;
     let objptr: *uint = &*obj;
     let f = Foo {x: obj, y: ~2};
     let xptr = foo(f);
     assert_eq!(objptr, xptr);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/func-arg-ref-pattern.rs b/src/test/run-pass/func-arg-ref-pattern.rs
index 84c2b3acf35..1b7d641fa82 100644
--- a/src/test/run-pass/func-arg-ref-pattern.rs
+++ b/src/test/run-pass/func-arg-ref-pattern.rs
@@ -13,7 +13,7 @@ fn checkval(~ref x: ~uint) -> uint {
     *x
 }
 
-fn main() {
+pub fn main() {
     let obj = ~1;
     let objptr: *uint = &*obj;
     let xptr = getaddr(obj);
diff --git a/src/test/run-pass/func-arg-wild-pattern.rs b/src/test/run-pass/func-arg-wild-pattern.rs
index c2d60c85329..ec58198d4a3 100644
--- a/src/test/run-pass/func-arg-wild-pattern.rs
+++ b/src/test/run-pass/func-arg-wild-pattern.rs
@@ -5,6 +5,6 @@ fn foo((x, _): (int, int)) -> int {
     x
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(foo((22, 23)), 22);
 }
diff --git a/src/test/run-pass/generic-static-methods.rs b/src/test/run-pass/generic-static-methods.rs
index 4945a25967a..2e281812d13 100755
--- a/src/test/run-pass/generic-static-methods.rs
+++ b/src/test/run-pass/generic-static-methods.rs
@@ -22,6 +22,6 @@ impl<T> vec_utils<T> for ~[T] {
     }
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(vec_utils::map_(&~[1,2,3], |&x| x+1), ~[2,3,4]);
 }
diff --git a/src/test/run-pass/hygiene-dodging-1.rs b/src/test/run-pass/hygiene-dodging-1.rs
index 55e15cc02dd..3969394a26b 100644
--- a/src/test/run-pass/hygiene-dodging-1.rs
+++ b/src/test/run-pass/hygiene-dodging-1.rs
@@ -12,7 +12,7 @@ mod x {
     pub fn g() -> uint {14}
 }
 
-fn main(){
+pub fn main(){
     // should *not* shadow the module x:
     let x = 9;
     // use it to avoid warnings:
diff --git a/src/test/run-pass/issue-2611-3.rs b/src/test/run-pass/issue-2611-3.rs
index 56c18d557f0..3cc7296fa4a 100644
--- a/src/test/run-pass/issue-2611-3.rs
+++ b/src/test/run-pass/issue-2611-3.rs
@@ -23,4 +23,4 @@ impl A for E {
   fn b<F,G>(_x: F) -> F { fail!() } //~ ERROR in method `b`, type parameter 0 has 1 bound, but
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/issue-3991.rs b/src/test/run-pass/issue-3991.rs
index 842605b5929..d5dd090009a 100644
--- a/src/test/run-pass/issue-3991.rs
+++ b/src/test/run-pass/issue-3991.rs
@@ -18,4 +18,4 @@ impl HasNested {
     }
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/issue-4333.rs b/src/test/run-pass/issue-4333.rs
index 98280271bde..ebf29be6d5e 100644
--- a/src/test/run-pass/issue-4333.rs
+++ b/src/test/run-pass/issue-4333.rs
@@ -10,7 +10,7 @@
 
 use std::io;
 
-fn main() {
+pub fn main() {
     let stdout = &io::stdout() as &io::WriterUtil;
     stdout.write_line("Hello!");
 }
diff --git a/src/test/run-pass/issue-4446.rs b/src/test/run-pass/issue-4446.rs
index accf7c4e6cd..ddcb544c64f 100644
--- a/src/test/run-pass/issue-4446.rs
+++ b/src/test/run-pass/issue-4446.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let (port, chan) = stream();
 
     do spawn {
diff --git a/src/test/run-pass/issue-4735.rs b/src/test/run-pass/issue-4735.rs
index 8451d281aa0..b28ba6811b7 100644
--- a/src/test/run-pass/issue-4735.rs
+++ b/src/test/run-pass/issue-4735.rs
@@ -21,7 +21,7 @@ impl Drop for NonCopyable {
     }
 }
 
-fn main() {
+pub fn main() {
     let t = ~0;
     let p = unsafe { transmute::<~int, *c_void>(t) };
     let _z = NonCopyable(p);
diff --git a/src/test/run-pass/issue-5008-borrowed-traitobject-method-call.rs b/src/test/run-pass/issue-5008-borrowed-traitobject-method-call.rs
index ce9bb725a1b..dd3f54d97ec 100644
--- a/src/test/run-pass/issue-5008-borrowed-traitobject-method-call.rs
+++ b/src/test/run-pass/issue-5008-borrowed-traitobject-method-call.rs
@@ -37,7 +37,7 @@ fn print_name(x: &Debuggable)
     println(fmt!("debug_name = %s", x.debug_name()));
 }
 
-fn main() {
+pub fn main() {
     let thing = Thing::new();
     print_name(&thing as &Debuggable);
 }
diff --git a/src/test/run-pass/issue-5060.rs b/src/test/run-pass/issue-5060.rs
index 0922f555bea..c9881106071 100644
--- a/src/test/run-pass/issue-5060.rs
+++ b/src/test/run-pass/issue-5060.rs
@@ -22,7 +22,7 @@ macro_rules! print_hd_tl (
     })
 )
 
-fn main() {
+pub fn main() {
     print_hd_tl!(x, y, z, w)
 }
 
diff --git a/src/test/run-pass/issue-5192.rs b/src/test/run-pass/issue-5192.rs
index b9048257cfb..202a3cbcafa 100644
--- a/src/test/run-pass/issue-5192.rs
+++ b/src/test/run-pass/issue-5192.rs
@@ -39,6 +39,6 @@ impl Scheduler {
     }
 }
 
-fn main() {
+pub fn main() {
     let _sched = Scheduler::new(~UvEventLoop::new() as ~EventLoop);
 }
diff --git a/src/test/run-pass/issue-5239-2.rs b/src/test/run-pass/issue-5239-2.rs
index dac3c95e08a..ba70fac0e4e 100644
--- a/src/test/run-pass/issue-5239-2.rs
+++ b/src/test/run-pass/issue-5239-2.rs
@@ -10,7 +10,7 @@
 
 // Regression test for issue #5239
 
-fn main() { 
+pub fn main() { 
     let _f: &fn(int) -> int = |ref x: int| { *x };
     let foo = 10;
     assert!(_f(foo) == 10);
diff --git a/src/test/run-pass/issue-5280.rs b/src/test/run-pass/issue-5280.rs
index 77df670ffb1..16fd45a5615 100644
--- a/src/test/run-pass/issue-5280.rs
+++ b/src/test/run-pass/issue-5280.rs
@@ -20,6 +20,6 @@ impl FontTableTagConversions for FontTableTag {
   }
 }
 
-fn main() {
+pub fn main() {
     5.tag_to_str();
 }
diff --git a/src/test/run-pass/issue-5315.rs b/src/test/run-pass/issue-5315.rs
index dde226ad9d8..1d2e7b79931 100644
--- a/src/test/run-pass/issue-5315.rs
+++ b/src/test/run-pass/issue-5315.rs
@@ -10,7 +10,7 @@
 
 struct A(bool);
 
-fn main() {
+pub fn main() {
     let f = A;
     f(true);
 }
diff --git a/src/test/run-pass/issue-5321-immediates-with-bare-self.rs b/src/test/run-pass/issue-5321-immediates-with-bare-self.rs
index 3f4b732af32..3f1dc2f6986 100644
--- a/src/test/run-pass/issue-5321-immediates-with-bare-self.rs
+++ b/src/test/run-pass/issue-5321-immediates-with-bare-self.rs
@@ -20,6 +20,6 @@ impl Fooable for uint {
     }
 }
 
-fn main() {
+pub fn main() {
     2.yes();
 }
diff --git a/src/test/run-pass/issue-5353.rs b/src/test/run-pass/issue-5353.rs
index cc1bb2dd037..cf11b9aa7b6 100644
--- a/src/test/run-pass/issue-5353.rs
+++ b/src/test/run-pass/issue-5353.rs
@@ -21,4 +21,4 @@ fn gl_err_str(err: u32) -> ~str
   }
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/issue-5517.rs b/src/test/run-pass/issue-5517.rs
index b929dbf51d3..d63d8b13b43 100644
--- a/src/test/run-pass/issue-5517.rs
+++ b/src/test/run-pass/issue-5517.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-fn main() {
+pub fn main() {
     let box1 = @mut 42;
     let _x = *(&mut *box1) == 42 || *(&mut *box1) == 31337;
 }
diff --git a/src/test/run-pass/issue-5550.rs b/src/test/run-pass/issue-5550.rs
index c1875988dc6..d68766d5886 100644
--- a/src/test/run-pass/issue-5550.rs
+++ b/src/test/run-pass/issue-5550.rs
@@ -10,7 +10,7 @@
 
 #[allow(dead_assignment)];
 
-fn main() {
+pub fn main() {
     let s: ~str = ~"foobar";
     let mut t: &str = s;
     t = t.slice(0, 3); // for master: str::view(t, 0, 3) maybe
diff --git a/src/test/run-pass/issue-5572.rs b/src/test/run-pass/issue-5572.rs
index daf5edd1d28..d1a1fbf0940 100644
--- a/src/test/run-pass/issue-5572.rs
+++ b/src/test/run-pass/issue-5572.rs
@@ -1,3 +1,3 @@
 fn foo<T: ::std::cmp::Eq>(_t: T) { }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/issue-5688.rs b/src/test/run-pass/issue-5688.rs
index 440e2a43e42..4ac4b3b33b7 100644
--- a/src/test/run-pass/issue-5688.rs
+++ b/src/test/run-pass/issue-5688.rs
@@ -19,7 +19,7 @@ failed to typecheck correctly.
 
 struct X { vec: &'static [int] }
 static V: &'static [X] = &[X { vec: &[1, 2, 3] }];
-fn main() {
+pub fn main() {
     for &v in V.iter() {
         println(fmt!("%?", v.vec));
     }
diff --git a/src/test/run-pass/issue-5708.rs b/src/test/run-pass/issue-5708.rs
index 51f6ad6aa30..aee1f8415ef 100644
--- a/src/test/run-pass/issue-5708.rs
+++ b/src/test/run-pass/issue-5708.rs
@@ -39,7 +39,7 @@ impl<'self> Outer<'self> {
     }
 }
 
-fn main() {
+pub fn main() {
     let inner = 5;
     let outer = Outer::new(&inner as &Inner);
     outer.inner.print();
diff --git a/src/test/run-pass/issue-5741.rs b/src/test/run-pass/issue-5741.rs
index 039d9bcd16e..46ec68675e7 100644
--- a/src/test/run-pass/issue-5741.rs
+++ b/src/test/run-pass/issue-5741.rs
@@ -12,7 +12,7 @@
 
 use std::io;
 
-fn main() {
+pub fn main() {
     return;
     while io::stdin().read_line() != ~"quit" { };
 }
diff --git a/src/test/run-pass/issue-5917.rs b/src/test/run-pass/issue-5917.rs
index 326e92d3b70..6fb5c25f731 100644
--- a/src/test/run-pass/issue-5917.rs
+++ b/src/test/run-pass/issue-5917.rs
@@ -10,6 +10,6 @@
 
 struct T (&'static [int]);
 static t : T = T (&'static [5, 4, 3]);
-fn main () {
+pub fn main () {
     assert_eq!(t[0], 5);
 }
diff --git a/src/test/run-pass/issue-6128.rs b/src/test/run-pass/issue-6128.rs
index 54df0523dbb..a01a04ebf82 100644
--- a/src/test/run-pass/issue-6128.rs
+++ b/src/test/run-pass/issue-6128.rs
@@ -21,7 +21,7 @@ impl<E> Graph<int, E> for HashMap<int, int> {
     }
 }
 
-fn main() {
+pub fn main() {
     let g : ~HashMap<int, int> = ~HashMap::new();
     let _g2 : ~Graph<int,int> = g as ~Graph<int,int>;
 }
diff --git a/src/test/run-pass/issue-6130.rs b/src/test/run-pass/issue-6130.rs
index 642308c0ca1..d88397499fe 100644
--- a/src/test/run-pass/issue-6130.rs
+++ b/src/test/run-pass/issue-6130.rs
@@ -10,7 +10,7 @@
 
 #[deny(type_limits)];
 
-fn main() {
+pub fn main() {
     let i: uint = 0;
     assert!(i <= 0xFFFF_FFFF_u);
 
diff --git a/src/test/run-pass/issue-6141-leaking-owned-fn.rs b/src/test/run-pass/issue-6141-leaking-owned-fn.rs
index fe11bb0a972..98d2ca5d942 100644
--- a/src/test/run-pass/issue-6141-leaking-owned-fn.rs
+++ b/src/test/run-pass/issue-6141-leaking-owned-fn.rs
@@ -2,7 +2,7 @@ fn run(f: &fn()) {
     f()
 }
 
-fn main() {
+pub fn main() {
     let f: ~fn() = || ();
     run(f);
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/issue-6153.rs b/src/test/run-pass/issue-6153.rs
index a51b595f59f..668d6f3ae45 100644
--- a/src/test/run-pass/issue-6153.rs
+++ b/src/test/run-pass/issue-6153.rs
@@ -13,7 +13,7 @@ fn swap(f: &fn(~[int]) -> ~[int]) -> ~[int] {
     f(x)
 }
 
-fn main() {
+pub fn main() {
     let v = swap(|mut x| { x.push(4); x });
     let w = do swap |mut x| { x.push(4); x };
     assert_eq!(v, w);
diff --git a/src/test/run-pass/issue-6341.rs b/src/test/run-pass/issue-6341.rs
index f57482b67e0..3859d155851 100644
--- a/src/test/run-pass/issue-6341.rs
+++ b/src/test/run-pass/issue-6341.rs
@@ -15,4 +15,4 @@ impl Drop for A {
     fn drop(&mut self) {}
 }
 
-fn main() {}
\ No newline at end of file
+pub fn main() {}
diff --git a/src/test/run-pass/issue-6344-let.rs b/src/test/run-pass/issue-6344-let.rs
index 6e0b6101d37..9343f2b61c9 100644
--- a/src/test/run-pass/issue-6344-let.rs
+++ b/src/test/run-pass/issue-6344-let.rs
@@ -13,7 +13,7 @@ impl Drop for A {
     fn drop(&mut self) {}
 }
 
-fn main() {
+pub fn main() {
     let a = A { x: 0 };
 
     let A { x: ref x } = a;
diff --git a/src/test/run-pass/issue-6344-match.rs b/src/test/run-pass/issue-6344-match.rs
index b9429fc63fd..18d327aa360 100644
--- a/src/test/run-pass/issue-6344-match.rs
+++ b/src/test/run-pass/issue-6344-match.rs
@@ -13,7 +13,7 @@ impl Drop for A {
     fn drop(&mut self) {}
 }
 
-fn main() {
+pub fn main() {
     let a = A { x: 0 };
 
     match a {
diff --git a/src/test/run-pass/issue-7012.rs b/src/test/run-pass/issue-7012.rs
index 777803d75a5..2a56f2ad8bc 100644
--- a/src/test/run-pass/issue-7012.rs
+++ b/src/test/run-pass/issue-7012.rs
@@ -21,7 +21,7 @@ static test1: signature<'static> =  signature {
   pattern: &[0x243f6a88u32,0x85a308d3u32,0x13198a2eu32,0x03707344u32,0xa4093822u32,0x299f31d0u32]
 };
 
-fn main() {
+pub fn main() {
   let test = &[0x243f6a88u32,0x85a308d3u32,0x13198a2eu32,0x03707344u32,0xa4093822u32,0x299f31d0u32];
   println(fmt!("%b",test==test1.pattern));
 }
diff --git a/src/test/run-pass/issue-7344.rs b/src/test/run-pass/issue-7344.rs
index acf55d2463b..9b1643bb224 100644
--- a/src/test/run-pass/issue-7344.rs
+++ b/src/test/run-pass/issue-7344.rs
@@ -22,7 +22,7 @@ fn baz() {
     if "" == "" {}
 }
 
-fn main() {
+pub fn main() {
     bar();
     baz();
 }
diff --git a/src/test/run-pass/issue-7519-match-unit-in-arg.rs b/src/test/run-pass/issue-7519-match-unit-in-arg.rs
index ba84dd44b2f..75123243f47 100644
--- a/src/test/run-pass/issue-7519-match-unit-in-arg.rs
+++ b/src/test/run-pass/issue-7519-match-unit-in-arg.rs
@@ -14,6 +14,6 @@
 
 fn foo(():()) { }
 
-fn main() {
+pub fn main() {
     foo(());
 }
diff --git a/src/test/run-pass/issue-7673-cast-generically-implemented-trait.rs b/src/test/run-pass/issue-7673-cast-generically-implemented-trait.rs
index 2f2b736294a..af8b453856b 100644
--- a/src/test/run-pass/issue-7673-cast-generically-implemented-trait.rs
+++ b/src/test/run-pass/issue-7673-cast-generically-implemented-trait.rs
@@ -14,7 +14,7 @@
 
 */
 
-fn main() {}
+pub fn main() {}
 
 trait A {}
 impl<T: 'static> A for T {}
diff --git a/src/test/run-pass/issue-7712.rs b/src/test/run-pass/issue-7712.rs
index 1ea8312ddd9..fa7d68cf921 100644
--- a/src/test/run-pass/issue-7712.rs
+++ b/src/test/run-pass/issue-7712.rs
@@ -20,6 +20,6 @@ struct MyStruct;
 
 impl TraitWithDefaultMethod for MyStruct { }
 
-fn main() {
+pub fn main() {
     MyStruct.method();
 }
diff --git a/src/test/run-pass/issue-8171-default-method-self-inherit-builtin-trait.rs b/src/test/run-pass/issue-8171-default-method-self-inherit-builtin-trait.rs
index be68d50c961..aaf2ecb7129 100644
--- a/src/test/run-pass/issue-8171-default-method-self-inherit-builtin-trait.rs
+++ b/src/test/run-pass/issue-8171-default-method-self-inherit-builtin-trait.rs
@@ -22,4 +22,4 @@ trait TragicallySelfIsNotSend: Send {
     }
 }
 
-fn main(){}
+pub fn main(){}
diff --git a/src/test/run-pass/issue-8248.rs b/src/test/run-pass/issue-8248.rs
index 48f34805fee..377b9ce262c 100644
--- a/src/test/run-pass/issue-8248.rs
+++ b/src/test/run-pass/issue-8248.rs
@@ -14,7 +14,7 @@ impl A for B {}
 
 fn foo(_: &mut A) {}
 
-fn main() {
+pub fn main() {
     let mut b = B;
     foo(&mut b as &mut A);
 }
diff --git a/src/test/run-pass/issue-8249.rs b/src/test/run-pass/issue-8249.rs
index ad37196dce4..bfc1d943690 100644
--- a/src/test/run-pass/issue-8249.rs
+++ b/src/test/run-pass/issue-8249.rs
@@ -20,6 +20,6 @@ fn foo(a: &mut A) {
     C{ foo: a };
 }
 
-fn main() {
+pub fn main() {
 }
 
diff --git a/src/test/run-pass/issue-8398.rs b/src/test/run-pass/issue-8398.rs
index 5e04c96af72..31ac2c46293 100644
--- a/src/test/run-pass/issue-8398.rs
+++ b/src/test/run-pass/issue-8398.rs
@@ -14,5 +14,5 @@ fn foo(a: &mut io::Writer) {
     a.write([])
 }
 
-fn main(){}
+pub fn main(){}
 
diff --git a/src/test/run-pass/issue-9047.rs b/src/test/run-pass/issue-9047.rs
index fc9c22fb82c..053d6aa3c90 100644
--- a/src/test/run-pass/issue-9047.rs
+++ b/src/test/run-pass/issue-9047.rs
@@ -16,4 +16,4 @@ fn decode() -> ~str {
     ~""
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/issue-9110.rs b/src/test/run-pass/issue-9110.rs
index 56f87f5e686..27c2ed9e5ad 100644
--- a/src/test/run-pass/issue-9110.rs
+++ b/src/test/run-pass/issue-9110.rs
@@ -19,4 +19,4 @@ macro_rules! silly_macro(
 
 silly_macro!()
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/let-destruct-ref.rs b/src/test/run-pass/let-destruct-ref.rs
index 7f3f9110b1c..fdb2805ae18 100644
--- a/src/test/run-pass/let-destruct-ref.rs
+++ b/src/test/run-pass/let-destruct-ref.rs
@@ -1,4 +1,4 @@
-fn main() {
+pub fn main() {
     let x = ~"hello";
     let ref y = x;
     assert_eq!(x.slice(0, x.len()), y.slice(0, y.len()));
diff --git a/src/test/run-pass/let-var-hygiene.rs b/src/test/run-pass/let-var-hygiene.rs
index 1e29d2e8969..93bb2ca98e8 100644
--- a/src/test/run-pass/let-var-hygiene.rs
+++ b/src/test/run-pass/let-var-hygiene.rs
@@ -10,7 +10,7 @@
 
 // shouldn't affect evaluation of $ex:
 macro_rules! bad_macro (($ex:expr) => ({let _x = 9; $ex}))
-fn main() {
+pub fn main() {
     let _x = 8;
     assert_eq!(bad_macro!(_x),8)
 }
diff --git a/src/test/run-pass/link-section.rs b/src/test/run-pass/link-section.rs
index ff1e4740394..a5ea32e5157 100644
--- a/src/test/run-pass/link-section.rs
+++ b/src/test/run-pass/link-section.rs
@@ -26,7 +26,7 @@ static magic: uint = 42;
 #[link_section="__DATA,__mut"]
 static mut frobulator: uint = 0xdeadbeef;
 
-fn main() {
+pub fn main() {
     unsafe {
         frobulator = 0xcafebabe;
         printfln!("%? %? %?", i_live_in_more_text(), magic, frobulator);
diff --git a/src/test/run-pass/lint-cstack.rs b/src/test/run-pass/lint-cstack.rs
index b9e61b47e22..80901475c04 100644
--- a/src/test/run-pass/lint-cstack.rs
+++ b/src/test/run-pass/lint-cstack.rs
@@ -23,5 +23,5 @@ trait A {
     }
 }
 
-fn main() {
+pub fn main() {
 }
diff --git a/src/test/run-pass/lint-non-camel-case-types-non-uppercase-statics-unicode.rs b/src/test/run-pass/lint-non-camel-case-types-non-uppercase-statics-unicode.rs
index 8c1dc366f23..e3a0c8417d0 100644
--- a/src/test/run-pass/lint-non-camel-case-types-non-uppercase-statics-unicode.rs
+++ b/src/test/run-pass/lint-non-camel-case-types-non-uppercase-statics-unicode.rs
@@ -18,4 +18,4 @@ struct ヒ;
 
 static ラ: uint = 0;
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/lint-non-uppercase-statics-lowercase-mut-statics.rs b/src/test/run-pass/lint-non-uppercase-statics-lowercase-mut-statics.rs
index 3a3648fbf6d..cf6640275ed 100644
--- a/src/test/run-pass/lint-non-uppercase-statics-lowercase-mut-statics.rs
+++ b/src/test/run-pass/lint-non-uppercase-statics-lowercase-mut-statics.rs
@@ -14,4 +14,4 @@
 
 static mut bar: int = 2;
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/macro-local-data-key.rs b/src/test/run-pass/macro-local-data-key.rs
index b53d7b36d79..23f418cfc69 100644
--- a/src/test/run-pass/macro-local-data-key.rs
+++ b/src/test/run-pass/macro-local-data-key.rs
@@ -16,7 +16,7 @@ mod bar {
     local_data_key!(pub baz: float)
 }
 
-fn main() {
+pub fn main() {
     local_data::get(foo, |x| assert!(x.is_none()));
     local_data::get(bar::baz, |y| assert!(y.is_none()));
 
diff --git a/src/test/run-pass/match-drop-strs-issue-4541.rs b/src/test/run-pass/match-drop-strs-issue-4541.rs
index 92095335fc4..e90d6b28626 100644
--- a/src/test/run-pass/match-drop-strs-issue-4541.rs
+++ b/src/test/run-pass/match-drop-strs-issue-4541.rs
@@ -22,6 +22,6 @@ fn parse_args() -> ~str {
     return ~""
 }
 
-fn main() {
+pub fn main() {
     io::println(parse_args());
 }
diff --git a/src/test/run-pass/match-in-macro.rs b/src/test/run-pass/match-in-macro.rs
index 83d10627d2e..671ec5a3965 100644
--- a/src/test/run-pass/match-in-macro.rs
+++ b/src/test/run-pass/match-in-macro.rs
@@ -20,6 +20,6 @@ macro_rules! match_inside_expansion(
     )
 )
 
-fn main() {
+pub fn main() {
     assert_eq!(match_inside_expansion!(),129);
 }
diff --git a/src/test/run-pass/match-pipe-binding.rs b/src/test/run-pass/match-pipe-binding.rs
index b4933773c03..6df4c812361 100644
--- a/src/test/run-pass/match-pipe-binding.rs
+++ b/src/test/run-pass/match-pipe-binding.rs
@@ -59,7 +59,7 @@ fn test5() {
     }
 }
 
-fn main() {
+pub fn main() {
     test1();
     test2();
     test3();
diff --git a/src/test/run-pass/match-range-static.rs b/src/test/run-pass/match-range-static.rs
index aa216b8d054..0bf0d6e41fa 100644
--- a/src/test/run-pass/match-range-static.rs
+++ b/src/test/run-pass/match-range-static.rs
@@ -1,7 +1,7 @@
 static s: int = 1;
 static e: int = 42;
 
-fn main() {
+pub fn main() {
     match 7 {
         s..e => (),
         _ => (),
diff --git a/src/test/run-pass/match-vec-rvalue.rs b/src/test/run-pass/match-vec-rvalue.rs
index 5f68b0e9a69..a6e61fbacd4 100644
--- a/src/test/run-pass/match-vec-rvalue.rs
+++ b/src/test/run-pass/match-vec-rvalue.rs
@@ -1,6 +1,6 @@
 // Tests that matching rvalues with drops does not crash.
 
-fn main() {
+pub fn main() {
     match ~[1, 2, 3] {
         x => {
             assert_eq!(x.len(), 3);
diff --git a/src/test/run-pass/mid-path-type-params.rs b/src/test/run-pass/mid-path-type-params.rs
index 1bc37a035e0..09435962ef7 100644
--- a/src/test/run-pass/mid-path-type-params.rs
+++ b/src/test/run-pass/mid-path-type-params.rs
@@ -26,7 +26,7 @@ impl Trait<int> for S2 {
     }
 }
 
-fn main() {
+pub fn main() {
     let _ = S::<int>::new::<float>(1, 1.0);
     let _: S2 = Trait::<int>::new::<float>(1, 1.0);
 }
diff --git a/src/test/run-pass/move-out-of-field.rs b/src/test/run-pass/move-out-of-field.rs
index 93ea35e2629..6cf207e5cbc 100644
--- a/src/test/run-pass/move-out-of-field.rs
+++ b/src/test/run-pass/move-out-of-field.rs
@@ -12,7 +12,7 @@ fn to_str(sb: StringBuffer) -> ~str {
     sb.s
 }
 
-fn main() {
+pub fn main() {
     let mut sb = StringBuffer {s: ~""};
     sb.append("Hello, ");
     sb.append("World!");
diff --git a/src/test/run-pass/multibyte.rs b/src/test/run-pass/multibyte.rs
index 417662b65c6..a28008f3e0b 100644
--- a/src/test/run-pass/multibyte.rs
+++ b/src/test/run-pass/multibyte.rs
@@ -9,6 +9,6 @@
 // except according to those terms.
 
 // Test that multibyte characters don't crash the compiler
-fn main() {
+pub fn main() {
     println("마이너스 사인이 없으면");
 }
diff --git a/src/test/run-pass/nested-enum-same-names.rs b/src/test/run-pass/nested-enum-same-names.rs
index 919b4b59dca..33c4ed6234e 100644
--- a/src/test/run-pass/nested-enum-same-names.rs
+++ b/src/test/run-pass/nested-enum-same-names.rs
@@ -30,4 +30,4 @@ impl Foo {
     }
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/nested-function-names-issue-8587.rs b/src/test/run-pass/nested-function-names-issue-8587.rs
index 054e0e3ae26..f697f0b59d6 100644
--- a/src/test/run-pass/nested-function-names-issue-8587.rs
+++ b/src/test/run-pass/nested-function-names-issue-8587.rs
@@ -41,7 +41,7 @@ impl X {
     }
 }
 
-fn main() {
+pub fn main() {
     let n = X;
     assert_eq!(n.f(), 0);
     assert_eq!(n.g(), 1);
diff --git a/src/test/run-pass/newtype-struct-drop-run.rs b/src/test/run-pass/newtype-struct-drop-run.rs
index 578f80f1ca5..54c4c06c548 100644
--- a/src/test/run-pass/newtype-struct-drop-run.rs
+++ b/src/test/run-pass/newtype-struct-drop-run.rs
@@ -19,7 +19,7 @@ impl Drop for Foo {
     }
 }
 
-fn main() {
+pub fn main() {
     let y = @mut 32;
     {
         let _x = Foo(y);
diff --git a/src/test/run-pass/newtype-temporary.rs b/src/test/run-pass/newtype-temporary.rs
index d2407f3d605..03e5d926761 100644
--- a/src/test/run-pass/newtype-temporary.rs
+++ b/src/test/run-pass/newtype-temporary.rs
@@ -14,6 +14,6 @@ fn foo() -> Foo {
     Foo(42)
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(*foo(), 42);
 }
diff --git a/src/test/run-pass/objects-coerce-freeze-borrored.rs b/src/test/run-pass/objects-coerce-freeze-borrored.rs
index 4dda5ca556e..0bdc36750ae 100644
--- a/src/test/run-pass/objects-coerce-freeze-borrored.rs
+++ b/src/test/run-pass/objects-coerce-freeze-borrored.rs
@@ -39,7 +39,7 @@ fn do_it_imm(obj: &Foo, v: uint) {
     assert_eq!(v, y);
 }
 
-fn main() {
+pub fn main() {
     let mut x = 22_u;
     let obj = &mut x as &mut Foo;
     do_it_mut(obj);
diff --git a/src/test/run-pass/objects-coerce-from-managed-to-borrowed.rs b/src/test/run-pass/objects-coerce-from-managed-to-borrowed.rs
index fe4eb2ea48e..40c854879bf 100644
--- a/src/test/run-pass/objects-coerce-from-managed-to-borrowed.rs
+++ b/src/test/run-pass/objects-coerce-from-managed-to-borrowed.rs
@@ -37,7 +37,7 @@ fn do_it_imm(obj: &Foo, v: uint) {
     assert_eq!(v, y);
 }
 
-fn main() {
+pub fn main() {
     let x = @mut 22u as @mut Foo;
     do_it_mut(x);
     do_it_imm(x, 23u);
diff --git a/src/test/run-pass/owned-implies-static.rs b/src/test/run-pass/owned-implies-static.rs
index 4ee55239476..f327f6bc0dc 100644
--- a/src/test/run-pass/owned-implies-static.rs
+++ b/src/test/run-pass/owned-implies-static.rs
@@ -10,6 +10,6 @@
 
 fn f<T: 'static>(_x: T) {}
 
-fn main() {
+pub fn main() {
     f(~5);
 }
diff --git a/src/test/run-pass/packed-struct-borrow-element.rs b/src/test/run-pass/packed-struct-borrow-element.rs
index a331b80a894..1434e1da4c7 100644
--- a/src/test/run-pass/packed-struct-borrow-element.rs
+++ b/src/test/run-pass/packed-struct-borrow-element.rs
@@ -14,7 +14,7 @@ struct Foo {
     baz: uint
 }
 
-fn main() {
+pub fn main() {
     let foo = Foo { bar: 1, baz: 2 };
     let brw = &foo.baz;
 
diff --git a/src/test/run-pass/packed-struct-generic-layout.rs b/src/test/run-pass/packed-struct-generic-layout.rs
index 18b3cf2f91e..91b49944be2 100644
--- a/src/test/run-pass/packed-struct-generic-layout.rs
+++ b/src/test/run-pass/packed-struct-generic-layout.rs
@@ -17,7 +17,7 @@ struct S<T, S> {
     c: S
 }
 
-fn main() {
+pub fn main() {
     unsafe {
         let s = S { a: 0xff_ff_ff_ffu32, b: 1, c: 0xaa_aa_aa_aa as i32 };
         let transd : [u8, .. 9] = cast::transmute(s);
diff --git a/src/test/run-pass/packed-struct-generic-size.rs b/src/test/run-pass/packed-struct-generic-size.rs
index 98e922c3288..798acc646be 100644
--- a/src/test/run-pass/packed-struct-generic-size.rs
+++ b/src/test/run-pass/packed-struct-generic-size.rs
@@ -17,7 +17,7 @@ struct S<T, S> {
     c: S
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(sys::size_of::<S<u8, u8>>(), 3);
 
     assert_eq!(sys::size_of::<S<u64, u16>>(), 11);
diff --git a/src/test/run-pass/packed-struct-layout.rs b/src/test/run-pass/packed-struct-layout.rs
index ea51bbcea32..f361db4a4b5 100644
--- a/src/test/run-pass/packed-struct-layout.rs
+++ b/src/test/run-pass/packed-struct-layout.rs
@@ -22,7 +22,7 @@ struct S5 {
     b: u32
 }
 
-fn main() {
+pub fn main() {
     unsafe {
         let s4 = S4 { a: 1, b: [2,3,4] };
         let transd : [u8, .. 4] = cast::transmute(s4);
diff --git a/src/test/run-pass/packed-struct-match.rs b/src/test/run-pass/packed-struct-match.rs
index 15e7b6b0ce0..27ab2c83e55 100644
--- a/src/test/run-pass/packed-struct-match.rs
+++ b/src/test/run-pass/packed-struct-match.rs
@@ -14,7 +14,7 @@ struct Foo {
     baz: uint
 }
 
-fn main() {
+pub fn main() {
     let foo = Foo { bar: 1, baz: 2 };
     match foo {
         Foo {bar, baz} => {
diff --git a/src/test/run-pass/packed-struct-size.rs b/src/test/run-pass/packed-struct-size.rs
index 6dcb1f04a4d..f0175da9cba 100644
--- a/src/test/run-pass/packed-struct-size.rs
+++ b/src/test/run-pass/packed-struct-size.rs
@@ -51,7 +51,7 @@ struct S7_Option {
 }
 
 
-fn main() {
+pub fn main() {
     assert_eq!(sys::size_of::<S4>(), 4);
     assert_eq!(sys::size_of::<S5>(), 5);
     assert_eq!(sys::size_of::<S13_str>(), 13 + sys::size_of::<~str>());
diff --git a/src/test/run-pass/packed-struct-vec.rs b/src/test/run-pass/packed-struct-vec.rs
index e66c4619b3c..6cf519a387f 100644
--- a/src/test/run-pass/packed-struct-vec.rs
+++ b/src/test/run-pass/packed-struct-vec.rs
@@ -19,7 +19,7 @@ struct Foo {
     baz: u64
 }
 
-fn main() {
+pub fn main() {
     let foos = [Foo { bar: 1, baz: 2 }, .. 10];
 
     assert_eq!(sys::size_of::<[Foo, .. 10]>(), 90);
diff --git a/src/test/run-pass/packed-tuple-struct-layout.rs b/src/test/run-pass/packed-tuple-struct-layout.rs
index 3691f475098..b3261faddfa 100644
--- a/src/test/run-pass/packed-tuple-struct-layout.rs
+++ b/src/test/run-pass/packed-tuple-struct-layout.rs
@@ -16,7 +16,7 @@ struct S4(u8,[u8, .. 3]);
 #[packed]
 struct S5(u8,u32);
 
-fn main() {
+pub fn main() {
     unsafe {
         let s4 = S4(1, [2,3,4]);
         let transd : [u8, .. 4] = cast::transmute(s4);
diff --git a/src/test/run-pass/packed-tuple-struct-size.rs b/src/test/run-pass/packed-tuple-struct-size.rs
index c8f2dda61db..dd38a6b7d12 100644
--- a/src/test/run-pass/packed-tuple-struct-size.rs
+++ b/src/test/run-pass/packed-tuple-struct-size.rs
@@ -30,7 +30,7 @@ struct S3_Foo(u8, u16, Foo);
 #[packed]
 struct S7_Option(f32, u8, u16, Option<@mut f64>);
 
-fn main() {
+pub fn main() {
     assert_eq!(sys::size_of::<S4>(), 4);
 
     assert_eq!(sys::size_of::<S5>(), 5);
diff --git a/src/test/run-pass/pub-extern-privacy.rs b/src/test/run-pass/pub-extern-privacy.rs
index 360ac75b3e7..e4e260ab36e 100644
--- a/src/test/run-pass/pub-extern-privacy.rs
+++ b/src/test/run-pass/pub-extern-privacy.rs
@@ -7,7 +7,7 @@ mod a {
 }
 
 #[fixed_stack_segment] #[inline(never)]
-fn main() {
+pub fn main() {
     unsafe {
         a::free(transmute(0));
     }
diff --git a/src/test/run-pass/region-dependent-autofn.rs b/src/test/run-pass/region-dependent-autofn.rs
index 82d4115d66d..bce2159cc7b 100644
--- a/src/test/run-pass/region-dependent-autofn.rs
+++ b/src/test/run-pass/region-dependent-autofn.rs
@@ -17,6 +17,6 @@ fn both<'r>(v: &'r fn()) -> &'r fn() {
     subslice(subslice(v))
 }
 
-fn main() {
+pub fn main() {
     both(main);
 }
diff --git a/src/test/run-pass/region-dependent-autoslice.rs b/src/test/run-pass/region-dependent-autoslice.rs
index 10c2988fc9f..dab881549c4 100644
--- a/src/test/run-pass/region-dependent-autoslice.rs
+++ b/src/test/run-pass/region-dependent-autoslice.rs
@@ -17,7 +17,7 @@ fn both<'r>(v: &'r [uint]) -> &'r [uint] {
     subslice1(subslice1(v))
 }
 
-fn main() {
+pub fn main() {
     let v = ~[1,2,3];
     both(v);
 }
diff --git a/src/test/run-pass/send_str_hashmap.rs b/src/test/run-pass/send_str_hashmap.rs
index a33cb99682b..1e3bd5897a9 100644
--- a/src/test/run-pass/send_str_hashmap.rs
+++ b/src/test/run-pass/send_str_hashmap.rs
@@ -19,7 +19,7 @@ use std::to_str::ToStr;
 use std::hashmap::HashMap;
 use std::option::Some;
 
-fn main() {
+pub fn main() {
     let mut map: HashMap<SendStr, uint> = HashMap::new();
     assert!(map.insert(SendStrStatic("foo"), 42));
     assert!(!map.insert(SendStrOwned(~"foo"), 42));
diff --git a/src/test/run-pass/send_str_treemap.rs b/src/test/run-pass/send_str_treemap.rs
index 7094dca7c4d..23ad0ac3091 100644
--- a/src/test/run-pass/send_str_treemap.rs
+++ b/src/test/run-pass/send_str_treemap.rs
@@ -21,7 +21,7 @@ use std::to_str::ToStr;
 use self::extra::treemap::TreeMap;
 use std::option::Some;
 
-fn main() {
+pub fn main() {
     let mut map: TreeMap<SendStr, uint> = TreeMap::new();
     assert!(map.insert(SendStrStatic("foo"), 42));
     assert!(!map.insert(SendStrOwned(~"foo"), 42));
diff --git a/src/test/run-pass/simd-binop.rs b/src/test/run-pass/simd-binop.rs
index 1e6c8b07fa0..74502b54d8e 100644
--- a/src/test/run-pass/simd-binop.rs
+++ b/src/test/run-pass/simd-binop.rs
@@ -22,7 +22,7 @@ fn test_float(e: f32) -> f32 {
     e2
 }
 
-fn main() {
+pub fn main() {
     assert_eq!(test_int(3i32), 9i32);
     assert_eq!(test_float(3f32), 9f32);
 }
diff --git a/src/test/run-pass/simd-type.rs b/src/test/run-pass/simd-type.rs
index c3bcc9d0b7a..643daad397c 100644
--- a/src/test/run-pass/simd-type.rs
+++ b/src/test/run-pass/simd-type.rs
@@ -6,4 +6,4 @@ struct RGBA {
     a: f32
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/sized-borrowed-pointer.rs b/src/test/run-pass/sized-borrowed-pointer.rs
index 90127918002..348b7562f84 100644
--- a/src/test/run-pass/sized-borrowed-pointer.rs
+++ b/src/test/run-pass/sized-borrowed-pointer.rs
@@ -12,4 +12,4 @@
 
 fn bar<T: Sized>() { }
 fn foo<T>() { bar::<&T>() }
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/sized-owned-pointer.rs b/src/test/run-pass/sized-owned-pointer.rs
index fe9c63621b2..0c05fdd616b 100644
--- a/src/test/run-pass/sized-owned-pointer.rs
+++ b/src/test/run-pass/sized-owned-pointer.rs
@@ -12,4 +12,4 @@
 
 fn bar<T: Sized>() { }
 fn foo<T>() { bar::<~T>() }
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/static-assert.rs b/src/test/run-pass/static-assert.rs
index 81b0c9ff28c..93c8d67c9c0 100644
--- a/src/test/run-pass/static-assert.rs
+++ b/src/test/run-pass/static-assert.rs
@@ -10,5 +10,5 @@ static d: bool = 1 != 2;
 #[static_assert]
 static f: bool = (4/2) == 2;
 
-fn main() {
+pub fn main() {
 }
diff --git a/src/test/run-pass/struct-update-moves-and-copies.rs b/src/test/run-pass/struct-update-moves-and-copies.rs
index f257b9ac0de..a0fb31e64bf 100644
--- a/src/test/run-pass/struct-update-moves-and-copies.rs
+++ b/src/test/run-pass/struct-update-moves-and-copies.rs
@@ -94,7 +94,7 @@ fn test2() {
     assert_eq!(c.noncopy.v, 22);
 }
 
-fn main() {
+pub fn main() {
     test0();
     test1();
     test2();
diff --git a/src/test/run-pass/syntax-extension-bytes.rs b/src/test/run-pass/syntax-extension-bytes.rs
index bdaae65bc3c..5b66d5f28a9 100644
--- a/src/test/run-pass/syntax-extension-bytes.rs
+++ b/src/test/run-pass/syntax-extension-bytes.rs
@@ -10,7 +10,7 @@
 
 static static_vec: &'static [u8] = bytes!("abc", 0xFF, '!');
 
-fn main() {
+pub fn main() {
     let vec = bytes!("abc");
     assert_eq!(vec, &[97_u8, 98_u8, 99_u8]);
 
diff --git a/src/test/run-pass/tag-variant-disr-type-mismatch.rs b/src/test/run-pass/tag-variant-disr-type-mismatch.rs
index 514f868db54..3d63acd5b83 100644
--- a/src/test/run-pass/tag-variant-disr-type-mismatch.rs
+++ b/src/test/run-pass/tag-variant-disr-type-mismatch.rs
@@ -13,4 +13,4 @@ enum color {
     blue = 2,
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/trait-bounds-basic.rs b/src/test/run-pass/trait-bounds-basic.rs
index cc2c12e4109..9fef70a4dda 100644
--- a/src/test/run-pass/trait-bounds-basic.rs
+++ b/src/test/run-pass/trait-bounds-basic.rs
@@ -29,4 +29,4 @@ fn e(x: ~Foo) { // sugar for ~Foo:Owned
     b(x);
 }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/trait-bounds-recursion.rs b/src/test/run-pass/trait-bounds-recursion.rs
index 043aa358fa0..49f8999cd45 100644
--- a/src/test/run-pass/trait-bounds-recursion.rs
+++ b/src/test/run-pass/trait-bounds-recursion.rs
@@ -24,4 +24,4 @@ trait C {
     fn id<T:J<T>>(x:T) -> T { x.j() }
 }
 
-fn main() { }
+pub fn main() { }
diff --git a/src/test/run-pass/trait-object-generics.rs b/src/test/run-pass/trait-object-generics.rs
index 12b6af29520..3629316e14d 100644
--- a/src/test/run-pass/trait-object-generics.rs
+++ b/src/test/run-pass/trait-object-generics.rs
@@ -40,7 +40,7 @@ impl<V> Trait<u8,V> for () {
     fn method(&self, _x: Type<(u8,V)>) -> int { 0 }
 }
 
-fn main () {
+pub fn main () {
     let a = @() as @Trait<u8, u8>;
     assert_eq!(a.method(Constant), 0);
 }
diff --git a/src/test/run-pass/trait-with-bounds-default.rs b/src/test/run-pass/trait-with-bounds-default.rs
index 689df437fb4..ba2f32a0499 100644
--- a/src/test/run-pass/trait-with-bounds-default.rs
+++ b/src/test/run-pass/trait-with-bounds-default.rs
@@ -34,7 +34,7 @@ impl<T: Clone> Getter<T> for Option<T> {
 }
 
 
-fn main() {
+pub fn main() {
     assert_eq!(3.do_get2(), (3, 3));
     assert_eq!(Some(~"hi").do_get2(), (~"hi", ~"hi"));
 }
diff --git a/src/test/run-pass/traits-default-method-mut.rs b/src/test/run-pass/traits-default-method-mut.rs
index 0c5be72432c..4b217ba0ebb 100644
--- a/src/test/run-pass/traits-default-method-mut.rs
+++ b/src/test/run-pass/traits-default-method-mut.rs
@@ -15,4 +15,4 @@ trait Foo {
     fn foo(&self, mut v: int) { v = 1; }
 }
 
-fn main() {}
+pub fn main() {}
diff --git a/src/test/run-pass/transmute-non-immediate-to-immediate.rs b/src/test/run-pass/transmute-non-immediate-to-immediate.rs
index 2f097bc90a9..9cdcd875952 100644
--- a/src/test/run-pass/transmute-non-immediate-to-immediate.rs
+++ b/src/test/run-pass/transmute-non-immediate-to-immediate.rs
@@ -11,7 +11,7 @@
 // Issue #7988
 // Transmuting non-immediate type to immediate type
 
-fn main() {
+pub fn main() {
     unsafe {
         ::std::cast::transmute::<[int,..1],int>([1])
     };
diff --git a/src/test/run-pass/tuple-struct-constructor-pointer.rs b/src/test/run-pass/tuple-struct-constructor-pointer.rs
index dbb5db649ef..e51e6ffd52a 100644
--- a/src/test/run-pass/tuple-struct-constructor-pointer.rs
+++ b/src/test/run-pass/tuple-struct-constructor-pointer.rs
@@ -13,7 +13,7 @@ struct Foo(int);
 #[deriving(Eq)]
 struct Bar(int, int);
 
-fn main() {
+pub fn main() {
     let f: extern fn(int) -> Foo = Foo;
     let g: extern fn(int, int) -> Bar = Bar;
     assert_eq!(f(42), Foo(42));
diff --git a/src/test/run-pass/typeck-macro-interaction-issue-8852.rs b/src/test/run-pass/typeck-macro-interaction-issue-8852.rs
index a1368365c40..19a3c52dea8 100644
--- a/src/test/run-pass/typeck-macro-interaction-issue-8852.rs
+++ b/src/test/run-pass/typeck-macro-interaction-issue-8852.rs
@@ -17,6 +17,6 @@ macro_rules! test(
 
 test!(x + y)
 
-fn main() {
+pub fn main() {
     foo(A(1), A(2));
-}
\ No newline at end of file
+}
diff --git a/src/test/run-pass/unfold-cross-crate.rs b/src/test/run-pass/unfold-cross-crate.rs
index 42e680d95e1..0b8447aa0cd 100644
--- a/src/test/run-pass/unfold-cross-crate.rs
+++ b/src/test/run-pass/unfold-cross-crate.rs
@@ -13,7 +13,7 @@ use std::iter::*;
 // Unfold had a bug with 'self that mean it didn't work
 // cross-crate
 
-fn main() {
+pub fn main() {
     fn count(st: &mut uint) -> Option<uint> {
         if *st < 10 {
             let ret = Some(*st);