1
Fork 0

Remove cross-borrowing for traits.

Closes #15349

[breaking-change]

Trait objects are no longer implicitly coerced from Box<T> to &T. You must make an explicit coercion using `&*`.
This commit is contained in:
Nick Cameron 2014-08-29 15:21:28 +12:00
parent e9bd650cad
commit 7f72884f13
12 changed files with 40 additions and 19 deletions

View file

@ -351,7 +351,7 @@ impl<'a> Parser<'a> {
mut rdr: Box<Reader+'a>)
-> Parser<'a>
{
let tok0 = real_token(rdr);
let tok0 = real_token(&mut *rdr);
let span = tok0.sp;
let placeholder = TokenAndSpan {
tok: token::UNDERSCORE,
@ -899,7 +899,7 @@ impl<'a> Parser<'a> {
None
};
let next = if self.buffer_start == self.buffer_end {
real_token(self.reader)
real_token(&mut *self.reader)
} else {
// Avoid token copies with `replace`.
let buffer_start = self.buffer_start as uint;
@ -943,7 +943,7 @@ impl<'a> Parser<'a> {
-> R {
let dist = distance as int;
while self.buffer_length() < dist {
self.buffer[self.buffer_end as uint] = real_token(self.reader);
self.buffer[self.buffer_end as uint] = real_token(&mut *self.reader);
self.buffer_end = (self.buffer_end + 1) & 3;
}
f(&self.buffer[((self.buffer_start + dist - 1) & 3) as uint].tok)