about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-03-11 20:55:19 -0700
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-03-11 20:55:19 -0700
commit664d71f1f0c0e7ec70c6c521117bde95e027bfcf (patch)
tree64494a4dff86e3b92e344972f01f3c18ed086a3d
parentfde4c1efbbe2c3fbd29b50a9fe61283714cd8769 (diff)
downloadrust-664d71f1f0c0e7ec70c6c521117bde95e027bfcf.tar.gz
rust-664d71f1f0c0e7ec70c6c521117bde95e027bfcf.zip
Improve a typechecker error message (wrong type for main())
As per #1903, state what type is expected for main().

Closes #1903
-rw-r--r--src/rustc/middle/typeck.rs9
-rw-r--r--src/test/compile-fail/bad-main.rs2
-rw-r--r--src/test/compile-fail/main-wrong-type-2.rs2
-rw-r--r--src/test/compile-fail/main-wrong-type.rs2
4 files changed, 8 insertions, 7 deletions
diff --git a/src/rustc/middle/typeck.rs b/src/rustc/middle/typeck.rs
index 7bc779429fb..36511d88ef4 100644
--- a/src/rustc/middle/typeck.rs
+++ b/src/rustc/middle/typeck.rs
@@ -3122,10 +3122,11 @@ fn check_main_fn_ty(tcx: ty::ctxt, main_id: ast::node_id, main_span: span) {
         ok &= num_args == 0u || num_args == 1u &&
               arg_is_argv_ty(tcx, inputs[0]);
         if !ok {
-            tcx.sess.span_err(main_span,
-                              "wrong type in main function: found `" +
-                                  ty_to_str(tcx, main_t) + "`");
-        }
+                tcx.sess.span_err(main_span,
+                   #fmt("Wrong type in main function: found `%s`, \
+                   expecting `native fn([str]) -> ()` or `native fn() -> ()`",
+                         ty_to_str(tcx, main_t)));
+         }
       }
       _ {
         tcx.sess.span_bug(main_span,
diff --git a/src/test/compile-fail/bad-main.rs b/src/test/compile-fail/bad-main.rs
index 725f88129b9..06bcbf5d9c2 100644
--- a/src/test/compile-fail/bad-main.rs
+++ b/src/test/compile-fail/bad-main.rs
@@ -1,3 +1,3 @@
-// error-pattern:wrong type in main function
+// error-pattern:expecting `native fn([str])
 
 fn main(x: int) { }
diff --git a/src/test/compile-fail/main-wrong-type-2.rs b/src/test/compile-fail/main-wrong-type-2.rs
index b5ba3e2a7f8..60ac04301ad 100644
--- a/src/test/compile-fail/main-wrong-type-2.rs
+++ b/src/test/compile-fail/main-wrong-type-2.rs
@@ -1,3 +1,3 @@
 fn main() -> char {
-//!^ ERROR wrong type in main function: found `native fn() -> char`
+//!^ ERROR Wrong type in main function: found `native fn() -> char`
 }
diff --git a/src/test/compile-fail/main-wrong-type.rs b/src/test/compile-fail/main-wrong-type.rs
index 5cb88682597..086cd6d8da9 100644
--- a/src/test/compile-fail/main-wrong-type.rs
+++ b/src/test/compile-fail/main-wrong-type.rs
@@ -1,3 +1,3 @@
 fn main(foo: {x: int, y: int}) {
-//!^ ERROR wrong type in main function: found `native fn({x: int,y: int})`
+//!^ ERROR Wrong type in main function: found `native fn({x: int,y: int})`
 }