Prazek added inline comments.

================
Comment at: clang-tidy/misc/ThrowWithNoexceptCheck.cpp:25
@@ +24,3 @@
+  Finder->addMatcher(
+      cxxThrowExpr(stmt(hasAncestor(functionDecl(isNoThrow()).bind("func"))))
+          .bind("throw"),
----------------
you can use forFunction instead of hasAncestor(functionDecl(
cxxThrowExpr(stmt(forFunction(isNoThrow() or 
cxxThrowExpr(stmt(forFunction(functionDecl(isNoThrow())))
you can even try to remove stmt.


Also add test case

  void getFunction() noexcept {
   struct X { 
    static void inner()
    {
        throw 42;
    }
   }; 
  }


================
Comment at: clang-tidy/misc/ThrowWithNoexceptCheck.cpp:130
@@ +129,3 @@
+  const auto *Throw = Result.Nodes.getNodeAs<Stmt>("throw");
+  diag(Throw->getLocStart(), "throw in function declared no-throw");
+  for (auto Redecl : Function->redecls()) {
----------------
add new line after this line

================
Comment at: clang-tidy/misc/ThrowWithNoexceptCheck.cpp:131
@@ +130,3 @@
+  diag(Throw->getLocStart(), "throw in function declared no-throw");
+  for (auto Redecl : Function->redecls()) {
+    SourceRange NoExceptRange =
----------------
add some new line

================
Comment at: clang-tidy/misc/ThrowWithNoexceptCheck.cpp:134
@@ +133,3 @@
+        FindNoExceptRange(*Result.Context, *Result.SourceManager, *Redecl);
+    if (NoExceptRange.isValid()) {
+      diag(NoExceptRange.getBegin(), "In function declared no-throw here:")
----------------
if one one the redecl won't be valid, then you can't change any of them. I 
guess you should accumulate them in 
llvm::SmallVector<SourseRange, 5> whilie checking if they are valid. If all of 
them will be valid then perform fix on all of them.

================
Comment at: clang-tidy/misc/ThrowWithNoexceptCheck.cpp:135
@@ +134,3 @@
+    if (NoExceptRange.isValid()) {
+      diag(NoExceptRange.getBegin(), "In function declared no-throw here:")
+          << FixItHint::CreateRemoval(CharSourceRange::getCharRange(
----------------
I think it would be better to tell about declaration only in one place (where 
is the definition)

Also, I would use "note:" instead of warning here. (passing  
DiagnosticIDs::Level::Note as third argument)
You can also see how to do it here:
http://reviews.llvm.org/D18821

Also I think "no-throw function declared here" would be better


Repository:
  rL LLVM

http://reviews.llvm.org/D19201



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

Reply via email to