]> git.lizzy.rs Git - rust.git/blobdiff - src/libsyntax/feature_gate.rs
rollup merge of #20723: pnkfelix/feature-gate-box-syntax
[rust.git] / src / libsyntax / feature_gate.rs
index 21d3e4fef7f9675f0930fd4f4f76e5e0fef931cf..2cfcd38d48fca9d4be9034fb232dd48bbfbb7dd8 100644 (file)
@@ -69,7 +69,8 @@
     ("tuple_indexing", Accepted),
     ("associated_types", Accepted),
     ("visible_private_types", Active),
-    ("slicing_syntax", Accepted),
+    ("slicing_syntax", Active),
+    ("box_syntax", Active),
 
     ("if_let", Accepted),
     ("while_let", Accepted),
@@ -337,6 +338,15 @@ fn visit_ty(&mut self, t: &ast::Ty) {
     }
 
     fn visit_expr(&mut self, e: &ast::Expr) {
+        match e.node {
+            ast::ExprBox(..) | ast::ExprUnary(ast::UnOp::UnUniq, _) => {
+                self.gate_feature("box_syntax",
+                                  e.span,
+                                  "box expression syntax is experimental in alpha release; \
+                                   you can call `Box::new` instead.");
+            }
+            _ => {}
+        }
         visit::walk_expr(self, e);
     }
 
@@ -357,6 +367,11 @@ fn visit_pat(&mut self, pattern: &ast::Pat) {
                                    but at the end of a slice (e.g. \
                                    `[0, ..xs, 0]` are experimental")
             }
+            ast::PatBox(..) => {
+                self.gate_feature("box_syntax",
+                                  pattern.span,
+                                  "box pattern syntax is experimental in alpha release");
+            }
             _ => {}
         }
         visit::walk_pat(self, pattern)