Rollup merge of #30420 - petrochenkov:owned2, r=nrc

Part of https://github.com/rust-lang/rust/pull/30095 not causing mysterious segfaults.

r? @nrc
This commit is contained in:
Manish Goregaokar 2015-12-18 13:43:46 +05:30
commit 9e953df6f0
33 changed files with 400 additions and 413 deletions

View file

@ -50,7 +50,7 @@ use ast::{SelfExplicit, SelfRegion, SelfStatic, SelfValue};
use ast::{Delimited, SequenceRepetition, TokenTree, TraitItem, TraitRef};
use ast::{Ty, Ty_, TypeBinding, TyMac};
use ast::{TyFixedLengthVec, TyBareFn, TyTypeof, TyInfer};
use ast::{TyParam, TyParamBound, TyParen, TyPath, TyPtr};
use ast::{TyParam, TyParamBounds, TyParen, TyPath, TyPtr};
use ast::{TyRptr, TyTup, TyU32, TyVec};
use ast::TypeTraitItem;
use ast::{UnnamedField, UnsafeBlock};
@ -73,7 +73,6 @@ use parse::{new_sub_parser_from_file, ParseSess};
use util::parser::{AssocOp, Fixity};
use print::pprust;
use ptr::P;
use owned_slice::OwnedSlice;
use parse::PResult;
use std::collections::HashSet;
@ -751,7 +750,7 @@ impl<'a> Parser<'a> {
pub fn parse_seq_to_before_gt_or_return<T, F>(&mut self,
sep: Option<token::Token>,
mut f: F)
-> PResult<(OwnedSlice<T>, bool)> where
-> PResult<(P<[T]>, bool)> where
F: FnMut(&mut Parser) -> PResult<Option<T>>,
{
let mut v = Vec::new();
@ -772,7 +771,7 @@ impl<'a> Parser<'a> {
if i % 2 == 0 {
match try!(f(self)) {
Some(result) => v.push(result),
None => return Ok((OwnedSlice::from_vec(v), true))
None => return Ok((P::from_vec(v), true))
}
} else {
if let Some(t) = sep.as_ref() {
@ -781,7 +780,7 @@ impl<'a> Parser<'a> {
}
}
return Ok((OwnedSlice::from_vec(v), false));
return Ok((P::from_vec(v), false));
}
/// Parse a sequence bracketed by '<' and '>', stopping
@ -789,7 +788,7 @@ impl<'a> Parser<'a> {
pub fn parse_seq_to_before_gt<T, F>(&mut self,
sep: Option<token::Token>,
mut f: F)
-> PResult<OwnedSlice<T>> where
-> PResult<P<[T]>> where
F: FnMut(&mut Parser) -> PResult<T>,
{
let (result, returned) = try!(self.parse_seq_to_before_gt_or_return(sep,
@ -801,7 +800,7 @@ impl<'a> Parser<'a> {
pub fn parse_seq_to_gt<T, F>(&mut self,
sep: Option<token::Token>,
f: F)
-> PResult<OwnedSlice<T>> where
-> PResult<P<[T]>> where
F: FnMut(&mut Parser) -> PResult<T>,
{
let v = try!(self.parse_seq_to_before_gt(sep, f));
@ -812,7 +811,7 @@ impl<'a> Parser<'a> {
pub fn parse_seq_to_gt_or_return<T, F>(&mut self,
sep: Option<token::Token>,
f: F)
-> PResult<(OwnedSlice<T>, bool)> where
-> PResult<(P<[T]>, bool)> where
F: FnMut(&mut Parser) -> PResult<Option<T>>,
{
let (v, returned) = try!(self.parse_seq_to_before_gt_or_return(sep, f));
@ -1076,7 +1075,7 @@ impl<'a> Parser<'a> {
let other_bounds = if try!(self.eat(&token::BinOp(token::Plus)) ){
try!(self.parse_ty_param_bounds(BoundParsingMode::Bare))
} else {
OwnedSlice::empty()
P::empty()
};
let all_bounds =
Some(TraitTyParamBound(poly_trait_ref, TraitBoundModifier::None)).into_iter()
@ -1709,8 +1708,8 @@ impl<'a> Parser<'a> {
ast::AngleBracketedParameters(ast::AngleBracketedParameterData {
lifetimes: lifetimes,
types: OwnedSlice::from_vec(types),
bindings: OwnedSlice::from_vec(bindings),
types: P::from_vec(types),
bindings: P::from_vec(bindings),
})
} else if try!(self.eat(&token::OpenDelim(token::Paren)) ){
let lo = self.last_span.lo;
@ -1773,8 +1772,8 @@ impl<'a> Parser<'a> {
identifier: identifier,
parameters: ast::AngleBracketedParameters(ast::AngleBracketedParameterData {
lifetimes: lifetimes,
types: OwnedSlice::from_vec(types),
bindings: OwnedSlice::from_vec(bindings),
types: P::from_vec(types),
bindings: P::from_vec(bindings),
}),
});
@ -3882,10 +3881,10 @@ impl<'a> Parser<'a> {
// otherwise returns empty list.
fn parse_colon_then_ty_param_bounds(&mut self,
mode: BoundParsingMode)
-> PResult<OwnedSlice<TyParamBound>>
-> PResult<TyParamBounds>
{
if !try!(self.eat(&token::Colon) ){
Ok(OwnedSlice::empty())
Ok(P::empty())
} else {
self.parse_ty_param_bounds(mode)
}
@ -3897,7 +3896,7 @@ impl<'a> Parser<'a> {
// and bound = 'region | trait_ref
fn parse_ty_param_bounds(&mut self,
mode: BoundParsingMode)
-> PResult<OwnedSlice<TyParamBound>>
-> PResult<TyParamBounds>
{
let mut result = vec!();
loop {
@ -3939,7 +3938,7 @@ impl<'a> Parser<'a> {
}
}
return Ok(OwnedSlice::from_vec(result));
return Ok(P::from_vec(result));
}
/// Matches typaram = IDENT (`?` unbound)? optbounds ( EQ ty )?