@@ -46,14 +46,11 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
4646 let lo = p. span . lo ;
4747 let prefix = path:: dirname ( p. reader . filemap . name ) ;
4848 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;
5150 let cdirs = p. parse_crate_directives ( token:: EOF , first_cdir_attr) ;
5251 sess. chpos = p. reader . chpos ;
5352 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 } ;
5754 let ( companionmod, _) = path:: splitext ( path:: basename ( input) ) ;
5855 let ( m, attrs) = eval:: eval_crate_directives_to_mod (
5956 cx, cdirs, prefix, option:: some ( companionmod) ) ;
@@ -63,7 +60,7 @@ fn parse_crate_from_crate_file(input: str, cfg: ast::crate_cfg,
6360 { directives: cdirs,
6461 module: m,
6562 attrs: crate_attrs + attrs,
66- config: p. cfg } ) ;
63+ config: /* FIXME: bad */ copy p. cfg } ) ;
6764}
6865
6966fn parse_crate_from_source_file ( input : str , cfg : ast:: crate_cfg ,
@@ -131,7 +128,7 @@ fn next_node_id(sess: parse_sess) -> node_id {
131128}
132129
133130fn 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 ,
135132 source : @str ) -> parser {
136133 let ftype = parser:: SOURCE_FILE ;
137134 let filemap = codemap:: new_filemap_w_substr
@@ -143,20 +140,17 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
143140 ret parser( sess, cfg, rdr, ftype) ;
144141}
145142
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 ,
147144 ftype : parser:: file_type ) ->
148145 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 ) ;
160154 sess. cm . files . push ( filemap) ;
161155 let itr = @interner:: mk ( str:: hash, str:: eq) ;
162156 let rdr = lexer:: new_reader ( sess. span_diagnostic , filemap, itr) ;
0 commit comments