From 2b27c6235b4feb1e2aaac2dde5c5c67a29470127 Mon Sep 17 00:00:00 2001 From: varkor Date: Fri, 31 May 2019 21:18:43 +0100 Subject: [PATCH] Allow `true` and `false` in const generic arguments --- src/libsyntax/parse/parser.rs | 10 +++++++--- .../ui/const-generics/condition-in-trait-const-arg.rs | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 746e9cad4962..a562d2a1d2b4 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5250,9 +5250,13 @@ impl<'a> Parser<'a> { // FIXME(const_generics): to distinguish between idents for types and consts, // we should introduce a GenericArg::Ident in the AST and distinguish when // lowering to the HIR. For now, idents for const args are not permitted. - return Err( - self.fatal("identifiers may currently not be used for const generics") - ); + if self.token.is_keyword(kw::True) || self.token.is_keyword(kw::False) { + self.parse_literal_maybe_minus()? + } else { + return Err( + self.fatal("identifiers may currently not be used for const generics") + ); + } } else { self.parse_literal_maybe_minus()? }; diff --git a/src/test/ui/const-generics/condition-in-trait-const-arg.rs b/src/test/ui/const-generics/condition-in-trait-const-arg.rs index 18105eb7a75f..091fe904826d 100644 --- a/src/test/ui/const-generics/condition-in-trait-const-arg.rs +++ b/src/test/ui/const-generics/condition-in-trait-const-arg.rs @@ -7,4 +7,6 @@ trait IsZeroTrait{} impl IsZeroTrait<{0u8 == 0u8}> for () {} +impl IsZeroTrait for ((),) {} + fn main() {}