erik.pilkington added a comment.

Hi Alex, thanks for working on this! This looks right, but I have a couple of 
comments.
Thanks,
Erik



================
Comment at: lib/Sema/SemaDeclAttr.cpp:7151
+    Visitor.Scope = Scope;
+    Visitor.TraverseStmt(const_cast<CompoundStmt *>(Scope));
+    return Visitor.LastMatchingDREFirstNonScopeStmt;
----------------
I think this could be simplified: If we iterate backwards through the 
CompoundStmt::body(), calling `RecursiveASTVisitor::TraverseStmt()`, and bail 
out if we encounter a `DeclRefExpr` to D, returning the current Stmt. This also 
has the advantage that we don't have to iterate forward through the 
CompoundStmt when we're looking for the last Child Stmt. Have you considered 
this option?


================
Comment at: lib/Sema/SemaDeclAttr.cpp:7249
+    auto FixitDiag =
+        SemaRef.Diag(Range.getBegin(), diag::note_unguarded_available_silence)
         << Range << D;
----------------
Since we emit a fixit to use `__builtin_available` in non objective-c modes, 
this diagnostic should take another argument to suggest using the right form of 
@available depending on the source language. (Currently it's hard-coded to 
suggest @available).


Repository:
  rL LLVM

https://reviews.llvm.org/D32424



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

Reply via email to