Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 7 pull requests #78974

Closed
wants to merge 28 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8b20e9b
Add shortcut for theme picker menu
GuillaumeGomez Nov 5, 2020
1216432
Consider mutable ident binding patterns to be simple
ebkalderon Sep 15, 2020
26b11d6
Don't reuse bindings for `ref mut`
jyn514 Nov 8, 2020
d76cdb0
const param macro test
lcnr Nov 10, 2020
359031e
add generic param mismatch test
lcnr Nov 10, 2020
dd78188
add macro_rules test regarding braces
lcnr Nov 10, 2020
a8310e2
add associated type bounds test
lcnr Nov 10, 2020
19a3fe6
exhaustively enumerate all values of a const param
lcnr Nov 10, 2020
a30b28e
try referencing outer params
lcnr Nov 10, 2020
de1ebbb
const param in async
lcnr Nov 10, 2020
4b5cd04
add test for where clauses mentioning const params
lcnr Nov 10, 2020
f4790ec
add cross crate test
lcnr Nov 10, 2020
96793d3
Handle and test wildcard arguments
jyn514 Nov 10, 2020
46c921d
Improve the page title switch handling between search and doc
GuillaumeGomez Nov 10, 2020
9cf8a49
Don't print thread ids and names in `tracing` logs
jyn514 Nov 10, 2020
6e9ed8b
Enable thread names in debug logging only for `parallel_compiler`
jyn514 Nov 11, 2020
7d9f815
add rustdoc test
lcnr Nov 10, 2020
a9eacf3
add error-in-impl-trait const generics test
lcnr Nov 10, 2020
ad7f330
Add test `default_function_param`
eopb Nov 11, 2020
1d3f9d0
default_trait_param
eopb Nov 11, 2020
a8bc954
Update books
ehuss Nov 12, 2020
25fd89a
Rollup merge of #76730 - ebkalderon:rustdoc-fix-mut-args-async-fn, r=…
GuillaumeGomez Nov 12, 2020
7305584
Rollup merge of #78773 - GuillaumeGomez:theme-picker-shortcut, r=jyn514
GuillaumeGomez Nov 12, 2020
b31c678
Rollup merge of #78916 - lcnr:const-generics-tests, r=varkor
GuillaumeGomez Nov 12, 2020
7b25abf
Rollup merge of #78921 - GuillaumeGomez:search-result-title, r=jyn514
GuillaumeGomez Nov 12, 2020
9e28eb9
Rollup merge of #78933 - jyn514:tracing-output, r=oli-obk
GuillaumeGomez Nov 12, 2020
4ada95f
Rollup merge of #78960 - ethanboxx:const-gen-test-default-error, r=lcnr
GuillaumeGomez Nov 12, 2020
4d0f068
Rollup merge of #78971 - ehuss:update-books, r=ehuss
GuillaumeGomez Nov 12, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
203 changes: 203 additions & 0 deletions src/test/ui/const-generics/const-arg-in-const-arg.min.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:14:23
|
LL | let _: [u8; foo::<T>()];
| ^ cannot perform const operation using `T`
|
= note: type parameters may not be used in const expressions

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:15:23
|
LL | let _: [u8; bar::<N>()];
| ^ cannot perform const operation using `N`
|
= help: const parameters may only be used as standalone arguments, i.e. `N`

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:25:23
|
LL | let _ = [0; bar::<N>()];
| ^ cannot perform const operation using `N`
|
= help: const parameters may only be used as standalone arguments, i.e. `N`

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:30:24
|
LL | let _: Foo<{ foo::<T>() }>;
| ^ cannot perform const operation using `T`
|
= note: type parameters may not be used in const expressions

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:31:24
|
LL | let _: Foo<{ bar::<N>() }>;
| ^ cannot perform const operation using `N`
|
= help: const parameters may only be used as standalone arguments, i.e. `N`

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:36:27
|
LL | let _ = Foo::<{ foo::<T>() }>;
| ^ cannot perform const operation using `T`
|
= note: type parameters may not be used in const expressions

