about summary refs log tree commit diff
path: root/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs')
-rw-r--r--tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs26
1 files changed, 15 insertions, 11 deletions
diff --git a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs
index 4e048570c33..ea6f028fe4b 100644
--- a/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs
+++ b/tests/ui/pattern/rfc-3627-match-ergonomics-2024/experimental/ref-binding-on-inh-ref-errors.rs
@@ -1,35 +1,37 @@
-//@ revisions: stable2021 classic2024 structural2024
+//@ revisions: stable2021 classic2021 structural2021 classic2024 structural2024
 //@[stable2021] edition: 2021
+//@[classic2021] edition: 2021
+//@[structural2021] edition: 2021
 //@[classic2024] edition: 2024
 //@[structural2024] edition: 2024
 //! Tests for errors from binding with `ref x` under a by-ref default binding mode in edition 2024.
 //! These can't be in the same body as tests for other errors, since they're emitted during THIR
 //! construction. The errors on stable edition 2021 Rust are unrelated.
 #![allow(incomplete_features)]
-#![cfg_attr(classic2024, feature(ref_pat_eat_one_layer_2024))]
-#![cfg_attr(structural2024, feature(ref_pat_eat_one_layer_2024_structural))]
+#![cfg_attr(any(classic2021, classic2024), feature(ref_pat_eat_one_layer_2024))]
+#![cfg_attr(any(structural2021, structural2024), feature(ref_pat_eat_one_layer_2024_structural))]
 
 /// These only fail on the eat-inner variant of the new edition 2024 pattern typing rules.
 /// The eat-outer variant eats the inherited reference, so binding with `ref` isn't a problem.
 fn errors_from_eating_the_real_reference() {
     let [&ref x] = &[&0];
     //[structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
     #[cfg(classic2024)] let _: &&u32 = x;
 
     let [&ref x] = &mut [&0];
     //[structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
     #[cfg(classic2024)] let _: &&u32 = x;
 
     let [&mut ref x] = &mut [&mut 0];
     //[structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
     #[cfg(classic2024)] let _: &&mut u32 = x;
 
     let [&mut ref mut x] = &mut [&mut 0];
     //[structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &mut u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &mut u32 = x;
     #[cfg(classic2024)] let _: &mut &mut u32 = x;
 }
 
@@ -40,12 +42,14 @@ fn errors_from_eating_the_real_reference_caught_in_hir_typeck_on_stable() {
     //[stable2021]~^ ERROR: mismatched types
     //[stable2021]~| types differ in mutability
     //[structural2024]~^^^ ERROR: binding modifiers may only be written when the default binding mode is `move`
+    #[cfg(any(classic2021, structural2021))] let _: &u32 = x;
     #[cfg(classic2024)] let _: &&mut u32 = x;
 
     let [&ref x] = &mut [&mut 0];
     //[stable2021]~^ ERROR: mismatched types
     //[stable2021]~| types differ in mutability
     //[structural2024]~^^^ ERROR: binding modifiers may only be written when the default binding mode is `move`
+    #[cfg(any(classic2021, structural2021))] let _: &u32 = x;
     #[cfg(classic2024)] let _: &&mut u32 = x;
 }
 
@@ -55,7 +59,7 @@ fn errors_dependent_on_eating_order_caught_in_hir_typeck_when_eating_outer() {
     //[classic2024]~^ ERROR: mismatched types
     //[classic2024]~| cannot match inherited `&` with `&mut` pattern
     //[structural2024]~^^^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
 }
 
 /// These should be errors in all editions. In edition 2024, they should be caught by the pattern
@@ -74,13 +78,13 @@ fn borrowck_errors_in_old_editions() {
 pub fn main() {
     let [ref x] = &[0];
     //[classic2024,structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
 
     let [ref x] = &mut [0];
     //[classic2024,structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &u32 = x;
 
     let [ref mut x] = &mut [0];
     //[classic2024,structural2024]~^ ERROR: binding modifiers may only be written when the default binding mode is `move`
-    #[cfg(stable2021)] let _: &mut u32 = x;
+    #[cfg(any(stable2021, classic2021, structural2021))] let _: &mut u32 = x;
 }