diff options
| author | bors <bors@rust-lang.org> | 2021-11-23 20:44:33 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-11-23 20:44:33 +0000 |
| commit | 65c55bf931a55e6b1e5ed14ad8623814a7386424 (patch) | |
| tree | 7ec30849821eb112fd0d8544c49c1c22c0a559e7 /src | |
| parent | 7b3cd075bbe309031b418650a9c32baf0b4a3276 (diff) | |
| parent | 3dc00111f2e24e5afef0234360e26acb58bb6e4f (diff) | |
Auto merge of #91159 - matthiaskrgr:rollup-91mgg5v, r=matthiaskrgr
Rollup of 6 pull requests Successful merges: - #90856 (Suggestion to wrap inner types using 'allocator_api' in tuple) - #91103 (Inhibit clicks on summary's children) - #91137 (Give people a single link they can click in the contributing guide) - #91140 (Split inline const to two feature gates and mark expression position inline const complete) - #91148 (Use `derive_default_enum` in the compiler) - #91153 (kernel_copy: avoid panic on unexpected OS error) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src')
31 files changed, 134 insertions, 37 deletions
diff --git a/src/doc/unstable-book/src/language-features/inline-const-pat.md b/src/doc/unstable-book/src/language-features/inline-const-pat.md new file mode 100644 index 00000000000..5f0f7547a0a --- /dev/null +++ b/src/doc/unstable-book/src/language-features/inline-const-pat.md @@ -0,0 +1,24 @@ +# `inline_const_pat` + +The tracking issue for this feature is: [#76001] + +See also [`inline_const`](inline-const.md) + +------ + +This feature allows you to use inline constant expressions in pattern position: + +```rust +#![feature(inline_const_pat)] + +const fn one() -> i32 { 1 } + +let some_int = 3; +match some_int { + const { 1 + 2 } => println!("Matched 1 + 2"), + const { one() } => println!("Matched const fn returning 1"), + _ => println!("Didn't match anything :("), +} +``` + +[#76001]: https://github.com/rust-lang/rust/issues/76001 diff --git a/src/doc/unstable-book/src/language-features/inline-const.md b/src/doc/unstable-book/src/language-features/inline-const.md index 00e1c79ca3f..7be70eed6ce 100644 --- a/src/doc/unstable-book/src/language-features/inline-const.md +++ b/src/doc/unstable-book/src/language-features/inline-const.md @@ -2,6 +2,8 @@ The tracking issue for this feature is: [#76001] +See also [`inline_const_pat`](inline-const-pat.md) + ------ This feature allows you to use inline constant expressions. For example, you can @@ -27,19 +29,4 @@ fn main() { } ``` -You can also use inline constant expressions in patterns: - -```rust -#![feature(inline_const)] - -const fn one() -> i32 { 1 } - -let some_int = 3; -match some_int { - const { 1 + 2 } => println!("Matched 1 + 2"), - const { one() } => println!("Matched const fn returning 1"), - _ => println!("Didn't match anything :("), -} -``` - [#76001]: https://github.com/rust-lang/rust/issues/76001 diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 4b55a0a69b6..32aa82195a9 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -886,6 +886,14 @@ function hideThemeButtonState() { } }); + onEachLazy(document.querySelectorAll(".rustdoc-toggle > summary:not(.hideme)"), function(el) { + el.addEventListener("click", function(e) { + if (e.target.tagName != "SUMMARY") { + e.preventDefault(); + } + }); + }); + onEachLazy(document.getElementsByClassName("notable-traits"), function(e) { e.onclick = function() { this.getElementsByClassName('notable-traits-tooltiptext')[0] diff --git a/src/test/rustdoc-gui/src/lib2/lib.rs b/src/test/rustdoc-gui/src/lib2/lib.rs index f2e76b546c4..79354ec8745 100644 --- a/src/test/rustdoc-gui/src/lib2/lib.rs +++ b/src/test/rustdoc-gui/src/lib2/lib.rs @@ -22,6 +22,8 @@ pub struct Foo { } impl Foo { + /// Some documentation + /// # A Heading pub fn a_method(&self) {} } diff --git a/src/test/rustdoc-gui/toggle-click-deadspace.goml b/src/test/rustdoc-gui/toggle-click-deadspace.goml new file mode 100644 index 00000000000..4d08927a7be --- /dev/null +++ b/src/test/rustdoc-gui/toggle-click-deadspace.goml @@ -0,0 +1,8 @@ +// This test ensures that clicking on a method summary, but not on the "[-]", +// doesn't toggle the <details>. +goto: file://|DOC_PATH|/test_docs/struct.Foo.html +assert-attribute: (".impl-items .rustdoc-toggle", {"open": ""}) +click: "h4.code-header" // This is the position of "pub" in "pub fn a_method" +assert-attribute: (".impl-items .rustdoc-toggle", {"open": ""}) +click: ".impl-items .rustdoc-toggle summary::before" // This is the position of "[-]" next to that pub fn. +assert-attribute-false: (".impl-items .rustdoc-toggle", {"open": ""}) diff --git a/src/test/ui/consts/closure-structural-match-issue-90013.rs b/src/test/ui/consts/closure-structural-match-issue-90013.rs index 7853ee41a90..1952ddb941e 100644 --- a/src/test/ui/consts/closure-structural-match-issue-90013.rs +++ b/src/test/ui/consts/closure-structural-match-issue-90013.rs @@ -1,6 +1,5 @@ // Regression test for issue 90013. // check-pass -#![allow(incomplete_features)] #![feature(inline_const)] fn main() { diff --git a/src/test/ui/consts/const-blocks/fn-call-in-const.rs b/src/test/ui/consts/const-blocks/fn-call-in-const.rs index 7936af75d84..20496f62712 100644 --- a/src/test/ui/consts/const-blocks/fn-call-in-const.rs +++ b/src/test/ui/consts/const-blocks/fn-call-in-const.rs @@ -1,7 +1,7 @@ // run-pass #![feature(inline_const)] -#![allow(unused, incomplete_features)] +#![allow(unused)] // Some type that is not copyable. struct Bar; diff --git a/src/test/ui/feature-gates/feature-gate-inline_const_pat.rs b/src/test/ui/feature-gates/feature-gate-inline_const_pat.rs new file mode 100644 index 00000000000..3d0df289fb7 --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-inline_const_pat.rs @@ -0,0 +1,4 @@ +fn main() { + let const { () } = (); + //~^ ERROR inline-const in pattern position is experimental [E0658] +} diff --git a/src/test/ui/feature-gates/feature-gate-inline_const_pat.stderr b/src/test/ui/feature-gates/feature-gate-inline_const_pat.stderr new file mode 100644 index 00000000000..ca533d8505c --- /dev/null +++ b/src/test/ui/feature-gates/feature-gate-inline_const_pat.stderr @@ -0,0 +1,12 @@ +error[E0658]: inline-const in pattern position is experimental + --> $DIR/feature-gate-inline_const_pat.rs:2:9 + | +LL | let const { () } = (); + | ^^^^^ + | + = note: see issue #76001 <https://github.com/rust-lang/rust/issues/76001> for more information + = help: add `#![feature(inline_const_pat)]` 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/src/test/ui/half-open-range-patterns/range_pat_interactions0.rs b/src/test/ui/half-open-range-patterns/range_pat_interactions0.rs index 4f478a69881..8f745e8104f 100644 --- a/src/test/ui/half-open-range-patterns/range_pat_interactions0.rs +++ b/src/test/ui/half-open-range-patterns/range_pat_interactions0.rs @@ -2,7 +2,7 @@ #![allow(incomplete_features)] #![feature(exclusive_range_pattern)] #![feature(half_open_range_patterns)] -#![feature(inline_const)] +#![feature(inline_const_pat)] fn main() { let mut if_lettable = vec![]; diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions3.rs b/src/test/ui/half-open-range-patterns/range_pat_interactions3.rs index 0afb5126059..41c7e46dfc1 100644 --- a/src/test/ui/half-open-range-patterns/range_pat_interactions3.rs +++ b/src/test/ui/half-open-range-patterns/range_pat_interactions3.rs @@ -12,7 +12,7 @@ fn main() { y @ (0..5 | 6) => or_two.push(y), //~^ exclusive range pattern syntax is experimental y @ 0..const { 5 + 1 } => assert_eq!(y, 5), - //~^ inline-const is experimental + //~^ inline-const in pattern position is experimental //~| exclusive range pattern syntax is experimental y @ -5.. => range_from.push(y), y @ ..-7 => assert_eq!(y, -8), diff --git a/src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr b/src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr index 8278e7cc6cf..5e36996a462 100644 --- a/src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr +++ b/src/test/ui/half-open-range-patterns/range_pat_interactions3.stderr @@ -7,14 +7,14 @@ LL | y @ ..-7 => assert_eq!(y, -8), = note: see issue #67264 <https://github.com/rust-lang/rust/issues/67264> for more information = help: add `#![feature(half_open_range_patterns)]` to the crate attributes to enable -error[E0658]: inline-const is experimental +error[E0658]: inline-const in pattern position is experimental --> $DIR/range_pat_interactions3.rs:14:20 | LL | y @ 0..const { 5 + 1 } => assert_eq!(y, 5), | ^^^^^ | = note: see issue #76001 <https://github.com/rust-lang/rust/issues/76001> for more information - = help: add `#![feature(inline_const)]` to the crate attributes to enable + = help: add `#![feature(inline_const_pat)]` to the crate attributes to enable error[E0658]: exclusive range pattern syntax is experimental --> $DIR/range_pat_interactions3.rs:10:17 diff --git a/src/test/ui/inline-const/const-expr-array-init.rs b/src/test/ui/inline-const/const-expr-array-init.rs index 8bb5dab1fa0..8a92cdbc0f9 100644 --- a/src/test/ui/inline-const/const-expr-array-init.rs +++ b/src/test/ui/inline-const/const-expr-array-init.rs @@ -1,6 +1,5 @@ // build-pass -#![allow(incomplete_features)] #![feature(inline_const)] use std::cell::Cell; diff --git a/src/test/ui/inline-const/const-expr-basic.rs b/src/test/ui/inline-const/const-expr-basic.rs index 9254c96a1e7..dac46fe25ec 100644 --- a/src/test/ui/inline-const/const-expr-basic.rs +++ b/src/test/ui/inline-const/const-expr-basic.rs @@ -1,7 +1,7 @@ // run-pass -#![allow(incomplete_features)] #![feature(inline_const)] + fn foo() -> i32 { const { let x = 5 + 10; diff --git a/src/test/ui/inline-const/const-expr-inference.rs b/src/test/ui/inline-const/const-expr-inference.rs index 6aa2a2f3367..0d5892a74d9 100644 --- a/src/test/ui/inline-const/const-expr-inference.rs +++ b/src/test/ui/inline-const/const-expr-inference.rs @@ -1,7 +1,6 @@ // check-pass #![feature(inline_const)] -#![allow(incomplete_features)] pub fn todo<T>() -> T { const { todo!() } diff --git a/src/test/ui/inline-const/const-expr-lifetime-err.rs b/src/test/ui/inline-const/const-expr-lifetime-err.rs index e56cbc94038..0a032a7338a 100644 --- a/src/test/ui/inline-const/const-expr-lifetime-err.rs +++ b/src/test/ui/inline-const/const-expr-lifetime-err.rs @@ -1,4 +1,3 @@ -#![allow(incomplete_features)] #![feature(const_mut_refs)] #![feature(inline_const)] diff --git a/src/test/ui/inline-const/const-expr-lifetime-err.stderr b/src/test/ui/inline-const/const-expr-lifetime-err.stderr index 30ecd338a85..a23f7c9a796 100644 --- a/src/test/ui/inline-const/const-expr-lifetime-err.stderr +++ b/src/test/ui/inline-const/const-expr-lifetime-err.stderr @@ -1,5 +1,5 @@ error[E0597]: `y` does not live long enough - --> $DIR/const-expr-lifetime-err.rs:24:30 + --> $DIR/const-expr-lifetime-err.rs:23:30 | LL | fn foo<'a>() { | -- lifetime `'a` defined here diff --git a/src/test/ui/inline-const/const-expr-lifetime.rs b/src/test/ui/inline-const/const-expr-lifetime.rs index f622f2cbddf..d883deb2845 100644 --- a/src/test/ui/inline-const/const-expr-lifetime.rs +++ b/src/test/ui/inline-const/const-expr-lifetime.rs @@ -1,6 +1,5 @@ // run-pass -#![allow(incomplete_features)] #![feature(const_mut_refs)] #![feature(inline_const)] diff --git a/src/test/ui/inline-const/const-expr-macro.rs b/src/test/ui/inline-const/const-expr-macro.rs index 66b58571751..041f3e15a29 100644 --- a/src/test/ui/inline-const/const-expr-macro.rs +++ b/src/test/ui/inline-const/const-expr-macro.rs @@ -1,7 +1,7 @@ // run-pass -#![allow(incomplete_features)] #![feature(inline_const)] + macro_rules! do_const_block{ ($val:block) => { const $val } } diff --git a/src/test/ui/inline-const/const-expr-reference.rs b/src/test/ui/inline-const/const-expr-reference.rs index 747f14e4bd0..a54d879f69d 100644 --- a/src/test/ui/inline-const/const-expr-reference.rs +++ b/src/test/ui/inline-const/const-expr-reference.rs @@ -1,6 +1,5 @@ // run-pass -#![allow(incomplete_features)] #![feature(inline_const)] const fn bar() -> i32 { diff --git a/src/test/ui/inline-const/const-match-pat-generic.rs b/src/test/ui/inline-const/const-match-pat-generic.rs index 61680d653d0..4486411698a 100644 --- a/src/test/ui/inline-const/const-match-pat-generic.rs +++ b/src/test/ui/inline-const/const-match-pat-generic.rs @@ -1,5 +1,5 @@ #![allow(incomplete_features)] -#![feature(inline_const)] +#![feature(inline_const_pat)] // rust-lang/rust#82518: ICE with inline-const in match referencing const-generic parameter diff --git a/src/test/ui/inline-const/const-match-pat-inference.rs b/src/test/ui/inline-const/const-match-pat-inference.rs index 61188ed5d47..d83ae6e9834 100644 --- a/src/test/ui/inline-const/const-match-pat-inference.rs +++ b/src/test/ui/inline-const/const-match-pat-inference.rs @@ -1,6 +1,6 @@ // check-pass -#![feature(inline_const)] +#![feature(inline_const_pat)] #![allow(incomplete_features)] fn main() { diff --git a/src/test/ui/inline-const/const-match-pat-lifetime-err.rs b/src/test/ui/inline-const/const-match-pat-lifetime-err.rs index bc5aa248944..436b8037f30 100644 --- a/src/test/ui/inline-const/const-match-pat-lifetime-err.rs +++ b/src/test/ui/inline-const/const-match-pat-lifetime-err.rs @@ -2,7 +2,7 @@ #![allow(incomplete_features)] #![feature(const_mut_refs)] -#![feature(inline_const)] +#![feature(inline_const_pat)] use std::marker::PhantomData; diff --git a/src/test/ui/inline-const/const-match-pat-lifetime.rs b/src/test/ui/inline-const/const-match-pat-lifetime.rs index 3d986f0d9ee..6d943bbcc01 100644 --- a/src/test/ui/inline-const/const-match-pat-lifetime.rs +++ b/src/test/ui/inline-const/const-match-pat-lifetime.rs @@ -3,6 +3,7 @@ #![allow(incomplete_features)] #![feature(const_mut_refs)] #![feature(inline_const)] +#![feature(inline_const_pat)] use std::marker::PhantomData; diff --git a/src/test/ui/inline-const/const-match-pat-range.rs b/src/test/ui/inline-const/const-match-pat-range.rs index eefe43a1a22..7dc8c11355a 100644 --- a/src/test/ui/inline-const/const-match-pat-range.rs +++ b/src/test/ui/inline-const/const-match-pat-range.rs @@ -1,7 +1,7 @@ // build-pass #![allow(incomplete_features)] -#![feature(inline_const, half_open_range_patterns, exclusive_range_pattern)] +#![feature(inline_const_pat, half_open_range_patterns, exclusive_range_pattern)] fn main() { const N: u32 = 10; let x: u32 = 3; diff --git a/src/test/ui/inline-const/const-match-pat.rs b/src/test/ui/inline-const/const-match-pat.rs index c0dc90d971a..2f55e16b35c 100644 --- a/src/test/ui/inline-const/const-match-pat.rs +++ b/src/test/ui/inline-const/const-match-pat.rs @@ -1,7 +1,7 @@ // run-pass #![allow(incomplete_features)] -#![feature(inline_const)] +#![feature(inline_const_pat)] const MMIO_BIT1: u8 = 4; const MMIO_BIT2: u8 = 5; diff --git a/src/test/ui/lint/dead-code/anon-const-in-pat.rs b/src/test/ui/lint/dead-code/anon-const-in-pat.rs index 4c6211a279a..d3e39c0de69 100644 --- a/src/test/ui/lint/dead-code/anon-const-in-pat.rs +++ b/src/test/ui/lint/dead-code/anon-const-in-pat.rs @@ -1,5 +1,5 @@ // check-pass -#![feature(inline_const)] +#![feature(inline_const_pat)] #![allow(incomplete_features)] #![deny(dead_code)] diff --git a/src/test/ui/pattern/non-structural-match-types.rs b/src/test/ui/pattern/non-structural-match-types.rs index 713418fc5b2..5c331547366 100644 --- a/src/test/ui/pattern/non-structural-match-types.rs +++ b/src/test/ui/pattern/non-structural-match-types.rs @@ -2,7 +2,7 @@ #![allow(incomplete_features)] #![allow(unreachable_code)] #![feature(const_async_blocks)] -#![feature(inline_const)] +#![feature(inline_const_pat)] fn main() { match loop {} { diff --git a/src/test/ui/simd/intrinsic/generic-elements-pass.rs b/src/test/ui/simd/intrinsic/generic-elements-pass.rs index 08544bce45d..3c913c0adfa 100644 --- a/src/test/ui/simd/intrinsic/generic-elements-pass.rs +++ b/src/test/ui/simd/intrinsic/generic-elements-pass.rs @@ -2,7 +2,6 @@ // ignore-emscripten FIXME(#45351) hits an LLVM assert #![feature(repr_simd, platform_intrinsics)] -#![allow(incomplete_features)] #![feature(inline_const)] #[repr(simd)] diff --git a/src/test/ui/stability-attribute/suggest-vec-allocator-api.rs b/src/test/ui/stability-attribute/suggest-vec-allocator-api.rs new file mode 100644 index 00000000000..fac52ab77c6 --- /dev/null +++ b/src/test/ui/stability-attribute/suggest-vec-allocator-api.rs @@ -0,0 +1,9 @@ +fn main() { + let _: Vec<u8, _> = vec![]; //~ ERROR use of unstable library feature 'allocator_api' + #[rustfmt::skip] + let _: Vec< + String, + _> = vec![]; //~ ERROR use of unstable library feature 'allocator_api' + let _ = Vec::<u16, _>::new(); //~ ERROR use of unstable library feature 'allocator_api' + let _boxed: Box<u32, _> = Box::new(10); //~ ERROR use of unstable library feature 'allocator_api' +} diff --git a/src/test/ui/stability-attribute/suggest-vec-allocator-api.stderr b/src/test/ui/stability-attribute/suggest-vec-allocator-api.stderr new file mode 100644 index 00000000000..41e5787b8c2 --- /dev/null +++ b/src/test/ui/stability-attribute/suggest-vec-allocator-api.stderr @@ -0,0 +1,49 @@ +error[E0658]: use of unstable library feature 'allocator_api' + --> $DIR/suggest-vec-allocator-api.rs:2:20 + | +LL | let _: Vec<u8, _> = vec![]; + | ----^ + | | + | help: consider wrapping the inner types in tuple: `(u8, _)` + | + = note: see issue #32838 <https://github.com/rust-lang/rust/issues/32838> for more information + = help: add `#![feature(allocator_api)]` to the crate attributes to enable + +error[E0658]: use of unstable library feature 'allocator_api' + --> $DIR/suggest-vec-allocator-api.rs:6:9 + | +LL | _> = vec![]; + | ^ + | + = note: see issue #32838 <https://github.com/rust-lang/rust/issues/32838> for more information + = help: add `#![feature(allocator_api)]` to the crate attributes to enable +help: consider wrapping the inner types in tuple + | +LL ~ let _: Vec<( +LL + String, +LL ~ _)> = vec![]; + | + +error[E0658]: use of unstable library feature 'allocator_api' + --> $DIR/suggest-vec-allocator-api.rs:8:26 + | +LL | let _boxed: Box<u32, _> = Box::new(10); + | ^ + | + = note: see issue #32838 <https://github.com/rust-lang/rust/issues/32838> for more information + = help: add `#![feature(allocator_api)]` to the crate attributes to enable + +error[E0658]: use of unstable library feature 'allocator_api' + --> $DIR/suggest-vec-allocator-api.rs:7:24 + | +LL | let _ = Vec::<u16, _>::new(); + | -----^ + | | + | help: consider wrapping the inner types in tuple: `(u16, _)` + | + = note: see issue #32838 <https://github.com/rust-lang/rust/issues/32838> for more information + = help: add `#![feature(allocator_api)]` to the crate attributes to enable + +error: aborting due to 4 previous errors + +For more information about this error, try `rustc --explain E0658`. |
