rustc: For one-tuples, make parsing and printing the type work

and add a test to reflect-visit-data
This commit is contained in:
Tim Chevalier 2013-02-18 17:45:56 -08:00
parent 612553cb39
commit aa284de1fc
6 changed files with 26 additions and 5 deletions

View file

@ -576,12 +576,21 @@ pub impl Parser {
self.bump();
ty_nil
} else {
// (t) is a parenthesized ty
// (t,) is the type of a tuple with only one field,
// of type t
let mut ts = ~[self.parse_ty(false)];
let mut one_tuple = false;
while self.token == token::COMMA {
self.bump();
ts.push(self.parse_ty(false));
if self.token != token::RPAREN {
ts.push(self.parse_ty(false));
}
else {
one_tuple = true;
}
}
let t = if vec::len(ts) == 1u { ts[0].node }
let t = if ts.len() == 1 && !one_tuple { ts[0].node }
else { ty_tup(ts) };
self.expect(token::RPAREN);
t