diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-10-03 19:16:27 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-10-04 15:07:49 -0700 |
| commit | edc317b8212fe1c29b5e7e2e4e260b9a4d72b447 (patch) | |
| tree | 3bdc8d5103affca408a0ff2bc2325f4869ecb375 /src/rustc/middle | |
| parent | e3f458e6390d66b9634e7dce4aa7e91c091aebc6 (diff) | |
Remove arg vectors from main functions. Stop supporting them.
Diffstat (limited to 'src/rustc/middle')
| -rw-r--r-- | src/rustc/middle/trans/base.rs | 20 | ||||
| -rw-r--r-- | src/rustc/middle/typeck.rs | 6 |
2 files changed, 6 insertions, 20 deletions
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs index 0631d7b1ea4..ce596586ddc 100644 --- a/src/rustc/middle/trans/base.rs +++ b/src/rustc/middle/trans/base.rs @@ -1953,32 +1953,23 @@ fn register_fn_fuller(ccx: @crate_ctxt, sp: span, path: path, ast_map::path_to_str(path, ccx.sess.parse_sess.interner)); let is_main = is_main_name(path) && !ccx.sess.building_library; - if is_main { create_main_wrapper(ccx, sp, llfn, node_type); } + if is_main { create_main_wrapper(ccx, sp, llfn); } llfn } // Create a _rust_main(args: ~[str]) function which will be called from the // runtime rust_start function -fn create_main_wrapper(ccx: @crate_ctxt, sp: span, main_llfn: ValueRef, - main_node_type: ty::t) { +fn create_main_wrapper(ccx: @crate_ctxt, sp: span, main_llfn: ValueRef) { if ccx.main_fn != None::<ValueRef> { ccx.sess.span_fatal(sp, ~"multiple 'main' functions"); } - let main_takes_argv = - // invariant! - match ty::get(main_node_type).sty { - ty::ty_fn(ref fn_ty) => fn_ty.sig.inputs.len() != 0u, - _ => ccx.sess.span_fatal(sp, ~"main has a non-function type") - }; - - let llfn = create_main(ccx, main_llfn, main_takes_argv); + let llfn = create_main(ccx, main_llfn); ccx.main_fn = Some(llfn); create_entry_fn(ccx, llfn); - fn create_main(ccx: @crate_ctxt, main_llfn: ValueRef, - takes_argv: bool) -> ValueRef { + fn create_main(ccx: @crate_ctxt, main_llfn: ValueRef) -> ValueRef { let unit_ty = ty::mk_estr(ccx.tcx, ty::vstore_uniq); let vecarg_ty: ty::arg = {mode: ast::expl(ast::by_val), @@ -1998,9 +1989,6 @@ fn create_main_wrapper(ccx: @crate_ctxt, sp: span, main_llfn: ValueRef, let lloutputarg = llvm::LLVMGetParam(llfdecl, 0 as c_uint); let llenvarg = llvm::LLVMGetParam(llfdecl, 1 as c_uint); let mut args = ~[lloutputarg, llenvarg]; - if takes_argv { - args.push(llvm::LLVMGetParam(llfdecl, 2 as c_uint)); - } Call(bcx, main_llfn, args); build_return(bcx); diff --git a/src/rustc/middle/typeck.rs b/src/rustc/middle/typeck.rs index e0b2ca5ae64..3a9471139f9 100644 --- a/src/rustc/middle/typeck.rs +++ b/src/rustc/middle/typeck.rs @@ -301,14 +301,12 @@ fn check_main_fn_ty(ccx: @crate_ctxt, } let mut ok = ty::type_is_nil(fn_ty.sig.output); let num_args = vec::len(fn_ty.sig.inputs); - ok &= num_args == 0u || num_args == 1u && - arg_is_argv_ty(tcx, fn_ty.sig.inputs[0]); + ok &= num_args == 0u; if !ok { tcx.sess.span_err( main_span, fmt!("Wrong type in main function: found `%s`, \ - expected `extern fn(++v: ~[~str]) -> ()` \ - or `extern fn() -> ()`", + expected `fn() -> ()`", ty_to_str(tcx, main_t))); } } |
