108936e47SAlexander Kornienko //===--- UseNoexceptCheck.h - clang-tidy-------------------------*- C++ -*-===// 208936e47SAlexander Kornienko // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 608936e47SAlexander Kornienko // 708936e47SAlexander Kornienko //===----------------------------------------------------------------------===// 808936e47SAlexander Kornienko 908936e47SAlexander Kornienko #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H 1008936e47SAlexander Kornienko #define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H 1108936e47SAlexander Kornienko 12478fc5c8SAlexander Kornienko #include "../ClangTidyCheck.h" 1308936e47SAlexander Kornienko 14*4718da50SCarlos Galvez namespace clang::tidy::modernize { 1508936e47SAlexander Kornienko 16282dc72cSDmitri Gribenko /// Replace dynamic exception specifications, with 1708936e47SAlexander Kornienko /// `noexcept` (or user-defined macro) or `noexcept(false)`. 1808936e47SAlexander Kornienko /// \code 1908936e47SAlexander Kornienko /// void foo() throw(); 2008936e47SAlexander Kornienko /// void bar() throw(int); 2108936e47SAlexander Kornienko /// \endcode 2208936e47SAlexander Kornienko /// Is converted to: 2308936e47SAlexander Kornienko /// \code 2408936e47SAlexander Kornienko /// void foo() ; 2514964682SSimon Pilgrim /// void bar() noexcept(false); 2608936e47SAlexander Kornienko /// \endcode 2708936e47SAlexander Kornienko /// 2808936e47SAlexander Kornienko /// For the user-facing documentation see: 296e566bc5SRichard /// http://clang.llvm.org/extra/clang-tidy/checks/modernize/use-noexcept.html 3008936e47SAlexander Kornienko class UseNoexceptCheck : public ClangTidyCheck { 3108936e47SAlexander Kornienko public: 3208936e47SAlexander Kornienko UseNoexceptCheck(StringRef Name, ClangTidyContext *Context); isLanguageVersionSupported(const LangOptions & LangOpts)33e40a742aSNathan James bool isLanguageVersionSupported(const LangOptions &LangOpts) const override { 34e40a742aSNathan James return LangOpts.CPlusPlus11; 35e40a742aSNathan James } 3608936e47SAlexander Kornienko void storeOptions(ClangTidyOptions::OptionMap &Opts) override; 3708936e47SAlexander Kornienko void registerMatchers(ast_matchers::MatchFinder *Finder) override; 3808936e47SAlexander Kornienko void check(const ast_matchers::MatchFinder::MatchResult &Result) override; 3908936e47SAlexander Kornienko 4008936e47SAlexander Kornienko private: 4112cb5405SNathan James const StringRef NoexceptMacro; 424c5818ddSNathan James const bool UseNoexceptFalse; 4308936e47SAlexander Kornienko }; 4408936e47SAlexander Kornienko 45*4718da50SCarlos Galvez } // namespace clang::tidy::modernize 4608936e47SAlexander Kornienko 4708936e47SAlexander Kornienko #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_USE_NOEXCEPT_H 48