@@ -195,29 +195,6 @@ fn parse_value_ident(&parser p) -> ast::ident {
195
195
ret parse_ident ( p) ;
196
196
}
197
197
198
-
199
- /* FIXME: gross hack copied from rustboot to make certain configuration-based
200
- * decisions work at build-time. We should probably change it to use a
201
- * lexical sytnax-extension or something similar. For now we just imitate
202
- * rustboot.
203
- */
204
- fn parse_str_lit_or_env_ident ( & parser p) -> ast:: ident {
205
- alt ( p. peek ( ) ) {
206
- case ( token:: LIT_STR ( ?s) ) { p. bump ( ) ; ret p. get_str ( s) ; }
207
- case ( token:: IDENT ( ?i, _) ) {
208
- auto v =
209
- eval:: lookup ( p. get_session ( ) , p. get_env ( ) , p. get_span ( ) ,
210
- p. get_str ( i) ) ;
211
- if ( !eval:: val_is_str ( v) ) {
212
- p. fatal ( "expecting string-valued variable" ) ;
213
- }
214
- p. bump ( ) ;
215
- ret eval:: val_as_str ( v) ;
216
- }
217
- case ( _) { p. fatal ( "expecting string literal" ) ; fail; }
218
- }
219
- }
220
-
221
198
fn is_word ( & parser p, & str word ) -> bool {
222
199
ret alt ( p. peek ( ) ) {
223
200
case ( token:: IDENT ( ?sid, false ) ) { str:: eq ( word, p. get_str ( sid) ) }
@@ -1849,7 +1826,7 @@ fn parse_item_native_fn(&parser p) -> @ast::native_item {
1849
1826
auto link_name = none;
1850
1827
if ( p. peek ( ) == token:: EQ ) {
1851
1828
p. bump ( ) ;
1852
- link_name = some ( parse_str_lit_or_env_ident ( p) ) ;
1829
+ link_name = some ( parse_str ( p) ) ;
1853
1830
}
1854
1831
auto hi = p. get_hi_pos ( ) ;
1855
1832
expect ( p, token:: SEMI ) ;
@@ -1897,7 +1874,7 @@ fn parse_item_native_mod(&parser p, vec[ast::attribute] attrs) -> @ast::item {
1897
1874
auto lo = p. get_last_lo_pos ( ) ;
1898
1875
auto abi = ast:: native_abi_cdecl;
1899
1876
if ( !is_word ( p, "mod" ) ) {
1900
- auto t = parse_str_lit_or_env_ident ( p) ;
1877
+ auto t = parse_str ( p) ;
1901
1878
if ( str:: eq ( t, "cdecl" ) ) {
1902
1879
} else if ( str:: eq ( t, "rust" ) ) {
1903
1880
abi = ast:: native_abi_rust;
@@ -1912,7 +1889,7 @@ fn parse_item_native_mod(&parser p, vec[ast::attribute] attrs) -> @ast::item {
1912
1889
auto native_name;
1913
1890
if ( p. peek ( ) == token:: EQ ) {
1914
1891
expect ( p, token:: EQ ) ;
1915
- native_name = parse_str_lit_or_env_ident ( p) ;
1892
+ native_name = parse_str ( p) ;
1916
1893
} else { native_name = default_native_name ( p. get_session ( ) , id) ; }
1917
1894
expect ( p, token:: LBRACE ) ;
1918
1895
auto m = parse_native_mod_items ( p, native_name, abi) ;
@@ -2297,6 +2274,15 @@ fn parse_crate_from_source_file(&parser p) -> @ast::crate {
2297
2274
attrs=crate_attrs. _0 ) ) ;
2298
2275
}
2299
2276
2277
+ fn parse_str ( & parser p) -> ast:: ident {
2278
+ alt ( p. peek ( ) ) {
2279
+ case ( token:: LIT_STR ( ?s) ) {
2280
+ p. bump ( ) ;
2281
+ ret p. get_str ( s) ;
2282
+ }
2283
+ case ( _) { fail; }
2284
+ }
2285
+ }
2300
2286
2301
2287
// Logic for parsing crate files (.rc)
2302
2288
//
@@ -2318,9 +2304,7 @@ fn parse_crate_directive(&parser p) -> ast::crate_directive {
2318
2304
alt ( p. peek ( ) ) {
2319
2305
case ( token:: EQ ) {
2320
2306
p. bump ( ) ;
2321
-
2322
- // FIXME: turn this into parse+eval expr
2323
- some ( parse_str_lit_or_env_ident ( p) )
2307
+ some ( parse_str ( p) )
2324
2308
}
2325
2309
case ( _) { none }
2326
2310
} ;
0 commit comments