The build should be fixed, but the tests for this check fail. I'll fix the tests tomorrow.
On Thu, Feb 25, 2016 at 12:46 AM, Alexander Kornienko <ale...@google.com> wrote: > I have a couple ideas, will try on the buildbot, since I don't have MSVC > to try fixes locally. > > On Wed, Feb 24, 2016 at 10:27 PM, Alexander Kornienko <ale...@google.com> > wrote: > >> 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