diff options
| author | Graydon Hoare <[email protected]> | 2011-01-03 20:41:11 -0800 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-01-03 20:41:11 -0800 |
| commit | d1517471fbe45781a39afed6367944491ce8f4b1 (patch) | |
| tree | a53686b741ec1e56159062d9dcc94dfb394cd08b /src/comp/driver | |
| parent | Add _str.starts_with and ends_with. (diff) | |
| download | rust-d1517471fbe45781a39afed6367944491ce8f4b1.tar.xz rust-d1517471fbe45781a39afed6367944491ce8f4b1.zip | |
Split driver between parsing source files and crate files, by extension. Add dummy function for crate files.
Diffstat (limited to 'src/comp/driver')
| -rw-r--r-- | src/comp/driver/rustc.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs index 6d4cd104..752ab999 100644 --- a/src/comp/driver/rustc.rs +++ b/src/comp/driver/rustc.rs @@ -13,10 +13,22 @@ import std.option.none; import std._str; import std._vec; +impure fn parse_input(session.session sess, + parser.parser p, + str input) -> @front.ast.crate { + if (_str.ends_with(input, ".rc")) { + ret parser.parse_crate_from_crate_file(p); + } else if (_str.ends_with(input, ".rs")) { + ret parser.parse_crate_from_source_file(p); + } + sess.err("unknown unput file type: " + input); + fail; +} + impure fn compile_input(session.session sess, str input, str output, bool shared) { auto p = parser.new_parser(sess, 0, input); - auto crate = parser.parse_crate(p); + auto crate = parse_input(sess, p, input); crate = resolve.resolve_crate(sess, crate); crate = typeck.check_crate(sess, crate); trans.trans_crate(sess, crate, output, shared); |