librustc: Change repeated vector expressions to use implicit copyability.
This commit is contained in:
parent
2dbb3c3887
commit
d57e8f8419
4 changed files with 34 additions and 6 deletions
|
@ -56,7 +56,24 @@ pub struct Variables {
|
||||||
impl Variables {
|
impl Variables {
|
||||||
/// Return a new zero-initialized Variables
|
/// Return a new zero-initialized Variables
|
||||||
pub fn new() -> Variables {
|
pub fn new() -> Variables {
|
||||||
Variables{ sta: [Number(0), ..26], dyn: [Number(0), ..26] }
|
Variables {
|
||||||
|
sta: [
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0),
|
||||||
|
],
|
||||||
|
dyn: [
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0),
|
||||||
|
],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +98,10 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
|
||||||
let mut stack: ~[Param] = ~[];
|
let mut stack: ~[Param] = ~[];
|
||||||
|
|
||||||
// Copy parameters into a local vector for mutability
|
// Copy parameters into a local vector for mutability
|
||||||
let mut mparams = [Number(0), ..9];
|
let mut mparams = [
|
||||||
|
Number(0), Number(0), Number(0), Number(0), Number(0),
|
||||||
|
Number(0), Number(0), Number(0), Number(0),
|
||||||
|
];
|
||||||
for mparams.mut_iter().zip(params.iter()).advance |(dst, src)| {
|
for mparams.mut_iter().zip(params.iter()).advance |(dst, src)| {
|
||||||
*dst = (*src).clone();
|
*dst = (*src).clone();
|
||||||
}
|
}
|
||||||
|
|
|
@ -433,7 +433,7 @@ fn check_copy(cx: Context, ty: ty::t, sp: span, reason: &str) {
|
||||||
debug!("type_contents(%s)=%s",
|
debug!("type_contents(%s)=%s",
|
||||||
ty_to_str(cx.tcx, ty),
|
ty_to_str(cx.tcx, ty),
|
||||||
ty::type_contents(cx.tcx, ty).to_str());
|
ty::type_contents(cx.tcx, ty).to_str());
|
||||||
if !ty::type_is_copyable(cx.tcx, ty) {
|
if ty::type_moves_by_default(cx.tcx, ty) {
|
||||||
cx.tcx.sess.span_err(
|
cx.tcx.sess.span_err(
|
||||||
sp, fmt!("copying a value of non-copyable type `%s`",
|
sp, fmt!("copying a value of non-copyable type `%s`",
|
||||||
ty_to_str(cx.tcx, ty)));
|
ty_to_str(cx.tcx, ty)));
|
||||||
|
|
|
@ -33,8 +33,11 @@ pub trait reader {
|
||||||
fn dup(@mut self) -> @reader;
|
fn dup(@mut self) -> @reader;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[deriving(Eq)]
|
#[deriving(Clone, Eq)]
|
||||||
pub struct TokenAndSpan {tok: token::Token, sp: span}
|
pub struct TokenAndSpan {
|
||||||
|
tok: token::Token,
|
||||||
|
sp: span,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct StringReader {
|
pub struct StringReader {
|
||||||
span_diagnostic: @span_handler,
|
span_diagnostic: @span_handler,
|
||||||
|
|
|
@ -280,7 +280,12 @@ pub fn Parser(sess: @mut ParseSess,
|
||||||
token: @mut tok0.tok,
|
token: @mut tok0.tok,
|
||||||
span: @mut span,
|
span: @mut span,
|
||||||
last_span: @mut span,
|
last_span: @mut span,
|
||||||
buffer: @mut ([placeholder, .. 4]),
|
buffer: @mut ([
|
||||||
|
placeholder.clone(),
|
||||||
|
placeholder.clone(),
|
||||||
|
placeholder.clone(),
|
||||||
|
placeholder.clone(),
|
||||||
|
]),
|
||||||
buffer_start: @mut 0,
|
buffer_start: @mut 0,
|
||||||
buffer_end: @mut 0,
|
buffer_end: @mut 0,
|
||||||
tokens_consumed: @mut 0,
|
tokens_consumed: @mut 0,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue