aaron.ballman added inline comments.

================
Comment at: clang/include/clang/AST/Decl.h:82
+enum ReservedIdentifierReason {
+  StartsWithUnderscoreAtGlobalScope,
+  StartsWithDoubleUnderscore,
----------------
serge-sans-paille wrote:
> aaron.ballman wrote:
> > Because this is not a scoped enum, should these enumerators get an `RIR_` 
> > prefix added to them?
> I used a class enum with a stream operator instead. Not a big fan of prefixed 
> enum ;-)
Totally fine by me, thank you!


================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:383
+  "identifier %0 is reserved because %select{"
+  "|"
+  "it starts with '_' at global scope|"
----------------
You may want to add a comment here to alert people to the fact that passing 0 
for %1 is not valid but the `|` exists to make the enum order match the 
diagnostic. Otherwise it looks like it's possible to get a diagnostic 
`identifier 'whatever' is reserved because `.


================
Comment at: clang/lib/AST/Decl.cpp:1105-1111
+    if (Name[1] == '_') {
+      return ReservedIdentifierStatus::StartsWithDoubleUnderscore;
+    }
+    if ('A' <= Name[1] && Name[1] <= 'Z') {
+      return ReservedIdentifierStatus::
+          StartsWithUnderscoreFollowedByCapitalLetter;
+    }
----------------



================
Comment at: clang/lib/AST/Decl.cpp:1118-1120
+      if (isa<TranslationUnitDecl>(DC)) {
+        return ReservedIdentifierStatus::StartsWithUnderscoreAtGlobalScope;
+      }
----------------



================
Comment at: clang/lib/AST/Decl.cpp:1125-1127
+  if (LangOpts.CPlusPlus && Name.contains("__")) {
+    return ReservedIdentifierStatus::ContainsDoubleUnderscore;
+  }
----------------



================
Comment at: clang/lib/Sema/SemaDecl.cpp:5554
+  // Avoid warning twice on the same identifier, and don't warn on 
redeclaration
+  // of system decl
+  if (D->getPreviousDecl())
----------------
aaron.ballman wrote:
> 
Still missing a full stop at the end of the comment here.


================
Comment at: clang/lib/Sema/SemaDecl.cpp:5557-5558
+    return;
+  if (!Context.getSourceManager().isInSystemHeader(D->getLocation()) &&
+      D->isReserved(getLangOpts()))
+    Diag(D->getLocation(), diag::warn_reserved_identifier) << D;
----------------
rsmith wrote:
> Swap the order of these checks; the "is reserved" check is faster and will 
> usually allow us to short-circuit, whereas we're probably usually not in a 
> system header and that check involves nontrivial work recursively decomposing 
> the given source location.
Richard's comment is still unaddressed as well.


================
Comment at: clang/lib/Sema/SemaDecl.cpp:13640
 
+  warnOnReservedIdentifier(New);
+
----------------
rsmith wrote:
> serge-sans-paille wrote:
> > serge-sans-paille wrote:
> > > rsmith wrote:
> > > > Is there somewhere more central you can do this, rather than repeating 
> > > > it once for each kind of declaration? (Eg, `PushOnScopeChains`)
> > > That would be sane. I'll check that.
> > I tried PushOnScopeChains, and this does not capture all the required 
> > declarations. I failed to find another place :-/
> What cases is it missing? Can we add calls to `PushOnScopeChains` to those 
> cases (perhaps with a new flag to say "don't actually push it into scope"?) 
> I'm not super happy about adding a new thing that all places that create 
> declarations and add them to scope need to remember to do, to drive this 
> warning. Cases are going to get forgotten that way.
I'm still wondering about this as well.


================
Comment at: clang/lib/Sema/SemaStmt.cpp:545
+  if (!Context.getSourceManager().isInSystemHeader(IdentLoc)) {
+    ReservedIdentifierStatus Status = TheDecl->isReserved(getLangOpts());
+    if (Status != ReservedIdentifierStatus::NotReserved)
----------------
This check should be reversed as well.


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

https://reviews.llvm.org/D93095

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

Reply via email to