From 0f5eaef5fb2443acd3ea67250c953839c3d04d38 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 3 Jul 2012 16:06:09 -0700 Subject: Remove rule requiring non-nil block-style statements to be semi-terminated This is a subtle rule that no longer seems to be required. --- src/libsyntax/ast.rs | 5 ----- src/libsyntax/ast_util.rs | 1 - src/libsyntax/ext/auto_serialize.rs | 2 +- src/libsyntax/fold.rs | 1 - src/libsyntax/parse/classify.rs | 3 --- src/libsyntax/parse/parser.rs | 2 +- src/libsyntax/print/pprust.rs | 8 +++----- src/libsyntax/visit.rs | 1 - 8 files changed, 5 insertions(+), 18 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 9419b9f647e..6c0b5a2e8b1 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -243,12 +243,7 @@ type stmt = spanned; #[auto_serialize] enum stmt_ { stmt_decl(@decl, node_id), - - // expr without trailing semi-colon (must have unit type): stmt_expr(@expr, node_id), - - // expr with trailing semi-colon (may have any type): - stmt_semi(@expr, node_id), } #[auto_serialize] diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index c6fb9349ad5..568f00b0dfb 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -38,7 +38,6 @@ pure fn stmt_id(s: stmt) -> node_id { alt s.node { stmt_decl(_, id) { id } stmt_expr(_, id) { id } - stmt_semi(_, id) { id } } } diff --git a/src/libsyntax/ext/auto_serialize.rs b/src/libsyntax/ext/auto_serialize.rs index d2d685f8f7d..8685bce4c1b 100644 --- a/src/libsyntax/ext/auto_serialize.rs +++ b/src/libsyntax/ext/auto_serialize.rs @@ -206,7 +206,7 @@ impl helpers for ext_ctxt { } fn stmt(expr: @ast::expr) -> @ast::stmt { - @{node: ast::stmt_semi(expr, self.next_id()), + @{node: ast::stmt_expr(expr, self.next_id()), span: expr.span} } diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index c949c2e17aa..fd17403b695 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -315,7 +315,6 @@ fn noop_fold_stmt(s: stmt_, fld: ast_fold) -> stmt_ { ret alt s { stmt_decl(d, nid) { stmt_decl(fld.fold_decl(d), fld.new_id(nid)) } stmt_expr(e, nid) { stmt_expr(fld.fold_expr(e), fld.new_id(nid)) } - stmt_semi(e, nid) { stmt_semi(fld.fold_expr(e), fld.new_id(nid)) } }; } diff --git a/src/libsyntax/parse/classify.rs b/src/libsyntax/parse/classify.rs index 9b36b77407e..4fcb761fa06 100644 --- a/src/libsyntax/parse/classify.rs +++ b/src/libsyntax/parse/classify.rs @@ -27,9 +27,6 @@ fn stmt_ends_with_semi(stmt: ast::stmt) -> bool { ast::stmt_expr(e, _) { ret expr_requires_semi_to_be_stmt(e); } - ast::stmt_semi(e, _) { - ret false; - } } } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 747ca07bee5..97185b6dfb9 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1848,7 +1848,7 @@ class parser { token::SEMI { self.bump(); push(stmts, - @{node: stmt_semi(e, stmt_id) with *stmt}); + @{node: stmt_expr(e, stmt_id) with *stmt}); } token::RBRACE { expr = some(e); diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 5f2aada9fc6..171ad240635 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -682,11 +682,9 @@ fn print_stmt(s: ps, st: ast::stmt) { ast::stmt_expr(expr, _) { space_if_not_bol(s); print_expr(s, expr); - } - ast::stmt_semi(expr, _) { - space_if_not_bol(s); - print_expr(s, expr); - word(s.s, ";"); + if expr_requires_semi_to_be_stmt(expr) { + word(s.s, ";"); + } } } if parse::classify::stmt_ends_with_semi(st) { word(s.s, ";"); } diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 48f2e57de1c..d2e5b1d1f21 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -320,7 +320,6 @@ fn visit_stmt(s: @stmt, e: E, v: vt) { alt s.node { stmt_decl(d, _) { v.visit_decl(d, e, v); } stmt_expr(ex, _) { v.visit_expr(ex, e, v); } - stmt_semi(ex, _) { v.visit_expr(ex, e, v); } } } -- cgit 1.4.1-3-g733a5