Skip to content

Commit e8dac49

Browse files
committed
---
yaml --- r: 3488 b: refs/heads/master c: afc8a5c h: refs/heads/master v: v3
1 parent 9b4eb52 commit e8dac49

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: d53bfad8e7b6f199436d8838f75eb90713dffd1d
2+
refs/heads/master: afc8a5c03179cae725837c95fe0bc426bcad304d

trunk/src/comp/front/parser.rs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type parser =
3333
fn get_restriction() -> restriction ;
3434
fn get_file_type() -> file_type ;
3535
fn get_env() -> eval::env ;
36+
fn get_cfg() -> ast::crate_cfg;
3637
fn get_session() -> session::session ;
3738
fn get_span() -> common::span ;
3839
fn get_lo_pos() -> uint ;
@@ -53,6 +54,7 @@ fn new_parser(session::session sess, eval::env env,
5354
str path, uint pos, ast::node_id next_id) -> parser {
5455
obj stdio_parser(session::session sess,
5556
eval::env env,
57+
ast::crate_cfg cfg,
5658
file_type ftype,
5759
mutable token::token tok,
5860
mutable uint lo,
@@ -84,6 +86,7 @@ fn new_parser(session::session sess, eval::env env,
8486
fn get_last_lo_pos() -> uint { ret last_lo; }
8587
fn get_file_type() -> file_type { ret ftype; }
8688
fn get_env() -> eval::env { ret env; }
89+
fn get_cfg() -> ast::crate_cfg { ret cfg; }
8790
fn get_prec_table() -> vec[op_spec] { ret precs; }
8891
fn get_str(token::str_num i) -> str {
8992
ret interner::get(*rdr.get_interner(), i);
@@ -102,6 +105,18 @@ fn new_parser(session::session sess, eval::env env,
102105
}
103106
fn next_id() -> ast::node_id { ret next_id_var; }
104107
}
108+
109+
auto cfg = {
110+
fn m(&tup(ast::ident, eval::val) item) -> @ast::meta_item {
111+
auto name = item._0;
112+
auto value = eval::val_as_str(item._1);
113+
auto meta_item_ = ast::meta_name_value(name, value);
114+
ret @rec(node=meta_item_,
115+
span=rec(lo=0u,hi=0u));
116+
}
117+
vec::map(m, env)
118+
};
119+
105120
auto ftype = SOURCE_FILE;
106121
if (str::ends_with(path, ".rc")) { ftype = CRATE_FILE; }
107122
auto srdr = io::file_reader(path);
@@ -113,8 +128,8 @@ fn new_parser(session::session sess, eval::env env,
113128

114129
lexer::consume_whitespace_and_comments(rdr);
115130
auto npos = rdr.get_chpos();
116-
ret stdio_parser(sess, env, ftype, lexer::next_token(rdr), npos, npos,
117-
npos, UNRESTRICTED, rdr,
131+
ret stdio_parser(sess, env, cfg, ftype, lexer::next_token(rdr),
132+
npos, npos, npos, UNRESTRICTED, rdr,
118133
prec_table(), next_id, bad_expr_word_table(),
119134
ext::syntax_expander_table());
120135
}
@@ -2319,7 +2334,7 @@ fn parse_crate_from_source_file(&parser p) -> @ast::crate {
23192334
ret @spanned(lo, p.get_lo_pos(), rec(directives=cdirs,
23202335
module=m,
23212336
attrs=crate_attrs._0,
2322-
config=[]));
2337+
config=p.get_cfg()));
23232338
}
23242339

23252340
fn parse_str(&parser p) -> ast::ident {
@@ -2452,7 +2467,7 @@ fn parse_crate_from_crate_file(&parser p) -> @ast::crate {
24522467
ret @spanned(lo, hi, rec(directives=cdirs,
24532468
module=m,
24542469
attrs=crate_attrs,
2455-
config=[]));
2470+
config=p.get_cfg()));
24562471
}
24572472
//
24582473
// Local Variables:

0 commit comments

Comments
 (0)