From 11f5893610b8511eefde072b580e7f7a286aa422 Mon Sep 17 00:00:00 2001 From: est31 Date: Mon, 16 Apr 2018 05:44:39 +0200 Subject: label-break-value: Parsing and AST/HIR changes --- src/libsyntax/ast.rs | 6 +++--- src/libsyntax/ext/build.rs | 2 +- src/libsyntax/fold.rs | 5 ++++- src/libsyntax/parse/classify.rs | 2 +- src/libsyntax/parse/parser.rs | 22 +++++++++++++++------- src/libsyntax/print/pprust.rs | 15 ++++++++++++--- src/libsyntax/visit.rs | 5 ++++- 7 files changed, 40 insertions(+), 17 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index f8cd6103bdf..2b6635ec783 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -934,7 +934,7 @@ impl Expr { /// Whether this expression would be valid somewhere that expects a value, for example, an `if` /// condition. pub fn returns(&self) -> bool { - if let ExprKind::Block(ref block) = self.node { + if let ExprKind::Block(ref block, _) = self.node { match block.stmts.last().map(|last_stmt| &last_stmt.node) { // implicit return Some(&StmtKind::Expr(_)) => true, @@ -1121,8 +1121,8 @@ pub enum ExprKind { /// /// The final span is the span of the argument block `|...|` Closure(CaptureBy, Movability, P, P, Span), - /// A block (`{ ... }`) - Block(P), + /// A block (`'label: { ... }`) + Block(P, Option