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