[clang-tools-extra] r293267 - Revert "Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications."

Diana Picus via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 26 23:19:23 PST 2017


Author: rovka
Date: Fri Jan 27 01:19:22 2017
New Revision: 293267

URL: http://llvm.org/viewvc/llvm-project?rev=293267&view=rev
Log:
Revert "Implement a new clang-tidy check that suggests users replace dynamic exception specifications with noexcept exception specifications."

This reverts commit r293217, its follow-up 293218 and part of 293234 because it
broke all bots that build clang-tools-extra.

Removed:
    clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp
    clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h
    clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst
    clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp
    clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp
    clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp
Modified:
    clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt
    clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp
    clang-tools-extra/trunk/docs/ReleaseNotes.rst
    clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst

Modified: clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt?rev=293267&r1=293266&r2=293267&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Fri Jan 27 01:19:22 2017
@@ -20,7 +20,6 @@ add_clang_library(clangTidyModernizeModu
   UseEmplaceCheck.cpp
   UseEqualsDefaultCheck.cpp
   UseEqualsDeleteCheck.cpp
-  UseNoexceptCheck.cpp
   UseNullptrCheck.cpp
   UseOverrideCheck.cpp
   UseTransparentFunctorsCheck.cpp

Modified: clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp?rev=293267&r1=293266&r2=293267&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp Fri Jan 27 01:19:22 2017
@@ -26,7 +26,6 @@
 #include "UseEmplaceCheck.h"
 #include "UseEqualsDefaultCheck.h"
 #include "UseEqualsDeleteCheck.h"
-#include "UseNoexceptCheck.h"
 #include "UseNullptrCheck.h"
 #include "UseOverrideCheck.h"
 #include "UseTransparentFunctorsCheck.h"
@@ -64,7 +63,6 @@ public:
     CheckFactories.registerCheck<UseEqualsDefaultCheck>("modernize-use-equals-default");
     CheckFactories.registerCheck<UseEqualsDeleteCheck>(
         "modernize-use-equals-delete");
-    CheckFactories.registerCheck<UseNoexceptCheck>("modernize-use-noexcept");
     CheckFactories.registerCheck<UseNullptrCheck>("modernize-use-nullptr");
     CheckFactories.registerCheck<UseOverrideCheck>("modernize-use-override");
     CheckFactories.registerCheck<UseTransparentFunctorsCheck>(

Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.cpp (removed)
@@ -1,114 +0,0 @@
-//===--- UseNoexceptCheck.cpp - clang-tidy---------------------------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "UseNoexceptCheck.h"
-#include "clang/AST/ASTContext.h"
-#include "clang/Lex/Lexer.h"
-
-using namespace clang::ast_matchers;
-
-namespace clang {
-namespace tidy {
-namespace modernize {
-
-UseNoexceptCheck::UseNoexceptCheck(StringRef Name, ClangTidyContext *Context)
-    : ClangTidyCheck(Name, Context),
-      NoexceptMacro(Options.get("ReplacementString", "")),
-      UseNoexceptFalse(Options.get("UseNoexceptFalse", true)) {}
-
-void UseNoexceptCheck::storeOptions(ClangTidyOptions::OptionMap &Opts) {
-  Options.store(Opts, "ReplacementString", NoexceptMacro);
-  Options.store(Opts, "UseNoexceptFalse", UseNoexceptFalse);
-}
-
-void UseNoexceptCheck::registerMatchers(MatchFinder *Finder) {
-  if (!getLangOpts().CPlusPlus11)
-    return;
-
-  Finder->addMatcher(
-      functionDecl(
-          cxxMethodDecl(
-              hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSpec()))),
-              anyOf(hasOverloadedOperatorName("delete[]"),
-                    hasOverloadedOperatorName("delete"), cxxDestructorDecl()))
-              .bind("del-dtor"))
-          .bind("funcDecl"),
-      this);
-
-  Finder->addMatcher(
-      functionDecl(
-          hasTypeLoc(loc(functionProtoType(hasDynamicExceptionSpec()))),
-          unless(anyOf(hasOverloadedOperatorName("delete[]"),
-                       hasOverloadedOperatorName("delete"),
-                       cxxDestructorDecl())))
-          .bind("funcDecl"),
-      this);
-
-  Finder->addMatcher(
-      parmVarDecl(anyOf(hasType(pointerType(pointee(parenType(innerType(
-                            functionProtoType(hasDynamicExceptionSpec())))))),
-                        hasType(memberPointerType(pointee(parenType(innerType(
-                            functionProtoType(hasDynamicExceptionSpec()))))))))
-          .bind("parmVarDecl"),
-      this);
-}
-
-void UseNoexceptCheck::check(const MatchFinder::MatchResult &Result) {
-  const FunctionProtoType *FnTy = nullptr;
-  bool DtorOrOperatorDel = false;
-  SourceRange Range;
-
-  if (const auto *FuncDecl = Result.Nodes.getNodeAs<FunctionDecl>("funcDecl")) {
-    DtorOrOperatorDel = Result.Nodes.getNodeAs<FunctionDecl>("del-dtor");
-    FnTy = FuncDecl->getType()->getAs<FunctionProtoType>();
-    if (const auto *TSI = FuncDecl->getTypeSourceInfo())
-      Range =
-          TSI->getTypeLoc().castAs<FunctionTypeLoc>().getExceptionSpecRange();
-  } else if (const auto *ParmDecl =
-                 Result.Nodes.getNodeAs<ParmVarDecl>("parmVarDecl")) {
-    FnTy = ParmDecl->getType()
-               ->getAs<Type>()
-               ->getPointeeType()
-               ->getAs<FunctionProtoType>();
-
-    if (const auto *TSI = ParmDecl->getTypeSourceInfo())
-      Range = TSI->getTypeLoc()
-                  .getNextTypeLoc()
-                  .IgnoreParens()
-                  .castAs<FunctionProtoTypeLoc>()
-                  .getExceptionSpecRange();
-  }
-  CharSourceRange CRange = Lexer::makeFileCharRange(
-      CharSourceRange::getTokenRange(Range), *Result.SourceManager,
-      Result.Context->getLangOpts());
-
-  assert(FnTy && "FunctionProtoType is null.");
-  bool IsNoThrow = FnTy->isNothrow(*Result.Context);
-  StringRef ReplacementStr =
-      IsNoThrow
-          ? NoexceptMacro.empty() ? "noexcept" : NoexceptMacro
-          : NoexceptMacro.empty()
-                ? (DtorOrOperatorDel || UseNoexceptFalse) ? "noexcept(false)"
-                                                          : ""
-                : "";
-
-  FixItHint FixIt;
-  if ((IsNoThrow || NoexceptMacro.empty()) && CRange.isValid())
-    FixIt = FixItHint::CreateReplacement(CRange, ReplacementStr);
-
-  diag(Range.getBegin(), "dynamic exception specification '%0' is deprecated; "
-                         "consider %select{using '%2'|removing it}1 instead")
-      << Lexer::getSourceText(CRange, *Result.SourceManager,
-                              Result.Context->getLangOpts())
-      << ReplacementStr.empty() << ReplacementStr << FixIt;
-}
-
-} // namespace modernize
-} // namespace tidy
-} // namespace clang

Removed: clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h (original)
+++ clang-tools-extra/trunk/clang-tidy/modernize/UseNoexceptCheck.h (removed)
@@ -1,49 +0,0 @@
-//===--- UseNoexceptCheck.h - clang-tidy-------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H
-#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H
-
-#include "../ClangTidy.h"
-
-namespace clang {
-namespace tidy {
-namespace modernize {
-
-/// \brief Replace dynamic exception specifications, with
-/// `noexcept` (or user-defined macro) or `noexcept(false)`.
-/// \code
-///   void foo() throw();
-///   void bar() throw(int);
-/// \endcode
-/// Is converted to:
-/// \code
-///   void foo() ;
-//    void bar() noexcept(false);
-/// \endcode
-///
-/// For the user-facing documentation see:
-/// http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-noexcept.html
-class UseNoexceptCheck : public ClangTidyCheck {
-public:
-  UseNoexceptCheck(StringRef Name, ClangTidyContext *Context);
-  void storeOptions(ClangTidyOptions::OptionMap &Opts) override;
-  void registerMatchers(ast_matchers::MatchFinder *Finder) override;
-  void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
-
-private:
-  const std::string NoexceptMacro;
-  bool UseNoexceptFalse;
-};
-
-} // namespace modernize
-} // namespace tidy
-} // namespace clang
-
-#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H

