(&mut self)
| 253 | } |
| 254 | |
| 255 | fn parse_label_matchers(&mut self) -> Result<Vec<LabelMatcher>, PromqlError> { |
| 256 | self.expect(&Token::LBrace)?; |
| 257 | let mut matchers = Vec::new(); |
| 258 | if !matches!(self.peek(), Token::RBrace) { |
| 259 | matchers.push(self.parse_one_matcher()?); |
| 260 | while matches!(self.peek(), Token::Comma) { |
| 261 | self.advance(); |
| 262 | if matches!(self.peek(), Token::RBrace) { |
| 263 | break; |
| 264 | } |
| 265 | matchers.push(self.parse_one_matcher()?); |
| 266 | } |
| 267 | } |
| 268 | self.expect(&Token::RBrace)?; |
| 269 | Ok(matchers) |
| 270 | } |
| 271 | |
| 272 | fn parse_one_matcher(&mut self) -> Result<LabelMatcher, PromqlError> { |
| 273 | let Token::Ident(name) = self.advance().clone() else { |
no test coverage detected