libsyntax: add explicit modes where required to copy strs/vecs

This commit is contained in:
Erick Tryzelaar 2013-02-17 08:28:11 -08:00
parent 5b9e110eab
commit 44f5537abf
6 changed files with 105 additions and 75 deletions

View file

@ -23,19 +23,33 @@ use core::str;
use core::vec;
fn topmost_expn_info(expn_info: @codemap::ExpnInfo) -> @codemap::ExpnInfo {
let ExpandedFrom(CallInfo { call_site, _ }) = *expn_info;
match call_site.expn_info {
Some(next_expn_info) => {
let ExpandedFrom(CallInfo {
callee: NameAndSpan {name, _},
_
}) = *next_expn_info;
// Don't recurse into file using "include!"
if name == ~"include" { return expn_info; }
// FIXME(#3874): this would be better written as:
// let @ExpandedFrom(CallInfo {
// call_site: ref call_site,
// _
// }) = expn_info;
match *expn_info {
ExpandedFrom(CallInfo { call_site: ref call_site, _}) => {
match call_site.expn_info {
Some(next_expn_info) => {
// Don't recurse into file using "include!"
match *next_expn_info {
ExpandedFrom(
CallInfo { callee: NameAndSpan {
name: ref name,
_
},
_
}) => {
if *name == ~"include" { return expn_info; }
}
}
topmost_expn_info(next_expn_info)
},
None => expn_info
topmost_expn_info(next_expn_info)
},
None => expn_info
}
}
}
}