Skip to content

Commit 4ae91e2

Browse files
committed
libsyntax: add explicit copies
1 parent 8d239a2 commit 4ae91e2

File tree

5 files changed

+101
-61
lines changed

5 files changed

+101
-61
lines changed

src/libsyntax/parse/attr.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ impl parser_attr for Parser {
4646
}
4747
token::DOC_COMMENT(s) => {
4848
let attr = ::attr::mk_sugared_doc_attr(
49-
*self.id_to_str(s), self.span.lo, self.span.hi);
49+
copy *self.id_to_str(s),
50+
self.span.lo,
51+
self.span.hi
52+
);
5053
if attr.node.style != ast::attr_outer {
5154
self.fatal(~"expected outer comment");
5255
}
@@ -113,7 +116,10 @@ impl parser_attr for Parser {
113116
}
114117
token::DOC_COMMENT(s) => {
115118
let attr = ::attr::mk_sugared_doc_attr(
116-
*self.id_to_str(s), self.span.lo, self.span.hi);
119+
copy *self.id_to_str(s),
120+
self.span.lo,
121+
self.span.hi
122+
);
117123
self.bump();
118124
if attr.node.style == ast::attr_inner {
119125
inner_attrs += ~[attr];
@@ -151,7 +157,7 @@ impl parser_attr for Parser {
151157
}
152158

153159
fn parse_meta_seq() -> ~[@ast::meta_item] {
154-
self.parse_seq(
160+
copy self.parse_seq(
155161
&token::LPAREN,
156162
&token::RPAREN,
157163
seq_sep_trailing_disallowed(token::COMMA),

src/libsyntax/parse/comments.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ fn trim_whitespace_prefix_and_push_line(lines: &mut ~[~str],
221221
if col < len {
222222
s1 = str::slice(s, col, len);
223223
} else { s1 = ~""; }
224-
} else { s1 = s; }
224+
} else { s1 = /*bad*/ copy s; }
225225
log(debug, ~"pushing line: " + s1);
226226
lines.push(s1);
227227
}
@@ -321,7 +321,7 @@ pub struct lit {
321321
}
322322
323323
pub fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler,
324-
path: ~str,
324+
+path: ~str,
325325
srdr: io::Reader) -> (~[cmnt], ~[lit]) {
326326
let src = @str::from_bytes(srdr.read_whole_stream());
327327
let itr = parse::token::mk_fake_ident_interner();
@@ -356,10 +356,10 @@ pub fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler,
356356
let TokenAndSpan {tok: tok, sp: sp} = rdr.peek();
357357
if token::is_lit(&tok) {
358358
let s = get_str_from(rdr, bstart);
359-
literals.push(lit {lit: s, pos: sp.lo});
360-
log(debug, ~"tok lit: " + s);
359+
literals.push(lit {lit: /*bad*/ copy s, pos: sp.lo});
360+
debug!("tok lit: %s", s);
361361
} else {
362-
log(debug, ~"tok: " + token::to_str(rdr.interner, &tok));
362+
debug!("tok: %s", token::to_str(rdr.interner, &tok));
363363
}
364364
first_read = false;
365365
}

src/libsyntax/parse/mod.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ pub fn parse_crate_from_source_str(name: ~str,
9292
source: @~str,
9393
cfg: ast::crate_cfg,
9494
sess: @mut ParseSess) -> @ast::crate {
95-
let p = new_parser_from_source_str(sess, cfg, name,
95+
let p = new_parser_from_source_str(sess, cfg, /*bad*/ copy name,
9696
codemap::FssNone, source);
9797
let r = p.parse_crate_mod(cfg);
9898
p.abort_if_errors();
@@ -103,7 +103,7 @@ pub fn parse_expr_from_source_str(name: ~str,
103103
source: @~str,
104104
cfg: ast::crate_cfg,
105105
sess: @mut ParseSess) -> @ast::expr {
106-
let p = new_parser_from_source_str(sess, cfg, name,
106+
let p = new_parser_from_source_str(sess, cfg, /*bad*/ copy name,
107107
codemap::FssNone, source);
108108
let r = p.parse_expr();
109109
p.abort_if_errors();
@@ -116,7 +116,7 @@ pub fn parse_item_from_source_str(name: ~str,
116116
+attrs: ~[ast::attribute],
117117
sess: @mut ParseSess)
118118
-> Option<@ast::item> {
119-
let p = new_parser_from_source_str(sess, cfg, name,
119+
let p = new_parser_from_source_str(sess, cfg, /*bad*/ copy name,
120120
codemap::FssNone, source);
121121
let r = p.parse_item(attrs);
122122
p.abort_if_errors();
@@ -128,7 +128,7 @@ pub fn parse_stmt_from_source_str(name: ~str,
128128
cfg: ast::crate_cfg,
129129
+attrs: ~[ast::attribute],
130130
sess: @mut ParseSess) -> @ast::stmt {
131-
let p = new_parser_from_source_str(sess, cfg, name,
131+
let p = new_parser_from_source_str(sess, cfg, /*bad*/ copy name,
132132
codemap::FssNone, source);
133133
let r = p.parse_stmt(attrs);
134134
p.abort_if_errors();
@@ -139,7 +139,7 @@ pub fn parse_tts_from_source_str(name: ~str,
139139
source: @~str,
140140
cfg: ast::crate_cfg,
141141
sess: @mut ParseSess) -> ~[ast::token_tree] {
142-
let p = new_parser_from_source_str(sess, cfg, name,
142+
let p = new_parser_from_source_str(sess, cfg, /*bad*/ copy name,
143143
codemap::FssNone, source);
144144
*p.quote_depth += 1u;
145145
let r = p.parse_all_token_trees();
@@ -153,8 +153,13 @@ pub fn parse_from_source_str<T>(f: fn (p: Parser) -> T,
153153
sess: @mut ParseSess)
154154
-> T
155155
{
156-
let p = new_parser_from_source_str(sess, cfg, name, ss,
157-
source);
156+
let p = new_parser_from_source_str(
157+
sess,
158+
cfg,
159+
/*bad*/ copy name,
160+
/*bad*/ copy ss,
161+
source
162+
);
158163
let r = f(p);
159164
if !p.reader.is_eof() {
160165
p.reader.fatal(~"expected end-of-string");
@@ -226,7 +231,7 @@ pub fn new_sub_parser_from_file(sess: @mut ParseSess, cfg: ast::crate_cfg,
226231
}
227232

228233
pub fn new_parser_from_tts(sess: @mut ParseSess, cfg: ast::crate_cfg,
229-
tts: ~[ast::token_tree]) -> Parser {
234+
+tts: ~[ast::token_tree]) -> Parser {
230235
let trdr = lexer::new_tt_reader(copy sess.span_diagnostic, sess.interner,
231236
None, tts);
232237
return Parser(sess, cfg, trdr as reader)

0 commit comments

Comments
 (0)