cor3ntin added inline comments.

================
Comment at: clang/include/clang/AST/Stmt.h:166
 
+    /// True if this if statement is a if consteval statement.
+    unsigned IsConsteval : 1;
----------------
erichkeane wrote:
> Not sure how others feel here, but for me, I kinda hate that we're using 
> 'unsigned' bitfields for all of this, particularly because these two are 
> mutually exclusive.  I'd prefer (though listen to others here first) if the 
> type of this was something more like:
> 
> IfEvalKind EvalKind : 2; // where IfEvalKind is enum class IfEvalKind {None, 
> Constexpr, Consteval};
I was not quite sure where to put an enum I could reuse in different place.
But I think I'd agree with you otherwise.
Any suggestion for where to put it?


================
Comment at: clang/include/clang/Sema/Sema.h:9137
+           "Must be in an expression evaluation context");
+    for (auto it = ExprEvalContexts.rbegin(); it != ExprEvalContexts.rend();
+         it++) {
----------------
erichkeane wrote:
> What is our iterator type?  I THINK at minimum require this to be `auto *`
The iterator type is ungodly. Likely 
`SmallVector<ExpressionEvaluationContextRecord, 8>::reverse_iterator`. I think 
auto here is more readable but I can change if you want to



================
Comment at: clang/lib/Parse/ParseStmt.cpp:1363
+    if (Tok.is(tok::kw_consteval)) {
+      Diag(Tok, getLangOpts().CPlusPlus17 ? 
diag::warn_cxx14_compat_constexpr_if
+                                          : diag::ext_constexpr_if);
----------------
erichkeane wrote:
> Is this diag here right?  We're in the `kw_consteval` branch, but it seems 
> we're warning about constexpr-if?
Yup, forgot to remove that


================
Comment at: clang/lib/Parse/ParseStmt.cpp:1382
 
+  if (IsConsteval) {
+    Diag(Tok, getLangOpts().CPlusPlus2b ? diag::warn_cxx20_compat_consteval_if
----------------
erichkeane wrote:
> Why is this here instead of with the `kw_consteval` handling?
To not have a warning when there is an error. Maybe we don't care?
In any case, I've cleanup that


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D110482/new/

https://reviews.llvm.org/D110482

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to