Modified: clang-tools-extra/trunk/docs/ReleaseNotes.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/ReleaseNotes.rst?rev=293267&r1=293266&r2=293267&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/ReleaseNotes.rst (original)
+++ clang-tools-extra/trunk/docs/ReleaseNotes.rst Fri Jan 27 01:19:22 2017
@@ -57,10 +57,7 @@ The improvements are...
 Improvements to clang-tidy
 --------------------------
 
- - New `modernize-use-noexcept
-   <http://clang.llvm.org/extra/clang-tidy/checks/modernize-use-noexcept.html>`_ check
-
-   Replaces dynamic exception specifications with ``noexcept`` or a user defined macro.
+The improvements are...
 
 Improvements to include-fixer
 -----------------------------

Modified: clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst?rev=293267&r1=293266&r2=293267&view=diff
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Fri Jan 27 01:19:22 2017
@@ -116,7 +116,6 @@ Clang-Tidy Checks
    modernize-use-emplace
    modernize-use-equals-default
    modernize-use-equals-delete
-   modernize-use-noexcept
    modernize-use-nullptr
    modernize-use-override
    modernize-use-transparent-functors

Removed: clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst (original)
+++ clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-use-noexcept.rst (removed)
@@ -1,88 +0,0 @@
-.. title:: clang-tidy - modernize-use-noexcept
-
-modernize-use-noexcept
-======================
-
-This check replaces deprecated dynamic exception specifications with
-the appropriate noexcept specification (introduced in C++11).  By
-default this check will replace ``throw()`` with ``noexcept``,
-and ``throw(<exception>[,...])`` or ``throw(...)`` with
-``noexcept(false)``.
-
-Example
--------
-
-.. code-block:: c++
-
-  void foo() throw();
-	void bar() throw(int) {}
-
-transforms to:
-
-.. code-block:: c++
-
-  void foo() noexcept;
-	void bar() noexcept(false) {}
-
-Options
--------
-
-.. option:: ReplacementString
-
-Users can use :option:`ReplacementString` to specify a macro to use instead of
-``noexcept``.  This is useful when maintaining source code that uses custom
-exception specification marking other than ``noexcept``.  Fix-it hints will only
-be generated for non-throwing specifications.
-
-Example
-^^^^^^^
-
-.. code-block:: c++
-
-  void bar() throw(int);
-  void foo() throw();
-
-transforms to:
-
-.. code-block:: c++
-
-  void bar() throw(int);  // No fix-it generated.
-  void foo() NOEXCEPT;
-
-if the :option:`ReplacementString` option is set to `NOEXCEPT`.
-
-.. option:: UseNoexceptFalse
-
-Enabled by default, disabling will generate fix-it hints that remove throwing
-dynamic exception specs, e.g., ``throw(<something>)``, completely without
-providing a replacement text, except for destructors and delete operators that
-are ``noexcept(true)`` by default.
-
-Example
-^^^^^^^
-
-.. code-block:: c++
-
-  void foo() throw(int) {}
-
-  struct bar {
-    void foobar() throw(int);
-    void operator delete(void *ptr) throw(int);
-    void operator delete[](void *ptr) throw(int);
-    ~bar() throw(int);
-  }
-
-transforms to:
-
-.. code-block:: c++
-
-  void foo() {}
-
-  struct bar {
-    void foobar();
-    void operator delete(void *ptr) noexcept(false);
-    void operator delete[](void *ptr) noexcept(false);
-    ~bar() noexcept(false);
-  }
-
-if the :option:`UseNoexceptFalse` option is set to `0`.

Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-macro.cpp (removed)
@@ -1,36 +0,0 @@
-// RUN: %check_clang_tidy %s modernize-use-noexcept %t -- \
-// RUN:   -config="{CheckOptions: [{key: modernize-use-noexcept.ReplacementString, value: 'NOEXCEPT'}]}" \
-// RUN:   -- -std=c++11
-
-// Example definition of NOEXCEPT -- simplified test to see if noexcept is supported.
-#if (__has_feature(cxx_noexcept))
-#define NOEXCEPT noexcept
-#else
-#define NOEXCEPT throw()
-#endif
-
-void bar() throw() {}
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'NOEXCEPT' instead [modernize-use-noexcept]
-// CHECK-FIXES: void bar() NOEXCEPT {}
-
-// Should not trigger a FixItHint, since macros only support noexcept, and this
-// case throws.
-class A {};
-class B {};
-void foobar() throw(A, B);
-// CHECK-MESSAGES: :[[@LINE-1]]:15: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider removing it instead [modernize-use-noexcept]
-
-// Should not trigger a replacement.
-void foo() noexcept(true);
-
-struct Z {
-  void operator delete(void *ptr) throw();
-  void operator delete[](void *ptr) throw(int);
-  ~Z() throw(int) {}
-};
-// CHECK-MESSAGES: :[[@LINE-4]]:35: warning: dynamic exception specification 'throw()' is deprecated; consider using 'NOEXCEPT' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:37: warning: dynamic exception specification 'throw(int)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:8: warning: dynamic exception specification 'throw(int)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void operator delete(void *ptr) NOEXCEPT;
-// CHECK-FIXES: void operator delete[](void *ptr) throw(int);
-// CHECK-FIXES: ~Z() throw(int) {}

Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept-opt.cpp (removed)
@@ -1,88 +0,0 @@
-// RUN: %check_clang_tidy %s modernize-use-noexcept %t -- \
-// RUN:   -config="{CheckOptions: [{key: modernize-use-noexcept.UseNoexceptFalse, value: 0}]}" \
-// RUN:   -- -std=c++11
-
-class A {};
-class B {};
-
-void foo() throw();
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void foo() noexcept;
-
-void bar() throw(...);
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw(...)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void bar() ;
-
-void k() throw(int(int));
-// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: dynamic exception specification 'throw(int(int))' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void k() ;
-
-void foobar() throw(A, B)
-{}
-// CHECK-MESSAGES: :[[@LINE-2]]:15: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void foobar()
-
-void baz(int = (throw A(), 0)) throw(A, B) {}
-// CHECK-MESSAGES: :[[@LINE-1]]:32: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void baz(int = (throw A(), 0)) {}
-
-void g(void (*fp)(void) throw());
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void g(void (*fp)(void) noexcept);
-
-void f(void (*fp)(void) throw(int)) throw(char);
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'throw(int)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:37: warning: dynamic exception specification 'throw(char)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void f(void (*fp)(void) ) ;
-
-#define THROW throw
-void h(void (*fp)(void) THROW(int)) THROW(char);
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'THROW(int)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:37: warning: dynamic exception specification 'THROW(char)' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void h(void (*fp)(void) ) ;
-
-void j() throw(int(int) throw(void(void) throw(int)));
-// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: dynamic exception specification 'throw(int(int) throw(void(void) throw(int)))' is deprecated; consider removing it instead [modernize-use-noexcept]
-// CHECK-FIXES: void j() ;
-
-class Y {
-  Y() throw() = default;
-};
-// CHECK-MESSAGES: :[[@LINE-2]]:7: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: Y() noexcept = default;
-
-struct Z {
-  void operator delete(void *ptr) throw();
-  void operator delete[](void *ptr) throw(int);
-  ~Z() throw(int) {}
-};
-// CHECK-MESSAGES: :[[@LINE-4]]:35: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:37: warning: dynamic exception specification 'throw(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:8: warning: dynamic exception specification 'throw(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void operator delete(void *ptr) noexcept;
-// CHECK-FIXES: void operator delete[](void *ptr) noexcept(false);
-// CHECK-FIXES: ~Z() noexcept(false) {}
-
-struct S {
-  void f() throw();
-};
-void f(void (S::*)() throw());
-// CHECK-MESSAGES: :[[@LINE-3]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:22: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void f() noexcept;
-// CHECK-FIXES: void f(void (S::*)() noexcept);
-
-typedef void (*fp)(void (*fp2)(int) throw());
-// CHECK-MESSAGES: :[[@LINE-1]]:37: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: typedef void (*fp)(void (*fp2)(int) noexcept);
-
-// Should not trigger a replacement.
-void titi() noexcept {}
-void toto() noexcept(true) {}
-
-// Should not trigger a replacement.
-void bad()
-#if !__has_feature(cxx_noexcept)
-    throw()
-#endif
-  ;

