diff options
| author | bors <bors@rust-lang.org> | 2020-08-08 01:48:35 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-08-08 01:48:35 +0000 |
| commit | f9c2177ddc605f9c75ca1a3e6ddb33835b8a178d (patch) | |
| tree | d8f6d0b66e018cde836a6fb6faa7a7f38116c84b /src/librustc_parse/parser | |
| parent | f3a9de9b08659e20ce7c282ed77bc43ddd149107 (diff) | |
| parent | 644c8949121da0c16f65b772bf6e217748d94530 (diff) | |
Auto merge of #74877 - lcnr:min_const_generics, r=oli-obk
Implement the `min_const_generics` feature gate
Implements both https://github.com/rust-lang/lang-team/issues/37 and https://github.com/rust-lang/compiler-team/issues/332.
Adds the new feature gate `#![feature(min_const_generics)]`.
This feature gate adds the following limitations to using const generics:
- generic parameters must only be used in types if they are trivial. (either `N` or `{ N }`)
- generic parameters must be either integers, `bool` or `char`.
We do allow arbitrary expressions in associated consts though, meaning that the following is allowed,
even if `<[u8; 0] as Foo>::ASSOC` is not const evaluatable.
```rust
trait Foo {
const ASSOC: usize;
}
impl<const N: usize> Foo for [u8; N] {
const ASSOC: usize = 64 / N;
}
```
r? @varkor cc @eddyb @withoutboats
Diffstat (limited to 'src/librustc_parse/parser')
| -rw-r--r-- | src/librustc_parse/parser/generics.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/librustc_parse/parser/generics.rs b/src/librustc_parse/parser/generics.rs index 47794746126..be72ed6dffb 100644 --- a/src/librustc_parse/parser/generics.rs +++ b/src/librustc_parse/parser/generics.rs @@ -54,7 +54,7 @@ impl<'a> Parser<'a> { self.expect(&token::Colon)?; let ty = self.parse_ty()?; - self.sess.gated_spans.gate(sym::const_generics, const_span.to(self.prev_token.span)); + self.sess.gated_spans.gate(sym::min_const_generics, const_span.to(self.prev_token.span)); Ok(GenericParam { ident, |
