summaryrefslogtreecommitdiffstats
path: root/tests/ui/feature-gates
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/feature-gates')
-rw-r--r--tests/ui/feature-gates/feature-gate-box-expr.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-box-expr.stderr12
-rw-r--r--tests/ui/feature-gates/feature-gate-box_syntax.rs6
-rw-r--r--tests/ui/feature-gates/feature-gate-box_syntax.stderr12
-rw-r--r--tests/ui/feature-gates/feature-gate-closure_track_caller.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-closure_track_caller.stderr15
-rw-r--r--tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.rs18
-rw-r--r--tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.stderr30
-rw-r--r--tests/ui/feature-gates/feature-gate-link_cfg.stderr1
-rw-r--r--tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr2
-rw-r--r--tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr4
-rw-r--r--tests/ui/feature-gates/feature-gate-return_type_notation.cfg.stderr36
-rw-r--r--tests/ui/feature-gates/feature-gate-return_type_notation.no.stderr22
-rw-r--r--tests/ui/feature-gates/feature-gate-return_type_notation.rs22
-rw-r--r--tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr6
-rw-r--r--tests/ui/feature-gates/test-listing-format-json.rs18
-rw-r--r--tests/ui/feature-gates/test-listing-format-json.run.stderr1
17 files changed, 170 insertions, 51 deletions
diff --git a/tests/ui/feature-gates/feature-gate-box-expr.rs b/tests/ui/feature-gates/feature-gate-box-expr.rs
deleted file mode 100644
index 870253d2f..000000000
--- a/tests/ui/feature-gates/feature-gate-box-expr.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-// gate-test-box_syntax
-
-// Check that `box EXPR` is feature-gated.
-//
-// See also feature-gate-placement-expr.rs
-//
-// (Note that the two tests are separated since the checks appear to
-// be performed at distinct phases, with an abort_if_errors call
-// separating them.)
-
-fn main() {
- let x = box 'c'; //~ ERROR box expression syntax is experimental
- println!("x: {}", x);
-}
diff --git a/tests/ui/feature-gates/feature-gate-box-expr.stderr b/tests/ui/feature-gates/feature-gate-box-expr.stderr
deleted file mode 100644
index af864b25f..000000000
--- a/tests/ui/feature-gates/feature-gate-box-expr.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0658]: box expression syntax is experimental; you can call `Box::new` instead
- --> $DIR/feature-gate-box-expr.rs:12:13
- |
-LL | let x = box 'c';
- | ^^^^^^^
- |
- = note: see issue #49733 <https://github.com/rust-lang/rust/issues/49733> for more information
- = help: add `#![feature(box_syntax)]` to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-box_syntax.rs b/tests/ui/feature-gates/feature-gate-box_syntax.rs
deleted file mode 100644
index 778660cc0..000000000
--- a/tests/ui/feature-gates/feature-gate-box_syntax.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-// Test that the use of the box syntax is gated by `box_syntax` feature gate.
-
-fn main() {
- let x = box 3;
- //~^ ERROR box expression syntax is experimental; you can call `Box::new` instead
-}
diff --git a/tests/ui/feature-gates/feature-gate-box_syntax.stderr b/tests/ui/feature-gates/feature-gate-box_syntax.stderr
deleted file mode 100644
index dcf8eeed7..000000000
--- a/tests/ui/feature-gates/feature-gate-box_syntax.stderr
+++ /dev/null
@@ -1,12 +0,0 @@
-error[E0658]: box expression syntax is experimental; you can call `Box::new` instead
- --> $DIR/feature-gate-box_syntax.rs:4:13
- |
-LL | let x = box 3;
- | ^^^^^
- |
- = note: see issue #49733 <https://github.com/rust-lang/rust/issues/49733> for more information
- = help: add `#![feature(box_syntax)]` to the crate attributes to enable
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-closure_track_caller.rs b/tests/ui/feature-gates/feature-gate-closure_track_caller.rs
index a8d63a814..a4c91f3bc 100644
--- a/tests/ui/feature-gates/feature-gate-closure_track_caller.rs
+++ b/tests/ui/feature-gates/feature-gate-closure_track_caller.rs
@@ -1,7 +1,9 @@
+// edition:2021
#![feature(stmt_expr_attributes)]
#![feature(generators)]
fn main() {
let _closure = #[track_caller] || {}; //~ `#[track_caller]` on closures
let _generator = #[track_caller] || { yield; }; //~ `#[track_caller]` on closures
+ let _future = #[track_caller] async {}; //~ `#[track_caller]` on closures
}
diff --git a/tests/ui/feature-gates/feature-gate-closure_track_caller.stderr b/tests/ui/feature-gates/feature-gate-closure_track_caller.stderr
index ed63d74fe..cf2ea5fe1 100644
--- a/tests/ui/feature-gates/feature-gate-closure_track_caller.stderr
+++ b/tests/ui/feature-gates/feature-gate-closure_track_caller.stderr
@@ -1,5 +1,5 @@
error[E0658]: `#[track_caller]` on closures is currently unstable
- --> $DIR/feature-gate-closure_track_caller.rs:5:20
+ --> $DIR/feature-gate-closure_track_caller.rs:6:20
|
LL | let _closure = #[track_caller] || {};
| ^^^^^^^^^^^^^^^
@@ -8,7 +8,7 @@ LL | let _closure = #[track_caller] || {};
= help: add `#![feature(closure_track_caller)]` to the crate attributes to enable
error[E0658]: `#[track_caller]` on closures is currently unstable
- --> $DIR/feature-gate-closure_track_caller.rs:6:22
+ --> $DIR/feature-gate-closure_track_caller.rs:7:22
|
LL | let _generator = #[track_caller] || { yield; };
| ^^^^^^^^^^^^^^^
@@ -16,6 +16,15 @@ LL | let _generator = #[track_caller] || { yield; };
= note: see issue #87417 <https://github.com/rust-lang/rust/issues/87417> for more information
= help: add `#![feature(closure_track_caller)]` to the crate attributes to enable
-error: aborting due to 2 previous errors
+error[E0658]: `#[track_caller]` on closures is currently unstable
+ --> $DIR/feature-gate-closure_track_caller.rs:8:19
+ |
+LL | let _future = #[track_caller] async {};
+ | ^^^^^^^^^^^^^^^
+ |
+ = note: see issue #87417 <https://github.com/rust-lang/rust/issues/87417> for more information
+ = help: add `#![feature(closure_track_caller)]` to the crate attributes to enable
+
+error: aborting due to 3 previous errors
For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.rs b/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.rs
new file mode 100644
index 000000000..de0487cdb
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.rs
@@ -0,0 +1,18 @@
+trait Foo {
+ type Bar;
+}
+
+impl Foo for () {
+ type Bar = impl std::fmt::Debug;
+ //~^ ERROR: `impl Trait` in associated types is unstable
+}
+
+struct Mop;
+
+impl Mop {
+ type Bop = impl std::fmt::Debug;
+ //~^ ERROR: `impl Trait` in associated types is unstable
+ //~| ERROR: inherent associated types are unstable
+}
+
+fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.stderr b/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.stderr
new file mode 100644
index 000000000..9a1ded968
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-impl_trait_in_assoc_type.stderr
@@ -0,0 +1,30 @@
+error[E0658]: `impl Trait` in associated types is unstable
+ --> $DIR/feature-gate-impl_trait_in_assoc_type.rs:6:16
+ |
+LL | type Bar = impl std::fmt::Debug;
+ | ^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+ = help: add `#![feature(impl_trait_in_assoc_type)]` to the crate attributes to enable
+
+error[E0658]: `impl Trait` in associated types is unstable
+ --> $DIR/feature-gate-impl_trait_in_assoc_type.rs:13:16
+ |
+LL | type Bop = impl std::fmt::Debug;
+ | ^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
+ = help: add `#![feature(impl_trait_in_assoc_type)]` to the crate attributes to enable
+
+error[E0658]: inherent associated types are unstable
+ --> $DIR/feature-gate-impl_trait_in_assoc_type.rs:13:5
+ |
+LL | type Bop = impl std::fmt::Debug;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #8995 <https://github.com/rust-lang/rust/issues/8995> for more information
+ = help: add `#![feature(inherent_associated_types)]` to the crate attributes to enable
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-link_cfg.stderr b/tests/ui/feature-gates/feature-gate-link_cfg.stderr
index 8f47d5965..97b6cbca4 100644
--- a/tests/ui/feature-gates/feature-gate-link_cfg.stderr
+++ b/tests/ui/feature-gates/feature-gate-link_cfg.stderr
@@ -4,7 +4,6 @@ error[E0658]: link cfg is unstable
LL | #[link(name = "foo", cfg(foo))]
| ^^^^^^^^
|
- = note: see issue #37406 <https://github.com/rust-lang/rust/issues/37406> for more information
= help: add `#![feature(link_cfg)]` to the crate attributes to enable
error: aborting due to previous error
diff --git a/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr b/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr
index 4d79ce3c6..fb39c404c 100644
--- a/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr
+++ b/tests/ui/feature-gates/feature-gate-non_exhaustive_omitted_patterns_lint.stderr
@@ -115,7 +115,7 @@ LL | A, B, C,
= note: the matched value is of type `Foo`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
-LL ~ Foo::B => {}
+LL ~ Foo::B => {},
LL + Foo::C => todo!()
|
diff --git a/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr b/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr
index b55106833..853b57052 100644
--- a/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr
+++ b/tests/ui/feature-gates/feature-gate-precise_pointer_size_matching.stderr
@@ -9,7 +9,7 @@ LL | match 0usize {
= help: add `#![feature(precise_pointer_size_matching)]` to the crate attributes to enable precise `usize` matching
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
-LL ~ 0..=usize::MAX => {}
+LL ~ 0..=usize::MAX => {},
LL + _ => todo!()
|
@@ -24,7 +24,7 @@ LL | match 0isize {
= help: add `#![feature(precise_pointer_size_matching)]` to the crate attributes to enable precise `isize` matching
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown
|
-LL ~ isize::MIN..=isize::MAX => {}
+LL ~ isize::MIN..=isize::MAX => {},
LL + _ => todo!()
|
diff --git a/tests/ui/feature-gates/feature-gate-return_type_notation.cfg.stderr b/tests/ui/feature-gates/feature-gate-return_type_notation.cfg.stderr
new file mode 100644
index 000000000..c3a371e25
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-return_type_notation.cfg.stderr
@@ -0,0 +1,36 @@
+error[E0658]: return type notation is experimental
+ --> $DIR/feature-gate-return_type_notation.rs:15:17
+ |
+LL | fn foo<T: Trait<m(): Send>>() {}
+ | ^^^^^^^^^
+ |
+ = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
+ = help: add `#![feature(return_type_notation)]` to the crate attributes to enable
+
+warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
+ --> $DIR/feature-gate-return_type_notation.rs:7:12
+ |
+LL | #![feature(async_fn_in_trait)]
+ | ^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
+ = note: `#[warn(incomplete_features)]` on by default
+
+error: parenthesized generic arguments cannot be used in associated type constraints
+ --> $DIR/feature-gate-return_type_notation.rs:15:17
+ |
+LL | fn foo<T: Trait<m(): Send>>() {}
+ | ^--
+ | |
+ | help: remove these parentheses
+
+error[E0220]: associated type `m` not found for `Trait`
+ --> $DIR/feature-gate-return_type_notation.rs:15:17
+ |
+LL | fn foo<T: Trait<m(): Send>>() {}
+ | ^ associated type `m` not found
+
+error: aborting due to 3 previous errors; 1 warning emitted
+
+Some errors have detailed explanations: E0220, E0658.
+For more information about an error, try `rustc --explain E0220`.
diff --git a/tests/ui/feature-gates/feature-gate-return_type_notation.no.stderr b/tests/ui/feature-gates/feature-gate-return_type_notation.no.stderr
new file mode 100644
index 000000000..52c90c156
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-return_type_notation.no.stderr
@@ -0,0 +1,22 @@
+warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
+ --> $DIR/feature-gate-return_type_notation.rs:7:12
+ |
+LL | #![feature(async_fn_in_trait)]
+ | ^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
+ = note: `#[warn(incomplete_features)]` on by default
+
+warning: return type notation is experimental
+ --> $DIR/feature-gate-return_type_notation.rs:15:17
+ |
+LL | fn foo<T: Trait<m(): Send>>() {}
+ | ^^^^^^^^^
+ |
+ = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
+ = help: add `#![feature(return_type_notation)]` to the crate attributes to enable
+ = warning: unstable syntax can change at any point in the future, causing a hard error!
+ = note: for more information, see issue #65860 <https://github.com/rust-lang/rust/issues/65860>
+
+warning: 2 warnings emitted
+
diff --git a/tests/ui/feature-gates/feature-gate-return_type_notation.rs b/tests/ui/feature-gates/feature-gate-return_type_notation.rs
new file mode 100644
index 000000000..5028b9ec9
--- /dev/null
+++ b/tests/ui/feature-gates/feature-gate-return_type_notation.rs
@@ -0,0 +1,22 @@
+// edition: 2021
+// revisions: cfg no
+
+//[no] check-pass
+// Since we're not adding new syntax, `cfg`'d out RTN must pass.
+
+#![feature(async_fn_in_trait)]
+//~^ WARN the feature `async_fn_in_trait` is incomplete
+
+trait Trait {
+ async fn m();
+}
+
+#[cfg(cfg)]
+fn foo<T: Trait<m(): Send>>() {}
+//[cfg]~^ ERROR return type notation is experimental
+//[cfg]~| ERROR parenthesized generic arguments cannot be used in associated type constraints
+//[cfg]~| ERROR associated type `m` not found for `Trait`
+//[no]~^^^^ WARN return type notation is experimental
+//[no]~| WARN unstable syntax can change at any point in the future, causing a hard error!
+
+fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
index f647380ef..b1613f638 100644
--- a/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
+++ b/tests/ui/feature-gates/feature-gate-unboxed-closures-manual-impls.stderr
@@ -64,6 +64,12 @@ error[E0229]: associated type bindings are not allowed here
|
LL | impl FnOnce() for Foo1 {
| ^^^^^^^^ associated type not allowed here
+ |
+help: parenthesized trait syntax expands to `FnOnce<(), Output=()>`
+ --> $DIR/feature-gate-unboxed-closures-manual-impls.rs:16:6
+ |
+LL | impl FnOnce() for Foo1 {
+ | ^^^^^^^^
error[E0658]: the precise format of `Fn`-family traits' type parameters is subject to change
--> $DIR/feature-gate-unboxed-closures-manual-impls.rs:23:6
diff --git a/tests/ui/feature-gates/test-listing-format-json.rs b/tests/ui/feature-gates/test-listing-format-json.rs
new file mode 100644
index 000000000..2dd0e10b5
--- /dev/null
+++ b/tests/ui/feature-gates/test-listing-format-json.rs
@@ -0,0 +1,18 @@
+// no-prefer-dynamic
+// compile-flags: --test
+// run-flags: --list --format json -Zunstable-options
+// run-fail
+// check-run-results
+// ignore-nightly
+// unset-exec-env:RUSTC_BOOTSTRAP
+
+#![cfg(test)]
+#[test]
+fn m_test() {}
+
+#[test]
+#[ignore = "not yet implemented"]
+fn z_test() {}
+
+#[test]
+fn a_test() {}
diff --git a/tests/ui/feature-gates/test-listing-format-json.run.stderr b/tests/ui/feature-gates/test-listing-format-json.run.stderr
new file mode 100644
index 000000000..e81cb81f3
--- /dev/null
+++ b/tests/ui/feature-gates/test-listing-format-json.run.stderr
@@ -0,0 +1 @@
+error: the option `Z` is only accepted on the nightly compiler