diff options
Diffstat (limited to 'src/libsyntax/ext/tt/macro_parser.rs')
| -rw-r--r-- | src/libsyntax/ext/tt/macro_parser.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index ce513bc91f5..3a744d4b907 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -243,12 +243,15 @@ pub fn nameize(p_s: &ParseSess, ms: &[TokenTree], res: &[Rc<NamedMatch>]) ret_val } -pub enum ParseResult { - Success(HashMap<Ident, Rc<NamedMatch>>), +pub enum ParseResult<T> { + Success(T), Failure(codemap::Span, String), Error(codemap::Span, String) } +pub type NamedParseResult = ParseResult<HashMap<Ident, Rc<NamedMatch>>>; +pub type PositionalParseResult = ParseResult<Vec<Rc<NamedMatch>>>; + pub fn parse_or_else(sess: &ParseSess, cfg: ast::CrateConfig, rdr: TtReader, @@ -280,7 +283,7 @@ pub fn parse(sess: &ParseSess, cfg: ast::CrateConfig, mut rdr: TtReader, ms: &[TokenTree]) - -> ParseResult { + -> NamedParseResult { let mut cur_eis = Vec::new(); cur_eis.push(initial_matcher_pos(Rc::new(ms.iter() .cloned() |
