From e2d558ad56d03bdc59ab2aaa28aaedf9172a0539 Mon Sep 17 00:00:00 2001 From: Mark Mansi Date: Wed, 24 Jan 2018 23:23:01 -0600 Subject: [PATCH] A few more comments --- src/libsyntax/ext/tt/macro_parser.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index e15198cc3835e..af18801c97e6f 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -289,11 +289,17 @@ pub enum NamedMatch { MatchedNonterminal(Rc), } +/// Takes a sequence of token trees `ms` representing a matcher which successfully matched input +/// and an iterator of items that matched input and produces a `NamedParseResult`. fn nameize>( sess: &ParseSess, ms: &[TokenTree], mut res: I, ) -> NamedParseResult { + // Recursively descend into each type of matcher (e.g. sequences, delimited, metavars) and make + // sure that each metavar has _exactly one_ binding. If a metavar does not have exactly one + // binding, then there is an error. If it does, then we insert the binding into the + // `NamedParseResult`. fn n_rec>( sess: &ParseSess, m: &TokenTree, @@ -340,6 +346,8 @@ fn nameize>( Success(ret_val) } +/// Generate an appropriate parsing failure message. For EOF, this is "unexpected end...". For +/// other tokens, this is "unexpected token...". pub fn parse_failure_msg(tok: Token) -> String { match tok { token::Eof => "unexpected end of macro invocation".to_string(),