+ /// Parse `"('label ":")? break expr?`.
+ fn parse_break_expr(&mut self, attrs: ThinVec<Attribute>) -> PResult<'a, P<Expr>> {
+ let lo = self.prev_span;
+ let label = self.eat_label();
+ let kind = if self.token != token::OpenDelim(token::Brace)
+ || !self.restrictions.contains(Restrictions::NO_STRUCT_LITERAL)
+ {
+ self.parse_expr_opt()?
+ } else {
+ None
+ };
+ let expr = self.mk_expr(lo.to(self.prev_span), ExprKind::Break(label, kind), attrs);
+ self.maybe_recover_from_bad_qpath(expr, true)
+ }
+