Updates of the fix

This commit is contained in:
GuillaumeGomez 2015-01-19 22:43:15 +01:00
parent c821e5c915
commit 3c37a952e7

View file

@ -413,48 +413,48 @@ fn check_matcher<'a, I>(cx: &mut ExtCtxt, matcher: I, follow: &Token)
fn is_in_follow(_: &ExtCtxt, tok: &Token, frag: &str) -> Result<bool, String> {
if let &CloseDelim(_) = tok {
return Ok(true);
Ok(true)
} else {
match frag {
"item" => {
// since items *must* be followed by either a `;` or a `}`, we can
// accept anything after them
Ok(true)
},
"block" => {
// anything can follow block, the braces provide a easy boundary to
// maintain
Ok(true)
},
"stmt" | "expr" => {
match *tok {
FatArrow | Comma | Semi => Ok(true),
_ => Ok(false)
}
},
"pat" => {
match *tok {
FatArrow | Comma | Eq => Ok(true),
_ => Ok(false)
}
},
"path" | "ty" => {
match *tok {
Comma | FatArrow | Colon | Eq | Gt => Ok(true),
Ident(i, _) if i.as_str() == "as" => Ok(true),
_ => Ok(false)
}
},
"ident" => {
// being a single token, idents are harmless
Ok(true)
},
"meta" | "tt" => {
// being either a single token or a delimited sequence, tt is
// harmless
Ok(true)
},
_ => Err(format!("unrecognized builtin nonterminal `{}`", frag))
}
}
Ok(match frag {
"item" => {
// since items *must* be followed by either a `;` or a `}`, we can
// accept anything after them
true
},
"block" => {
// anything can follow block, the braces provide a easy boundary to
// maintain
true
},
"stmt" | "expr" => {
match *tok {
FatArrow | Comma | Semi => true,
_ => false
}
},
"pat" => {
match *tok {
FatArrow | Comma | Eq => true,
_ => false
}
},
"path" | "ty" => {
match *tok {
Comma | FatArrow | Colon | Eq | Gt => true,
Ident(i, _) if i.as_str() == "as" => true,
_ => false
}
},
"ident" => {
// being a single token, idents are harmless
true
},
"meta" | "tt" => {
// being either a single token or a delimited sequence, tt is
// harmless
true
},
_ => return Err(format!("unrecognized builtin nonterminal `{}`", frag)),
})
}