Parse parenthesized list of block parameters. block-params ::= * "(" ( block-param { "," block-param } )? ")"
(&mut self, ctx: &mut Context, block: Block)
| 2109 | // |
| 2110 | // block-params ::= * "(" ( block-param { "," block-param } )? ")" |
| 2111 | fn parse_block_params(&mut self, ctx: &mut Context, block: Block) -> ParseResult<()> { |
| 2112 | // block-params ::= * "(" ( block-param { "," block-param } )? ")" |
| 2113 | self.match_token(Token::LPar, "expected '(' before block parameters")?; |
| 2114 | |
| 2115 | // block-params ::= "(" * ")" |
| 2116 | if self.token() == Some(Token::RPar) { |
| 2117 | self.consume(); |
| 2118 | return Ok(()); |
| 2119 | } |
| 2120 | |
| 2121 | // block-params ::= "(" * block-param { "," block-param } ")" |
| 2122 | self.parse_block_param(ctx, block)?; |
| 2123 | |
| 2124 | // block-params ::= "(" block-param * { "," block-param } ")" |
| 2125 | while self.optional(Token::Comma) { |
| 2126 | // block-params ::= "(" block-param { "," * block-param } ")" |
| 2127 | self.parse_block_param(ctx, block)?; |
| 2128 | } |
| 2129 | |
| 2130 | // block-params ::= "(" block-param { "," block-param } * ")" |
| 2131 | self.match_token(Token::RPar, "expected ')' after block parameters")?; |
| 2132 | |
| 2133 | Ok(()) |
| 2134 | } |
| 2135 | |
| 2136 | // Parse a single block parameter declaration, and append it to `block`. |
| 2137 | // |
no test coverage detected