Looking into this... On Wed, Feb 24, 2016 at 10:21 PM, Nico Weber <tha...@chromium.org> wrote:
> This broke the Windows bot: > http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/10093/steps/build%20stage%201/logs/stdio > > FAILED: C:\PROGRA~2\MICROS~1.0\VC\bin\amd64\cl.exe /nologo /TP /DWIN32 > /D_WINDOWS /W4 -wd4141 -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 > -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 > -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 > -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 > -wd4577 -wd4091 -wd4592 -wd4319 -wd4324 -w14062 -we4238 /Zc:inline /Oi > /Zc:rvalueCast /MD /O2 /Ob2 -Itools\clang\tools\extra\clang-tidy\modernize > -ID:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize > -ID:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\include > -Itools\clang\include -Iinclude > -ID:\buildslave\clang-x64-ninja-win7\llvm\include -UNDEBUG /EHs-c- /GR- > /showIncludes -DCLANG_ENABLE_ARCMT -DCLANG_ENABLE_OBJC_REWRITER > -DCLANG_ENABLE_STATIC_ANALYZER -DGTEST_HAS_RTTI=0 > -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS > -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS > -D_DEBUG_POINTER_IMPL="" -D_GNU_SOURCE -D_HAS_EXCEPTIONS=0 > -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS > -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS > /Fotools\clang\tools\extra\clang-tidy\modernize\CMakeFiles\clangTidyModernizeModule.dir\DeprecatedHeadersCheck.cpp.obj > /Fdtools\clang\tools\extra\clang-tidy\modernize\CMakeFiles\clangTidyModernizeModule.dir\ > /FS -c > D:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize\DeprecatedHeadersCheck.cpp > D:\buildslave\clang-x64-ninja-win7\llvm\tools\clang\tools\extra\clang-tidy\modernize\DeprecatedHeadersCheck.cpp(72) > : error C2668: > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap' : ambiguous > call to overloaded function > > D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(399): > could be > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(const > llvm::StringMap<std::string,llvm::MallocAllocator> &)' > > D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(242): > or > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(llvm::StringMap<std::string,llvm::MallocAllocator> > &&)' > > D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(235): > or > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(std::initializer_list<std::pair<llvm::StringRef,ValueTy>>)' > with > [ > ValueTy=std::string > ] > > D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(228): > or > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(AllocatorTy)' > with > [ > AllocatorTy=llvm::MallocAllocator > ] > > D:\buildslave\clang-x64-ninja-win7\llvm\include\llvm/ADT/StringMap.h(225): > or > 'llvm::StringMap<std::string,llvm::MallocAllocator>::StringMap(unsigned > int)' > while trying to match the argument list '(initializer-list)' > Creating library lib\libclang.lib and object lib\libclang.exp > > > On Wed, Feb 24, 2016 at 8:36 AM, Alexander Kornienko via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Author: alexfh >> Date: Wed Feb 24 07:36:34 2016 >> New Revision: 261738 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=261738&view=rev >> Log: >> [clang-tidy] introduce modernize-deprecated-headers check >> >> Summary: >> This patch introduces the modernize-deprecated-headers check, which is >> supposed to replace deprecated C library headers with the C++ STL-ones. >> >> For information see documentation; for exmaples see the test cases. >> >> Reviewers: Eugene.Zelenko, LegalizeAdulthood, alexfh >> >> Subscribers: cfe-commits >> >> Patch by Kirill Bobyrev! >> >> Differential Revision: http://reviews.llvm.org/D17484 >> >> Added: >> >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >> >> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >> >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >> >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.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/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=261738&r1=261737&r2=261738&view=diff >> >> ============================================================================== >> --- clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt (original) >> +++ clang-tools-extra/trunk/clang-tidy/modernize/CMakeLists.txt Wed Feb >> 24 07:36:34 2016 >> @@ -1,6 +1,7 @@ >> set(LLVM_LINK_COMPONENTS support) >> >> add_clang_library(clangTidyModernizeModule >> + DeprecatedHeadersCheck.cpp >> LoopConvertCheck.cpp >> LoopConvertUtils.cpp >> MakeUniqueCheck.cpp >> >> Added: >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp?rev=261738&view=auto >> >> ============================================================================== >> --- >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp >> (added) >> +++ >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.cpp Wed >> Feb 24 07:36:34 2016 >> @@ -0,0 +1,110 @@ >> +//===--- DeprecatedHeadersCheck.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 "DeprecatedHeadersCheck.h" >> +#include "clang/Frontend/CompilerInstance.h" >> +#include "clang/Lex/PPCallbacks.h" >> +#include "clang/Lex/Preprocessor.h" >> +#include "llvm/ADT/StringMap.h" >> + >> +#include <vector> >> + >> +namespace clang { >> +namespace tidy { >> +namespace modernize { >> + >> +namespace { >> +class IncludeModernizePPCallbacks : public PPCallbacks { >> +public: >> + explicit IncludeModernizePPCallbacks(ClangTidyCheck &Check, >> + LangOptions LangOpts); >> + >> + void InclusionDirective(SourceLocation HashLoc, const Token >> &IncludeTok, >> + StringRef FileName, bool IsAngled, >> + CharSourceRange FilenameRange, const FileEntry >> *File, >> + StringRef SearchPath, StringRef RelativePath, >> + const Module *Imported) override; >> + >> +private: >> + ClangTidyCheck &Check; >> + LangOptions LangOpts; >> + llvm::StringMap<std::string> CStyledHeaderToCxx; >> +}; >> +} // namespace >> + >> +void DeprecatedHeadersCheck::registerPPCallbacks(CompilerInstance >> &Compiler) { >> + if (this->getLangOpts().CPlusPlus) { >> + Compiler.getPreprocessor().addPPCallbacks( >> + ::llvm::make_unique<IncludeModernizePPCallbacks>(*this, >> + >> this->getLangOpts())); >> + } >> +} >> + >> +IncludeModernizePPCallbacks::IncludeModernizePPCallbacks(ClangTidyCheck >> &Check, >> + LangOptions >> LangOpts) >> + : Check(Check), LangOpts(LangOpts), >> + CStyledHeaderToCxx({{"assert.h", "cassert"}, >> + {"complex.h", "ccomplex"}, >> + {"ctype.h", "cctype"}, >> + {"errno.h", "cerrno"}, >> + {"float.h", "cfloat"}, >> + {"inttypes.h", "cinttypes"}, >> + {"iso646.h", "ciso646"}, >> + {"limits.h", "climits"}, >> + {"locale.h", "clocale"}, >> + {"math.h", "cmath"}, >> + {"setjmp.h", "csetjmp"}, >> + {"signal.h", "csignal"}, >> + {"stdarg.h", "cstdarg"}, >> + {"stddef.h", "cstddef"}, >> + {"stdint.h", "cstdint"}, >> + {"stdio.h", "cstdio"}, >> + {"stdlib.h", "cstdlib"}, >> + {"string.h", "cstring"}, >> + {"time.h", "ctime"}, >> + {"wchar.h", "cwchar"}, >> + {"wctype.h", "cwctype"}}) { >> + // Add C++ 11 headers. >> + if (LangOpts.CPlusPlus11) { >> + for (const auto &it : std::vector<std::pair<std::string, >> std::string>>( >> + {{"fenv.h", "cfenv"}, >> + {"stdalign.h", "cstdalign"}, >> + {"stdbool.h", "cstdbool"}, >> + {"tgmath.h", "ctgmath"}, >> + {"uchar.h", "cuchar"}})) { >> + CStyledHeaderToCxx.insert(it); >> + } >> + } >> +} >> + >> +void IncludeModernizePPCallbacks::InclusionDirective( >> + SourceLocation HashLoc, const Token &IncludeTok, StringRef FileName, >> + bool IsAngled, CharSourceRange FilenameRange, const FileEntry *File, >> + StringRef SearchPath, StringRef RelativePath, const Module >> *Imported) { >> + // FIXME: Take care of library symbols from the global namespace. >> + // >> + // Reasonable options for the check: >> + // >> + // 1. Insert std prefix for every such symbol occurance. >> + // 2. Insert `using namespace std;` to the beginning of TU. >> + // 3. Do nothing and let the user deal with the migration himself. >> + if (CStyledHeaderToCxx.count(FileName) != 0) { >> + std::string Replacement = >> + (llvm::Twine("<") + CStyledHeaderToCxx[FileName] + ">").str(); >> + Check.diag(FilenameRange.getBegin(), >> + "inclusion of deprecated C++ header '%0'; consider using >> '%1' instead") >> + << FileName << CStyledHeaderToCxx[FileName] >> + << FixItHint::CreateReplacement(FilenameRange.getAsRange(), >> + Replacement); >> + } >> +} >> + >> +} // namespace modernize >> +} // namespace tidy >> +} // namespace clang >> >> Added: >> clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >> URL: >> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h?rev=261738&view=auto >> >> ============================================================================== >> --- clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >> (added) >> +++ clang-tools-extra/trunk/clang-tidy/modernize/DeprecatedHeadersCheck.h >> Wed Feb 24 07:36:34 2016 >> @@ -0,0 +1,42 @@ >> +//===--- DeprecatedHeadersCheck.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_C_HEADERS_TO_CXX_H >> +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H >> + >> +#include "../ClangTidy.h" >> + >> +namespace clang { >> +namespace tidy { >> +namespace modernize { >> + >> +/// This check replaces deprecated C library headers with their C++ STL >> +/// alternatives. >> +/// >> +/// Before: >> +/// #include <header.h> >> +/// After: >> +/// #include <cheader> >> +/// >> +/// Example: <stdio.h> => <cstdio> >> +/// >> +/// For the user-facing documentation see: >> +/// >> http://clang.llvm.org/extra/clang-tidy/checks/modernize-deprecated-headers.html >> +class DeprecatedHeadersCheck : public ClangTidyCheck { >> +public: >> + DeprecatedHeadersCheck(StringRef Name, ClangTidyContext *Context) >> + : ClangTidyCheck(Name, Context) {} >> + void registerPPCallbacks(CompilerInstance &Compiler) override; >> +}; >> + >> +} // namespace modernize >> +} // namespace tidy >> +} // namespace clang >> + >> +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_MODERNIZE_C_HEADERS_TO_CXX_H >> >> 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=261738&r1=261737&r2=261738&view=diff >> >> ============================================================================== >> --- clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >> (original) >> +++ clang-tools-extra/trunk/clang-tidy/modernize/ModernizeTidyModule.cpp >> Wed Feb 24 07:36:34 2016 >> @@ -10,6 +10,7 @@ >> #include "../ClangTidy.h" >> #include "../ClangTidyModule.h" >> #include "../ClangTidyModuleRegistry.h" >> +#include "DeprecatedHeadersCheck.h" >> #include "LoopConvertCheck.h" >> #include "MakeUniqueCheck.h" >> #include "PassByValueCheck.h" >> @@ -30,6 +31,8 @@ namespace modernize { >> class ModernizeModule : public ClangTidyModule { >> public: >> void addCheckFactories(ClangTidyCheckFactories &CheckFactories) >> override { >> + CheckFactories.registerCheck<DeprecatedHeadersCheck>( >> + "modernize-deprecated-headers"); >> >> CheckFactories.registerCheck<LoopConvertCheck>("modernize-loop-convert"); >> >> CheckFactories.registerCheck<MakeUniqueCheck>("modernize-make-unique"); >> >> CheckFactories.registerCheck<PassByValueCheck>("modernize-pass-by-value"); >> >> 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=261738&r1=261737&r2=261738&view=diff >> >> ============================================================================== >> --- clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst (original) >> +++ clang-tools-extra/trunk/docs/clang-tidy/checks/list.rst Wed Feb 24 >> 07:36:34 2016 >> @@ -74,6 +74,7 @@ Clang-Tidy Checks >> misc-unused-parameters >> misc-unused-raii >> misc-virtual-near-miss >> + modernize-deprecated-headers >> modernize-loop-convert >> modernize-make-unique >> modernize-pass-by-value >> >> Added: >> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >> URL: >> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst?rev=261738&view=auto >> >> ============================================================================== >> --- >> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >> (added) >> +++ >> clang-tools-extra/trunk/docs/clang-tidy/checks/modernize-deprecated-headers.rst >> Wed Feb 24 07:36:34 2016 >> @@ -0,0 +1,45 @@ >> +.. title:: clang-tidy - modernize-deprecated-headers >> + >> +modernize-deprecated-headers >> +========================== >> + >> +Some headers from C library were deprecated in C++ and are no longer >> welcome in >> +C++ codebases. For more details refer to the C++ 14 Standard >> [depr.c.headers] >> +section. >> + >> +This check replaces C standard library headers with their C++ >> alternatives. >> + >> +Improtant note: the Standard doesn't guarantee that the C++ headers >> declare all >> +the same functions in the global namespace. The check in its current >> form can >> +break the code that uses library symbols from the global namespace. >> + >> +* `<assert.h>` >> +* `<complex.h>` >> +* `<ctype.h>` >> +* `<errno.h>` >> +* `<fenv.h>` // deprecated since C++11 >> +* `<float.h>` >> +* `<inttypes.h>` >> +* `<iso646.h>` >> +* `<limits.h>` >> +* `<locale.h>` >> +* `<math.h>` >> +* `<setjmp.h>` >> +* `<signal.h>` >> +* `<stdalign.h>` // deprecated since C++11 >> +* `<stdarg.h>` >> +* `<stdbool.h>` // deprecated since C++11 >> +* `<stddef.h>` >> +* `<stdint.h>` >> +* `<stdio.h>` >> +* `<stdlib.h>` >> +* `<string.h>` >> +* `<tgmath.h>` // deprecated since C++11 >> +* `<time.h>` >> +* `<uchar.h>` // deprecated since C++11 >> +* `<wchar.h>` >> +* `<wctype.h>` >> + >> +If the specified standard is older than C++11 the check will only replace >> +headers deprecated before C++11, otherwise -- every header that appeared >> in >> +the list. >> >> Added: >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp?rev=261738&view=auto >> >> ============================================================================== >> --- >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >> (added) >> +++ >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx03.cpp >> Wed Feb 24 07:36:34 2016 >> @@ -0,0 +1,147 @@ >> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- >> -std=c++03 -isystem %S/Inputs/Headers >> + >> +#include <assert.h> >> +#include <complex.h> >> +#include <ctype.h> >> +#include <errno.h> >> +#include <float.h> >> +#include <inttypes.h> >> +#include <iso646.h> >> +#include <limits.h> >> +#include <locale.h> >> +#include <math.h> >> +#include <setjmp.h> >> +#include <signal.h> >> +#include <stdarg.h> >> +#include <stddef.h> >> +#include <stdint.h> >> +#include <stdio.h> >> +#include <stdlib.h> >> +#include <string.h> >> +#include <time.h> >> +#include <wchar.h> >> +#include <wctype.h> >> + >> +// Headers deprecated since C++11: expect no diagnostics. >> +#include <fenv.h> >> +#include <stdalign.h> >> +#include <stdbool.h> >> +#include <tgmath.h> >> +#include <uchar.h> >> + >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'assert.h'; consider using 'cassert' instead >> [modernize-deprecated-headers] >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'complex.h'; consider using 'ccomplex' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'ctype.h'; consider using 'cctype' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'errno.h'; consider using 'cerrno' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'float.h'; consider using 'cfloat' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'inttypes.h'; consider using 'cinttypes' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'iso646.h'; consider using 'ciso646' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'limits.h'; consider using 'climits' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'locale.h'; consider using 'clocale' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'math.h'; consider using 'cmath' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'setjmp.h'; consider using 'csetjmp' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'signal.h'; consider using 'csignal' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdarg.h'; consider using 'cstdarg' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stddef.h'; consider using 'cstddef' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdint.h'; consider using 'cstdint' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdio.h'; consider using 'cstdio' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdlib.h'; consider using 'cstdlib' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'string.h'; consider using 'cstring' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'time.h'; consider using 'ctime' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'wchar.h'; consider using 'cwchar' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'wctype.h'; consider using 'cwctype' instead >> + >> +// CHECK-FIXES: #include <cassert> >> +// CHECK-FIXES: #include <ccomplex> >> +// CHECK-FIXES: #include <cctype> >> +// CHECK-FIXES: #include <cerrno> >> +// CHECK-FIXES: #include <cfloat> >> +// CHECK-FIXES: #include <cinttypes> >> +// CHECK-FIXES: #include <ciso646> >> +// CHECK-FIXES: #include <climits> >> +// CHECK-FIXES: #include <clocale> >> +// CHECK-FIXES: #include <cmath> >> +// CHECK-FIXES: #include <csetjmp> >> +// CHECK-FIXES: #include <csignal> >> +// CHECK-FIXES: #include <cstdarg> >> +// CHECK-FIXES: #include <cstddef> >> +// CHECK-FIXES: #include <cstdint> >> +// CHECK-FIXES: #include <cstdio> >> +// CHECK-FIXES: #include <cstdlib> >> +// CHECK-FIXES: #include <cstring> >> +// CHECK-FIXES: #include <ctime> >> +// CHECK-FIXES: #include <cwchar> >> +// CHECK-FIXES: #include <cwctype> >> + >> +#include "assert.h" >> +#include "complex.h" >> +#include "ctype.h" >> +#include "errno.h" >> +#include "float.h" >> +#include "inttypes.h" >> +#include "iso646.h" >> +#include "limits.h" >> +#include "locale.h" >> +#include "math.h" >> +#include "setjmp.h" >> +#include "signal.h" >> +#include "stdarg.h" >> +#include "stddef.h" >> +#include "stdint.h" >> +#include "stdio.h" >> +#include "stdlib.h" >> +#include "string.h" >> +#include "time.h" >> +#include "wchar.h" >> +#include "wctype.h" >> + >> +// Headers deprecated since C++11; expect no diagnostics >> +#include "fenv.h" >> +#include "stdalign.h" >> +#include "stdbool.h" >> +#include "tgmath.h" >> +#include "uchar.h" >> + >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'assert.h'; consider using 'cassert' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'complex.h'; consider using 'ccomplex' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'ctype.h'; consider using 'cctype' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'errno.h'; consider using 'cerrno' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'float.h'; consider using 'cfloat' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'inttypes.h'; consider using 'cinttypes' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'iso646.h'; consider using 'ciso646' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'limits.h'; consider using 'climits' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'locale.h'; consider using 'clocale' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'math.h'; consider using 'cmath' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'setjmp.h'; consider using 'csetjmp' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'signal.h'; consider using 'csignal' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdarg.h'; consider using 'cstdarg' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stddef.h'; consider using 'cstddef' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdint.h'; consider using 'cstdint' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdio.h'; consider using 'cstdio' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'stdlib.h'; consider using 'cstdlib' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'string.h'; consider using 'cstring' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'time.h'; consider using 'ctime' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'wchar.h'; consider using 'cwchar' instead >> +// CHECK-MESSAGES: :[[@LINE-29]]:10: warning: inclusion of deprecated >> C++ header 'wctype.h'; consider using 'cwctype' instead >> + >> +// CHECK-FIXES: #include <cassert> >> +// CHECK-FIXES: #include <ccomplex> >> +// CHECK-FIXES: #include <cctype> >> +// CHECK-FIXES: #include <cerrno> >> +// CHECK-FIXES: #include <cfloat> >> +// CHECK-FIXES: #include <cinttypes> >> +// CHECK-FIXES: #include <ciso646> >> +// CHECK-FIXES: #include <climits> >> +// CHECK-FIXES: #include <clocale> >> +// CHECK-FIXES: #include <cmath> >> +// CHECK-FIXES: #include <csetjmp> >> +// CHECK-FIXES: #include <csignal> >> +// CHECK-FIXES: #include <cstdarg> >> +// CHECK-FIXES: #include <cstddef> >> +// CHECK-FIXES: #include <cstdint> >> +// CHECK-FIXES: #include <cstdio> >> +// CHECK-FIXES: #include <cstdlib> >> +// CHECK-FIXES: #include <cstring> >> +// CHECK-FIXES: #include <ctime> >> +// CHECK-FIXES: #include <cwchar> >> +// CHECK-FIXES: #include <cwctype> >> >> Added: >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp?rev=261738&view=auto >> >> ============================================================================== >> --- >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >> (added) >> +++ >> clang-tools-extra/trunk/test/clang-tidy/modernize-deprecated-headers-cxx11.cpp >> Wed Feb 24 07:36:34 2016 >> @@ -0,0 +1,163 @@ >> +// RUN: %check_clang_tidy %s modernize-deprecated-headers %t -- -- >> -std=c++11 -isystem %S/Inputs/Headers >> + >> +#include <assert.h> >> +#include <complex.h> >> +#include <ctype.h> >> +#include <errno.h> >> +#include <fenv.h> >> +#include <float.h> >> +#include <inttypes.h> >> +#include <iso646.h> >> +#include <limits.h> >> +#include <locale.h> >> +#include <math.h> >> +#include <setjmp.h> >> +#include <signal.h> >> +#include <stdalign.h> >> +#include <stdarg.h> >> +#include <stdbool.h> >> +#include <stddef.h> >> +#include <stdint.h> >> +#include <stdio.h> >> +#include <stdlib.h> >> +#include <string.h> >> +#include <tgmath.h> >> +#include <time.h> >> +#include <uchar.h> >> +#include <wchar.h> >> +#include <wctype.h> >> + >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'assert.h'; consider using 'cassert' instead >> [modernize-deprecated-headers] >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'complex.h'; consider using 'ccomplex' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'ctype.h'; consider using 'cctype' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'errno.h'; consider using 'cerrno' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'fenv.h'; consider using 'cfenv' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'float.h'; consider using 'cfloat' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'inttypes.h'; consider using 'cinttypes' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'iso646.h'; consider using 'ciso646' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'limits.h'; consider using 'climits' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'locale.h'; consider using 'clocale' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'math.h'; consider using 'cmath' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'setjmp.h'; consider using 'csetjmp' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'signal.h'; consider using 'csignal' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdalign.h'; consider using 'cstdalign' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdarg.h'; consider using 'cstdarg' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdbool.h'; consider using 'cstdbool' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stddef.h'; consider using 'cstddef' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdint.h'; consider using 'cstdint' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdio.h'; consider using 'cstdio' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdlib.h'; consider using 'cstdlib' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'string.h'; consider using 'cstring' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'tgmath.h'; consider using 'ctgmath' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'time.h'; consider using 'ctime' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'uchar.h'; consider using 'cuchar' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'wchar.h'; consider using 'cwchar' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'wctype.h'; consider using 'cwctype' instead >> + >> +// CHECK-FIXES: #include <cassert> >> +// CHECK-FIXES: #include <ccomplex> >> +// CHECK-FIXES: #include <cctype> >> +// CHECK-FIXES: #include <cerrno> >> +// CHECK-FIXES: #include <cfenv> >> +// CHECK-FIXES: #include <cfloat> >> +// CHECK-FIXES: #include <cinttypes> >> +// CHECK-FIXES: #include <ciso646> >> +// CHECK-FIXES: #include <climits> >> +// CHECK-FIXES: #include <clocale> >> +// CHECK-FIXES: #include <cmath> >> +// CHECK-FIXES: #include <csetjmp> >> +// CHECK-FIXES: #include <csignal> >> +// CHECK-FIXES: #include <cstdalign> >> +// CHECK-FIXES: #include <cstdarg> >> +// CHECK-FIXES: #include <cstdbool> >> +// CHECK-FIXES: #include <cstddef> >> +// CHECK-FIXES: #include <cstdint> >> +// CHECK-FIXES: #include <cstdio> >> +// CHECK-FIXES: #include <cstdlib> >> +// CHECK-FIXES: #include <cstring> >> +// CHECK-FIXES: #include <ctgmath> >> +// CHECK-FIXES: #include <ctime> >> +// CHECK-FIXES: #include <cuchar> >> +// CHECK-FIXES: #include <cwchar> >> +// CHECK-FIXES: #include <cwctype> >> + >> +#include "assert.h" >> +#include "complex.h" >> +#include "ctype.h" >> +#include "errno.h" >> +#include "fenv.h" >> +#include "float.h" >> +#include "inttypes.h" >> +#include "iso646.h" >> +#include "limits.h" >> +#include "locale.h" >> +#include "math.h" >> +#include "setjmp.h" >> +#include "signal.h" >> +#include "stdalign.h" >> +#include "stdarg.h" >> +#include "stdbool.h" >> +#include "stddef.h" >> +#include "stdint.h" >> +#include "stdio.h" >> +#include "stdlib.h" >> +#include "string.h" >> +#include "tgmath.h" >> +#include "time.h" >> +#include "uchar.h" >> +#include "wchar.h" >> +#include "wctype.h" >> + >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'assert.h'; consider using 'cassert' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'complex.h'; consider using 'ccomplex' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'ctype.h'; consider using 'cctype' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'errno.h'; consider using 'cerrno' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'fenv.h'; consider using 'cfenv' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'float.h'; consider using 'cfloat' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'inttypes.h'; consider using 'cinttypes' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'iso646.h'; consider using 'ciso646' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'limits.h'; consider using 'climits' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'locale.h'; consider using 'clocale' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'math.h'; consider using 'cmath' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'setjmp.h'; consider using 'csetjmp' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'signal.h'; consider using 'csignal' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdalign.h'; consider using 'cstdalign' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdarg.h'; consider using 'cstdarg' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdbool.h'; consider using 'cstdbool' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stddef.h'; consider using 'cstddef' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdint.h'; consider using 'cstdint' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdio.h'; consider using 'cstdio' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'stdlib.h'; consider using 'cstdlib' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'string.h'; consider using 'cstring' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'tgmath.h'; consider using 'ctgmath' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'time.h'; consider using 'ctime' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'uchar.h'; consider using 'cuchar' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'wchar.h'; consider using 'cwchar' instead >> +// CHECK-MESSAGES: :[[@LINE-27]]:10: warning: inclusion of deprecated >> C++ header 'wctype.h'; consider using 'cwctype' instead >> + >> +// CHECK-FIXES: #include <cassert> >> +// CHECK-FIXES: #include <ccomplex> >> +// CHECK-FIXES: #include <cctype> >> +// CHECK-FIXES: #include <cerrno> >> +// CHECK-FIXES: #include <cfenv> >> +// CHECK-FIXES: #include <cfloat> >> +// CHECK-FIXES: #include <cinttypes> >> +// CHECK-FIXES: #include <ciso646> >> +// CHECK-FIXES: #include <climits> >> +// CHECK-FIXES: #include <clocale> >> +// CHECK-FIXES: #include <cmath> >> +// CHECK-FIXES: #include <csetjmp> >> +// CHECK-FIXES: #include <csignal> >> +// CHECK-FIXES: #include <cstdalign> >> +// CHECK-FIXES: #include <cstdarg> >> +// CHECK-FIXES: #include <cstdbool> >> +// CHECK-FIXES: #include <cstddef> >> +// CHECK-FIXES: #include <cstdint> >> +// CHECK-FIXES: #include <cstdio> >> +// CHECK-FIXES: #include <cstdlib> >> +// CHECK-FIXES: #include <cstring> >> +// CHECK-FIXES: #include <ctgmath> >> +// CHECK-FIXES: #include <ctime> >> +// CHECK-FIXES: #include <cuchar> >> +// CHECK-FIXES: #include <cwchar> >> +// CHECK-FIXES: #include <cwctype> >> >> >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> > >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits