@@ -46,14 +46,11 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
46
46
let lo = p. span . lo ;
47
47
let prefix = path:: dirname ( p. reader . filemap . name ) ;
48
48
let leading_attrs = p. parse_inner_attrs_and_next ( ) ;
49
- let crate_attrs = leading_attrs. inner ;
50
- let first_cdir_attr = leading_attrs. next ;
49
+ let { inner: crate_attrs , next: first_cdir_attr } = leading_attrs;
51
50
let cdirs = p. parse_crate_directives ( token:: EOF , first_cdir_attr) ;
52
51
sess. chpos = p. reader . chpos ;
53
52
sess. byte_pos = sess. byte_pos + p. reader . pos ;
54
- let cx =
55
- @{ sess: sess,
56
- cfg: p. cfg } ;
53
+ let cx = @{ sess: sess, cfg: /* FIXME: bad */ copy p. cfg } ;
57
54
let ( companionmod, _) = path:: splitext ( path:: basename ( input) ) ;
58
55
let ( m, attrs) = eval:: eval_crate_directives_to_mod (
59
56
cx, cdirs, prefix, option:: some ( companionmod) ) ;
@@ -63,7 +60,7 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
63
60
{ directives: cdirs,
64
61
module: m,
65
62
attrs: crate_attrs + attrs,
66
- config: p. cfg } ) ;
63
+ config: /* FIXME: bad */ copy p. cfg } ) ;
67
64
}
68
65
69
66
fn parse_crate_from_source_file ( input : str , cfg : ast:: crate_cfg ,
@@ -131,7 +128,7 @@ fn next_node_id(sess: parse_sess) -> node_id {
131
128
}
132
129
133
130
fn new_parser_from_source_str ( sess : parse_sess , cfg : ast:: crate_cfg ,
134
- name : str , ss : codemap:: file_substr ,
131
+ + name : str , + ss : codemap:: file_substr ,
135
132
source : @str ) -> parser {
136
133
let ftype = parser:: SOURCE_FILE ;
137
134
let filemap = codemap:: new_filemap_w_substr
@@ -143,20 +140,17 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
143
140
ret parser( sess, cfg, rdr, ftype) ;
144
141
}
145
142
146
- fn new_parser_from_file ( sess : parse_sess , cfg : ast:: crate_cfg , path : str ,
143
+ fn new_parser_from_file( sess : parse_sess , cfg : ast:: crate_cfg , + path : str ,
147
144
ftype : parser:: file_type ) ->
148
145
parser {
149
- let src = alt io:: read_whole_file_str ( path) {
150
- result:: ok ( src) {
151
- // FIXME: This copy is unfortunate (#2319)
152
- @src
153
- }
154
- result:: err ( e) {
155
- sess. span_diagnostic . handler ( ) . fatal ( e)
156
- }
157
- } ;
158
- let filemap = codemap:: new_filemap ( path, src,
159
- sess. chpos , sess. byte_pos ) ;
146
+ let res = io:: read_whole_file_str ( path) ;
147
+ alt res {
148
+ result : : ok ( _) { /* Continue. */ }
149
+ result:: err ( e) { sess. span_diagnostic . handler ( ) . fatal ( e) ; }
150
+ }
151
+ // FIXME: This copy is unfortunate (#2319).
152
+ let src = @copy result:: unwrap ( res) ;
153
+ let filemap = codemap:: new_filemap ( path, src, sess. chpos , sess. byte_pos ) ;
160
154
sess. cm . files . push ( filemap) ;
161
155
let itr = @interner:: mk ( str:: hash, str:: eq) ;
162
156
let rdr = lexer:: new_reader ( sess. span_diagnostic , filemap, itr) ;
0 commit comments