HomePhabricator

[C++20] add Basic consteval specifier

Authored by Tyker on Jun 14 2019, 1:56 AM.

Description

[C++20] add Basic consteval specifier

Summary:
this revision adds Lexing, Parsing and Basic Semantic for the consteval specifier as specified by http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r3.html

with this patch, the consteval specifier is treated as constexpr but can only be applied to function declaration.

Changes:

  • add the consteval keyword.
  • add parsing of consteval specifier for normal declarations and lambdas expressions.
  • add the whether a declaration is constexpr is now represented by and enum everywhere except for variable because they can't be consteval.
  • adapt diagnostic about constexpr to print constexpr or consteval depending on the case.
  • add tests for basic semantic.

Reviewers: rsmith, martong, shafik

Reviewed By: rsmith

Subscribers: eraman, efriedma, rnkovacs, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D61790

llvm-svn: 363362

Details

Committed
TykerJun 14 2019, 1:56 AM
Reviewer
rsmith
Differential Revision
D61790: [C++20] add Basic consteval specifier
Parents
rGb63e577444d3: [clang] Fixing incorrect implicit deduction guides (PR41549)
Branches
Unknown
Tags
Unknown