aaron.ballman added inline comments.

================
Comment at: clang/include/clang/Parse/Parser.h:2343
+  static ImplicitTypenameContext
+  isImplicitTypenameContext(DeclSpecContext DSC) {
+    switch (DSC) {
----------------
Starting with `is` implies contextual conversion to bool (generally), so I'd 
suggest renaming.


================
Comment at: clang/include/clang/Sema/DeclSpec.h:1806
+// typename is allowed (C++2a [temp.res]p5]).
+enum class ImplicitTypenameContext {
+  No,
----------------
Not opposed to this construct, but I am worried about how well it will scale. I 
don't know that we want to add a bunch of named enums that all boil down to a 
bool. (If someone thinks they have good ideas here, that'd be a good RFC topic 
for Discourse because we have a ton of interfaces that take a bunch of bools.)


================
Comment at: clang/lib/Parse/ParseDecl.cpp:5592
+bool Parser::isConstructorDeclarator(bool IsUnqualified, bool DeductionGuide,
+                                     bool IsFriend) {
   TentativeParsingAction TPA(*this);
----------------
shafik wrote:
> Instead of adding yet another `bool` flag maybe we can consider using 
> something like `enum isFriend : bool {No, Yes}`.
> 
> I am sure @aaron.ballman will want to chime in here as well.
Heh, so this is where I get worried about the scalability of using enums for 
these. We really want to use three different enums here, but do we really want 
to *add* three different enums? I'm unconvinced.

However, if we can come up with some template magic to allow for named bool 
parameters as a generic interface, that would be valuable to use.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D53847

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

Reply via email to