diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2011-07-13 17:26:06 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2011-07-13 18:30:53 -0700 |
| commit | f26ca025dee246500552076cc650137e12c04464 (patch) | |
| tree | 9a48b4b129b4f4293f352934ab6f4a8329c05387 /src/comp/driver | |
| parent | 196753e4c3a4848ce92a84c596c385dc00f66578 (diff) | |
| download | rust-f26ca025dee246500552076cc650137e12c04464.tar.gz rust-f26ca025dee246500552076cc650137e12c04464.zip | |
Make resolve and the typechecker check for a main fn of the
correct type This means if a non-library program leaves out the main program, the error gets caught earlier than link. Closes #626.
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/rustc.rs | 2 | ||||
| -rw-r--r-- | src/comp/driver/session.rs | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index a8c9738eb4a..a6409209b75 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -361,7 +361,7 @@ fn build_session(@session::options sopts) -> session::session { auto cstore = cstore::mk_cstore(); ret session::session(target_cfg, sopts, cstore, @rec(cm=codemap::new_codemap(), mutable next_id=0), - 0u); + none, 0u); } fn parse_pretty(session::session sess, &str name) -> pp_mode { diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs index 8da3e40baa6..4adcb7cee5f 100644 --- a/src/comp/driver/session.rs +++ b/src/comp/driver/session.rs @@ -1,5 +1,6 @@ import syntax::ast; +import syntax::ast::node_id; import syntax::codemap; import codemap::span; import syntax::ast::ty_mach; @@ -49,6 +50,8 @@ obj session(@config targ_cfg, @options opts, metadata::cstore::cstore cstore, parse_sess parse_sess, + // For a library crate, this is always none + mutable option::t[node_id] main_fn, mutable uint err_count) { fn get_targ_cfg() -> @config { ret targ_cfg; } fn get_opts() -> @options { ret opts; } @@ -110,6 +113,10 @@ obj session(@config targ_cfg, fn span_str(span sp) -> str { ret codemap::span_to_str(sp, self.get_codemap()); } + fn set_main_id(node_id d) { + main_fn = some(d); + } + fn get_main_id() -> option::t[node_id] { main_fn } } // Local Variables: // fill-column: 78; |
