summary refs log tree commit diff
path: root/src/comp/front
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-03-01 15:57:55 -0800
committerGraydon Hoare <graydon@mozilla.com>2011-03-01 15:57:55 -0800
commit348c77c31b7dcd5be85438dfcf4292f7e0951dd6 (patch)
treeaae201cf042a02a7c3dba3fa9dfc508ac881c6c0 /src/comp/front
parent0761c5f4626153eba8478c66f93ba27e021f4dc2 (diff)
downloadrust-348c77c31b7dcd5be85438dfcf4292f7e0951dd6.tar.gz
rust-348c77c31b7dcd5be85438dfcf4292f7e0951dd6.zip
Populate default compilation environment as in rustboot.
Diffstat (limited to 'src/comp/front')
-rw-r--r--src/comp/front/eval.rs2
-rw-r--r--src/comp/front/parser.rs11
2 files changed, 10 insertions, 3 deletions
diff --git a/src/comp/front/eval.rs b/src/comp/front/eval.rs
index ab8d5d32d98..cae72b1e817 100644
--- a/src/comp/front/eval.rs
+++ b/src/comp/front/eval.rs
@@ -393,7 +393,7 @@ impure fn eval_crate_directive(parser p,
 
             auto full_path = prefix + std.os.path_sep() + file_path;
 
-            auto p0 = new_parser(p.get_session(), 0, full_path);
+            auto p0 = new_parser(p.get_session(), e, 0, full_path);
             auto m0 = parse_mod_items(p0, token.EOF);
             auto im = ast.item_mod(id, m0, p.next_def_id());
             auto i = @spanned(cdir.span, cdir.span, im);
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs
index 32bcf6efe76..4ffa6f92346 100644
--- a/src/comp/front/parser.rs
+++ b/src/comp/front/parser.rs
@@ -31,15 +31,18 @@ state type parser =
           impure fn restrict(restriction r);
           fn get_restriction() -> restriction;
           fn get_file_type() -> file_type;
+          fn get_env() -> eval.env;
           fn get_session() -> session.session;
           fn get_span() -> common.span;
           fn next_def_id() -> ast.def_id;
     };
 
 impure fn new_parser(session.session sess,
+                     eval.env env,
                      ast.crate_num crate,
                      str path) -> parser {
     state obj stdio_parser(session.session sess,
+                           eval.env env,
                            file_type ftype,
                            mutable token.token tok,
                            mutable common.pos lo,
@@ -93,6 +96,10 @@ impure fn new_parser(session.session sess,
                 ret ftype;
             }
 
+            fn get_env() -> eval.env {
+                ret env;
+            }
+
         }
     auto ftype = SOURCE_FILE;
     if (_str.ends_with(path, ".rc")) {
@@ -101,7 +108,7 @@ impure fn new_parser(session.session sess,
     auto srdr = io.new_stdio_reader(path);
     auto rdr = lexer.new_reader(srdr, path);
     auto npos = rdr.get_curr_pos();
-    ret stdio_parser(sess, ftype, lexer.next_token(rdr),
+    ret stdio_parser(sess, env, ftype, lexer.next_token(rdr),
                      npos, npos, 0, UNRESTRICTED, crate, rdr);
 }
 
@@ -2279,7 +2286,7 @@ impure fn parse_crate_from_crate_file(parser p) -> @ast.crate {
     auto hi = lo;
     auto prefix = std.path.dirname(lo.filename);
     auto cdirs = parse_crate_directives(p, token.EOF);
-    auto m = eval.eval_crate_directives_to_mod(p, eval.mk_env(),
+    auto m = eval.eval_crate_directives_to_mod(p, p.get_env(),
                                                cdirs, prefix);
     hi = p.get_span();
     expect(p, token.EOF);