Skip to content

Commit

Permalink
Move if let behind a feature gate
Browse files Browse the repository at this point in the history
  • Loading branch information
lilyball authored and Jakub Wieczorek committed Sep 30, 2014
1 parent 976438f commit 8a60952
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/doc/reference.md
Expand Up @@ -2441,6 +2441,8 @@ The currently implemented features of the reference compiler are:
* `default_type_params` - Allows use of default type parameters. The future of
this feature is uncertain.

* `if_let` - Allows use of the `if let` desugaring syntax.

* `intrinsics` - Allows use of the "rust-intrinsics" ABI. Compiler intrinsics
are inherently unstable and no promise about them is made.

Expand Down
2 changes: 1 addition & 1 deletion src/doc/rust.md
@@ -1,3 +1,3 @@
% The Rust Reference Manual

The manual has moved, and is now called [the reference](reference.html).
The manual has moved, and is now called [the reference](reference.html).
6 changes: 6 additions & 0 deletions src/libsyntax/feature_gate.rs
Expand Up @@ -71,6 +71,8 @@ static KNOWN_FEATURES: &'static [(&'static str, Status)] = &[
("associated_types", Active),
("visible_private_types", Active),

("if_let", Active),

// if you change this list without updating src/doc/rust.md, cmr will be sad

// A temporary feature gate used to enable parser extensions needed
Expand Down Expand Up @@ -356,6 +358,10 @@ impl<'a, 'v> Visitor<'v> for Context<'a> {
e.span,
"tuple indexing is experimental");
}
ast::ExprIfLet(..) => {
self.gate_feature("if_let", e.span,
"`if let` desugaring is experimental");
}
_ => {}
}
visit::walk_expr(self, e);
Expand Down
2 changes: 1 addition & 1 deletion src/test/compile-fail/if-let.rs
Expand Up @@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(macro_rules)]
#![feature(macro_rules,if_let)]

fn macros() {
macro_rules! foo{
Expand Down
1 change: 1 addition & 0 deletions src/test/compile-fail/lint-unnecessary-parens.rs
Expand Up @@ -9,6 +9,7 @@
// except according to those terms.

#![deny(unnecessary_parens)]
#![feature(if_let)]

#[deriving(Eq, PartialEq)]
struct X { y: bool }
Expand Down
2 changes: 2 additions & 0 deletions src/test/run-pass/if-let.rs
Expand Up @@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(if_let)]

pub fn main() {
let x = Some(3i);
if let Some(y) = x {
Expand Down

0 comments on commit 8a60952

Please sign in to comment.