useful for profiling / PGO."),
relro_level: Option<RelroLevel> = (None, parse_relro_level, [TRACKED],
"choose which RELRO level to use"),
- disable_ast_check_for_mutation_in_guard: bool = (false, parse_bool, [UNTRACKED],
- "skip AST-based mutation-in-guard check (mir-borrowck provides more precise check)"),
nll_subminimal_causes: bool = (false, parse_bool, [UNTRACKED],
"when tracking region error causes, accept subminimal results for faster execution."),
nll_facts: bool = (false, parse_bool, [UNTRACKED],
/// If true, we should use a naive AST walk to determine if match
/// guard could perform bad mutations (or mutable-borrows).
pub fn check_for_mutation_in_guard_via_ast_walk(self) -> bool {
- // If someone passes the `-Z` flag, they're asking for the footgun.
- if self.sess.opts.debugging_opts.disable_ast_check_for_mutation_in_guard {
- return false;
- }
-
// If someone requests the feature, then be a little more
// careful and ensure that MIR-borrowck is enabled (which can
// happen via edition selection, via `feature(nll)`, or via an
// This test illustrates that under NLL, we can remove our overly
// conservative approach for disallowing mutations of match inputs.
-// See further discussion on rust-lang/rust#24535 and
-// rust-lang/rfcs#1006.
-
-// compile-flags: -Z disable-ast-check-for-mutation-in-guard
+// See further discussion on rust-lang/rust#24535,
+// rust-lang/rfcs#1006, and rust-lang/rfcs#107
#![feature(nll)]
+#![feature(bind_by_move_pattern_guards)]
fn main() {
rust_issue_24535();
// reject it. But I want to make sure that we continue to reject it
// (under NLL) even when that conservaive check goes away.
-// compile-flags: -Z disable-ast-check-for-mutation-in-guard
+#![feature(bind_by_move_pattern_guards)]
#![feature(nll)]
fn main() {
// Test that we don't allow mutating the value being matched on in a way that
// changes which patterns it matches, until we have chosen an arm.
-// compile-flags: -Zdisable-ast-check-for-mutation-in-guard
+#![feature(bind_by_move_pattern_guards)]
#![feature(nll)]
fn ok_mutation_in_guard(mut q: i32) {