Removed: clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp?rev=293266&view=auto
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/modernize-use-noexcept.cpp (removed)
@@ -1,104 +0,0 @@
-// RUN: %check_clang_tidy %s modernize-use-noexcept %t -- \
-// RUN:   -- -std=c++11
-
-class A {};
-class B {};
-
-void foo() throw();
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void foo() noexcept;
-
-template <typename T>
-void foo() throw();
-void footest() { foo<int>(); foo<double>(); }
-// CHECK-MESSAGES: :[[@LINE-2]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void foo() noexcept;
-
-void bar() throw(...);
-// CHECK-MESSAGES: :[[@LINE-1]]:12: warning: dynamic exception specification 'throw(...)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void bar() noexcept(false);
-
-void k() throw(int(int));
-// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: dynamic exception specification 'throw(int(int))' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void k() noexcept(false);
-
-void foobar() throw(A, B)
-{}
-// CHECK-MESSAGES: :[[@LINE-2]]:15: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void foobar() noexcept(false)
-
-void baz(int = (throw A(), 0)) throw(A, B) {}
-// CHECK-MESSAGES: :[[@LINE-1]]:32: warning: dynamic exception specification 'throw(A, B)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void baz(int = (throw A(), 0)) noexcept(false) {}
-
-void g(void (*fp)(void) throw());
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void g(void (*fp)(void) noexcept);
-
-void f(void (*fp)(void) throw(int)) throw(char);
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'throw(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:37: warning: dynamic exception specification 'throw(char)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void f(void (*fp)(void) noexcept(false)) noexcept(false);
-
-#define THROW throw
-void h(void (*fp)(void) THROW(int)) THROW(char);
-// CHECK-MESSAGES: :[[@LINE-1]]:25: warning: dynamic exception specification 'THROW(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:37: warning: dynamic exception specification 'THROW(char)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void h(void (*fp)(void) noexcept(false)) noexcept(false);
-
-void j() throw(int(int) throw(void(void) throw(int)));
-// CHECK-MESSAGES: :[[@LINE-1]]:10: warning: dynamic exception specification 'throw(int(int) throw(void(void) throw(int)))' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void j() noexcept(false);
-
-class Y {
-  Y() throw() = default;
-};
-// CHECK-MESSAGES: :[[@LINE-2]]:7: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: Y() noexcept = default;
-
-struct Z {
-  void operator delete(void *ptr) throw();
-  void operator delete[](void *ptr) throw(int);
-  ~Z() throw(int) {}
-};
-// CHECK-MESSAGES: :[[@LINE-4]]:35: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:37: warning: dynamic exception specification 'throw(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-4]]:8: warning: dynamic exception specification 'throw(int)' is deprecated; consider using 'noexcept(false)' instead [modernize-use-noexcept]
-// CHECK-FIXES: void operator delete(void *ptr) noexcept;
-// CHECK-FIXES: void operator delete[](void *ptr) noexcept(false);
-// CHECK-FIXES: ~Z() noexcept(false) {}
-
-struct S {
-  void f() throw();
-};
-void f(void (S::*)() throw());
-// CHECK-MESSAGES: :[[@LINE-3]]:12: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:22: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void f() noexcept;
-// CHECK-FIXES: void f(void (S::*)() noexcept);
-
-template <typename T>
-struct ST {
-  void foo() throw();
-};
-template <typename T>
-void ft(void (ST<T>::*)() throw());
-// CHECK-MESSAGES: :[[@LINE-4]]:14: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-MESSAGES: :[[@LINE-2]]:27: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: void foo() noexcept;
-// CHECK-FIXES: void ft(void (ST<T>::*)() noexcept);
-
-typedef void (*fp)(void (*fp2)(int) throw());
-// CHECK-MESSAGES: :[[@LINE-1]]:37: warning: dynamic exception specification 'throw()' is deprecated; consider using 'noexcept' instead [modernize-use-noexcept]
-// CHECK-FIXES: typedef void (*fp)(void (*fp2)(int) noexcept);
-
-// Should not trigger a replacement.
-void titi() noexcept {}
-void toto() noexcept(true) {}
-
-// Should not trigger a replacement.
-void bad()
-#if !__has_feature(cxx_noexcept)
-    throw()
-#endif
-  ;




More information about the cfe-commits mailing list