[PATCH] D102517: [clang] Add support for the "abstract" contextual keyword of MSVC
    Hans Wennborg via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Fri May 21 01:31:28 PDT 2021
    
    
  
hans added a comment.
Looking good overall, just a few nits.
Out of curiosity, where would one run into this? Does MS use this in any library headers or such?
================
Comment at: clang/lib/Parse/ParseDeclCXX.cpp:3314
   if (getLangOpts().CPlusPlus && Tok.is(tok::identifier)) {
-    VirtSpecifiers::Specifier Specifier = isCXX11VirtSpecifier(Tok);
-    assert((Specifier == VirtSpecifiers::VS_Final ||
-            Specifier == VirtSpecifiers::VS_GNU_Final ||
-            Specifier == VirtSpecifiers::VS_Sealed) &&
+    for (VirtSpecifiers::Specifier Specifier = isCXX11VirtSpecifier(Tok);
+         Specifier != VirtSpecifiers::VS_None;
----------------
This 'for' construct is hard to follow. I think it might be easier to follow as a while loop, maybe
```
while ((Specifier = isCXX11VirtSpecifier(Tok)) != VirtSpecifiers::VS_None) {
```
Also the "is" prefix in isCXX11VirtSpecifier is confusing given that it doesn't return a bool.
================
Comment at: clang/lib/Sema/DeclSpec.cpp:1479
+  case VS_Abstract:
+    VS_abstractLoc = Loc;
+    break;
----------------
nit: the other cases just use one line
================
Comment at: clang/lib/Sema/DeclSpec.cpp:1493
   case VS_Sealed: return "sealed";
+  case VS_Abstract:
+    return "abstract";
----------------
nit: skip the newline for consistency here too
================
Comment at: clang/lib/Sema/SemaDecl.cpp:16449
 
-  if (FinalLoc.isValid())
+  if (IsAbstract) {
+    Record->markAbstract();
----------------
nit: it would be more common in clang to omit the braces
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102517/new/
https://reviews.llvm.org/D102517
    
    
More information about the cfe-commits
mailing list