auto merge of #5255 : jbclements/rust/remove-parse-value-ident, r=graydon
After the removal of the "restricted keyword" feature in 0c82c00dc4
, there's no longer any difference between parse_ident() and parse_value_ident(), and therefore no difference between parse parse_path_without_tps() and parse_value_path(). I've collapsed all of these, removing the redundant functions and eliminating the need for two higher-order arguments.
This commit is contained in:
commit
b269ce2782
@ -105,6 +105,10 @@ pub struct Lifetime {
|
||||
ident: ident
|
||||
}
|
||||
|
||||
// a "Path" is essentially Rust's notion of a name;
|
||||
// for instance: core::cmp::Eq . It's represented
|
||||
// as a sequence of identifiers, along with a bunch
|
||||
// of supporting information.
|
||||
#[auto_encode]
|
||||
#[auto_decode]
|
||||
#[deriving_eq]
|
||||
|
@ -36,6 +36,7 @@ struct TtFrame {
|
||||
pub struct TtReader {
|
||||
sp_diag: span_handler,
|
||||
interner: @ident_interner,
|
||||
// the unzipped tree:
|
||||
cur: @mut TtFrame,
|
||||
/* for MBE-style macro transcription */
|
||||
interpolations: std::oldmap::HashMap<ident, @named_match>,
|
||||
|
@ -119,10 +119,6 @@ fn parse_path_list_ident(&self) -> ast::path_list_ident {
|
||||
id: self.get_id() })
|
||||
}
|
||||
|
||||
fn parse_value_ident(&self) -> ast::ident {
|
||||
return self.parse_ident();
|
||||
}
|
||||
|
||||
// consume token 'tok' if it exists. Returns true if the given
|
||||
// token was present, false otherwise.
|
||||
fn eat(&self, tok: &token::Token) -> bool {
|
||||
|
@ -457,7 +457,7 @@ fn parse_trait_methods(&self) -> ~[trait_method] {
|
||||
let pur = p.parse_fn_purity();
|
||||
// NB: at the moment, trait methods are public by default; this
|
||||
// could change.
|
||||
let ident = p.parse_method_name();
|
||||
let ident = p.parse_ident();
|
||||
|
||||
let generics = p.parse_generics();
|
||||
|
||||
@ -899,16 +899,9 @@ fn parse_lit(&self) -> lit {
|
||||
codemap::spanned { node: lit, span: mk_sp(lo, self.last_span.hi) }
|
||||
}
|
||||
|
||||
fn parse_path_without_tps(&self) -> @path {
|
||||
self.parse_path_without_tps_(|p| p.parse_ident(),
|
||||
|p| p.parse_ident())
|
||||
}
|
||||
|
||||
fn parse_path_without_tps_(
|
||||
&self,
|
||||
parse_ident: fn(&Parser) -> ident,
|
||||
parse_last_ident: fn(&Parser) -> ident
|
||||
) -> @path {
|
||||
// parse a path that doesn't have type parameters attached
|
||||
fn parse_path_without_tps(&self)
|
||||
-> @ast::path {
|
||||
maybe_whole!(self, nt_path);
|
||||
let lo = self.span.lo;
|
||||
let global = self.eat(&token::MOD_SEP);
|
||||
@ -919,10 +912,10 @@ fn parse_path_without_tps_(
|
||||
&& self.look_ahead(1u) == token::MOD_SEP;
|
||||
|
||||
if is_not_last {
|
||||
ids.push(parse_ident(self));
|
||||
ids.push(self.parse_ident());
|
||||
self.expect(&token::MOD_SEP);
|
||||
} else {
|
||||
ids.push(parse_last_ident(self));
|
||||
ids.push(self.parse_ident());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -933,12 +926,7 @@ fn parse_path_without_tps_(
|
||||
types: ~[] }
|
||||
}
|
||||
|
||||
fn parse_value_path(&self) -> @path {
|
||||
self.parse_path_without_tps_(|p| p.parse_ident(),
|
||||
|p| p.parse_value_ident())
|
||||
}
|
||||
|
||||
fn parse_path_with_tps(&self, colons: bool) -> @path {
|
||||
fn parse_path_with_tps(&self, colons: bool) -> @ast::path {
|
||||
debug!("parse_path_with_tps(colons=%b)", colons);
|
||||
|
||||
maybe_whole!(self, nt_path);
|
||||
@ -2134,11 +2122,7 @@ fn parse_pat_fields(&self, refutable: bool) -> (~[ast::field_pat], bool) {
|
||||
}
|
||||
|
||||
let lo1 = self.last_span.lo;
|
||||
let fieldname = if self.look_ahead(1u) == token::COLON {
|
||||
self.parse_ident()
|
||||
} else {
|
||||
self.parse_value_ident()
|
||||
};
|
||||
let fieldname = self.parse_ident();
|
||||
let hi1 = self.last_span.lo;
|
||||
let fieldpath = ast_util::ident_to_path(mk_sp(lo1, hi1),
|
||||
fieldname);
|
||||
@ -2302,7 +2286,7 @@ fn parse_pat(&self, refutable: bool) -> @pat {
|
||||
}
|
||||
|
||||
if is_plain_ident(&*self.token) && cannot_be_enum_or_struct {
|
||||
let name = self.parse_value_path();
|
||||
let name = self.parse_path_without_tps();
|
||||
let sub;
|
||||
if self.eat(&token::AT) {
|
||||
sub = Some(self.parse_pat(refutable));
|
||||
@ -2375,7 +2359,7 @@ fn parse_pat_ident(&self, refutable: bool,
|
||||
*self.last_span,
|
||||
~"expected identifier, found path");
|
||||
}
|
||||
let name = self.parse_value_path();
|
||||
let name = self.parse_path_without_tps();
|
||||
let sub = if self.eat(&token::AT) {
|
||||
Some(self.parse_pat(refutable))
|
||||
} else { None };
|
||||
@ -2473,7 +2457,7 @@ fn check_expected_item(p: &Parser, current_attrs: &[attribute]) {
|
||||
|
||||
// Potential trouble: if we allow macros with paths instead of
|
||||
// idents, we'd need to look ahead past the whole path here...
|
||||
let pth = self.parse_value_path();
|
||||
let pth = self.parse_path_without_tps();
|
||||
self.bump();
|
||||
|
||||
let id = if *self.token == token::LPAREN {
|
||||
@ -2982,7 +2966,7 @@ fn parse_fn_block_decl(&self) -> fn_decl {
|
||||
}
|
||||
|
||||
fn parse_fn_header(&self) -> (ident, ast::Generics) {
|
||||
let id = self.parse_value_ident();
|
||||
let id = self.parse_ident();
|
||||
let generics = self.parse_generics();
|
||||
(id, generics)
|
||||
}
|
||||
@ -3005,10 +2989,6 @@ fn parse_item_fn(&self, purity: purity) -> item_info {
|
||||
(ident, item_fn(decl, purity, generics, body), Some(inner_attrs))
|
||||
}
|
||||
|
||||
fn parse_method_name(&self) -> ident {
|
||||
self.parse_value_ident()
|
||||
}
|
||||
|
||||
fn parse_method(&self) -> @method {
|
||||
let attrs = self.parse_outer_attributes();
|
||||
let lo = self.span.lo;
|
||||
@ -3018,7 +2998,7 @@ fn parse_method(&self) -> @method {
|
||||
|
||||
let visa = self.parse_visibility();
|
||||
let pur = self.parse_fn_purity();
|
||||
let ident = self.parse_method_name();
|
||||
let ident = self.parse_ident();
|
||||
let generics = self.parse_generics();
|
||||
let (self_ty, decl) = do self.parse_fn_decl_with_self() |p| {
|
||||
p.parse_arg()
|
||||
@ -3142,7 +3122,7 @@ fn parse_trait_ref_list(&self, ket: &token::Token) -> ~[@trait_ref] {
|
||||
}
|
||||
|
||||
fn parse_item_struct(&self) -> item_info {
|
||||
let class_name = self.parse_value_ident();
|
||||
let class_name = self.parse_ident();
|
||||
self.parse_region_param();
|
||||
let generics = self.parse_generics();
|
||||
if self.eat(&token::COLON) {
|
||||
@ -3370,7 +3350,7 @@ fn parse_mod_items(&self, term: token::Token,
|
||||
}
|
||||
|
||||
fn parse_item_const(&self) -> item_info {
|
||||
let id = self.parse_value_ident();
|
||||
let id = self.parse_ident();
|
||||
self.expect(&token::COLON);
|
||||
let ty = self.parse_ty(false);
|
||||
self.expect(&token::EQ);
|
||||
@ -3768,7 +3748,7 @@ fn parse_enum_def(&self, generics: &ast::Generics) -> enum_def {
|
||||
kind = enum_variant_kind(nested_enum_def);
|
||||
needs_comma = false;
|
||||
} else {
|
||||
ident = self.parse_value_ident();
|
||||
ident = self.parse_ident();
|
||||
if self.eat(&token::LBRACE) {
|
||||
// Parse a struct variant.
|
||||
all_nullary = false;
|
||||
|
Loading…
Reference in New Issue
Block a user