Add let_else feature gate
This commit is contained in:
parent
ae32e88909
commit
960ea093ab
@ -1,6 +1,7 @@
|
||||
use crate::{ImplTraitContext, ImplTraitPosition, LoweringContext};
|
||||
use rustc_ast::{AttrVec, Block, BlockCheckMode, Expr, Local, LocalKind, Stmt, StmtKind};
|
||||
use rustc_hir as hir;
|
||||
use rustc_session::parse::feature_err;
|
||||
use rustc_span::symbol::Ident;
|
||||
use rustc_span::{sym, DesugaringKind};
|
||||
|
||||
@ -170,6 +171,15 @@ fn lower_let_else(
|
||||
span,
|
||||
kind: hir::ExprKind::If(let_expr, then_expr, Some(else_expr)),
|
||||
});
|
||||
if !self.sess.features_untracked().let_else {
|
||||
feature_err(
|
||||
&self.sess.parse_sess,
|
||||
sym::let_else,
|
||||
local.span,
|
||||
"`let...else` statements are unstable",
|
||||
)
|
||||
.emit();
|
||||
}
|
||||
(stmt, if_expr)
|
||||
}
|
||||
}
|
||||
|
@ -676,6 +676,9 @@ pub fn set(&self, features: &mut Features, span: Span) {
|
||||
/// Allows additional const parameter types, such as `&'static str` or user defined types
|
||||
(incomplete, adt_const_params, "1.56.0", Some(44580), None),
|
||||
|
||||
/// Allows `let...else` statements.
|
||||
(active, let_else, "1.56.0", Some(87335), None),
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// feature-group-end: actual feature gates
|
||||
// -------------------------------------------------------------------------
|
||||
|
@ -744,6 +744,7 @@
|
||||
le,
|
||||
len,
|
||||
let_chains,
|
||||
let_else,
|
||||
lhs,
|
||||
lib,
|
||||
libc,
|
||||
|
5
src/test/ui/feature-gates/feature-gate-let_else.rs
Normal file
5
src/test/ui/feature-gates/feature-gate-let_else.rs
Normal file
@ -0,0 +1,5 @@
|
||||
fn main() {
|
||||
let Some(x) = Some(1) else { //~ ERROR `let...else` statements are unstable
|
||||
return;
|
||||
};
|
||||
}
|
14
src/test/ui/feature-gates/feature-gate-let_else.stderr
Normal file
14
src/test/ui/feature-gates/feature-gate-let_else.stderr
Normal file
@ -0,0 +1,14 @@
|
||||
error[E0658]: `let...else` statements are unstable
|
||||
--> $DIR/feature-gate-let_else.rs:2:5
|
||||
|
|
||||
LL | / let Some(x) = Some(1) else {
|
||||
LL | | return;
|
||||
LL | | };
|
||||
| |______^
|
||||
|
|
||||
= note: see issue #87335 <https://github.com/rust-lang/rust/issues/87335> for more information
|
||||
= help: add `#![feature(let_else)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
Loading…
Reference in New Issue
Block a user