error: generic parameters may not be used in const operations
--> $DIR/const-arg-in-const-arg.rs:37:27
|
LL | let _ = Foo::<{ bar::<N>() }>;
| ^ cannot perform const operation using `N`
|
= help: const parameters may only be used as standalone arguments, i.e. `N`

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:16:23
|
LL | let _: [u8; faz::<'a>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:17:23
|
LL | let _: [u8; baz::<'a>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:18:23
|
LL | let _: [u8; faz::<'b>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:19:23
|
LL | let _: [u8; baz::<'b>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:26:23
|
LL | let _ = [0; faz::<'a>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:27:23
|
LL | let _ = [0; baz::<'a>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:28:23
|
LL | let _ = [0; faz::<'b>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:29:23
|
LL | let _ = [0; baz::<'b>(&())];
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:32:24
|
LL | let _: Foo<{ faz::<'a>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:33:24
|
LL | let _: Foo<{ baz::<'a>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:34:24
|
LL | let _: Foo<{ faz::<'b>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:35:24
|
LL | let _: Foo<{ baz::<'b>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:38:27
|
LL | let _ = Foo::<{ faz::<'a>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:39:27
|
LL | let _ = Foo::<{ baz::<'a>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:40:27
|
LL | let _ = Foo::<{ faz::<'b>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error[E0658]: a non-static lifetime is not allowed in a `const`
--> $DIR/const-arg-in-const-arg.rs:41:27
|
LL | let _ = Foo::<{ baz::<'b>(&()) }>;
| ^^
|
= note: see issue #44580 <https://github.com/rust-lang/rust/issues/44580> for more information
= help: add `#![feature(const_generics)]` to the crate attributes to enable

error: aborting due to 23 previous errors

For more information about this error, try `rustc --explain E0658`.
44 changes: 44 additions & 0 deletions src/test/ui/const-generics/const-arg-in-const-arg.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// revisions: min
// FIXME(const_generics): This test currently causes an ICE because
// we don't yet correctly deal with lifetimes, reenable this test once
// this is fixed.
#![cfg_attr(min, feature(min_const_generics))]

const fn foo<T>() -> usize { std::mem::size_of::<T>() }
const fn bar<const N: usize>() -> usize { N }
const fn faz<'a>(_: &'a ()) -> usize { 13 }
const fn baz<'a>(_: &'a ()) -> usize where &'a (): Sized { 13 }

struct Foo<const N: usize>;
fn test<'a, 'b, T, const N: usize>() where &'b (): Sized {
let _: [u8; foo::<T>()]; //~ ERROR generic parameters may not
let _: [u8; bar::<N>()]; //~ ERROR generic parameters may not
let _: [u8; faz::<'a>(&())]; //~ ERROR a non-static lifetime
let _: [u8; baz::<'a>(&())]; //~ ERROR a non-static lifetime
let _: [u8; faz::<'b>(&())]; //~ ERROR a non-static lifetime
let _: [u8; baz::<'b>(&())]; //~ ERROR a non-static lifetime

// NOTE: This can be a future compat warning instead of an error,
// so we stop compilation before emitting this error in this test.
let _ = [0; foo::<T>()];

let _ = [0; bar::<N>()]; //~ ERROR generic parameters may not
let _ = [0; faz::<'a>(&())]; //~ ERROR a non-static lifetime
let _ = [0; baz::<'a>(&())]; //~ ERROR a non-static lifetime
let _ = [0; faz::<'b>(&())]; //~ ERROR a non-static lifetime
let _ = [0; baz::<'b>(&())]; //~ ERROR a non-static lifetime
let _: Foo<{ foo::<T>() }>; //~ ERROR generic parameters may not
let _: Foo<{ bar::<N>() }>; //~ ERROR generic parameters may not
let _: Foo<{ faz::<'a>(&()) }>; //~ ERROR a non-static lifetime
let _: Foo<{ baz::<'a>(&()) }>; //~ ERROR a non-static lifetime
let _: Foo<{ faz::<'b>(&()) }>; //~ ERROR a non-static lifetime
let _: Foo<{ baz::<'b>(&()) }>; //~ ERROR a non-static lifetime
let _ = Foo::<{ foo::<T>() }>; //~ ERROR generic parameters may not
let _ = Foo::<{ bar::<N>() }>; //~ ERROR generic parameters may not
let _ = Foo::<{ faz::<'a>(&()) }>; //~ ERROR a non-static lifetime
let _ = Foo::<{ baz::<'a>(&()) }>; //~ ERROR a non-static lifetime
let _ = Foo::<{ faz::<'b>(&()) }>; //~ ERROR a non-static lifetime
let _ = Foo::<{ baz::<'b>(&()) }>; //~ ERROR a non-static lifetime
}

fn main() {}