Hi Roman – I agree that people shouldn’t need to manually fix this every time it happens.
Hi Nico – What is stopping the Chromium buildbots from setting BUILD_SHARED_LIBS to false? That way the default BUILD_SHARED_LIBS policy of llvm and/or clang doesn’t matter, right? Dave > On Jun 4, 2018, at 12:40 PM, Roman Lebedev <lebedev...@gmail.com> wrote: > > This is n-th time i do this kind of fix. > Sure this does resolve the issue, but it would be much better to use > proper means, > and tell people to fix their code, in an automatic way :) > > On Mon, Jun 4, 2018 at 7:36 PM, Nico Weber <tha...@chromium.org> wrote: >> All chromium bots build with asserts on and we definitely don't want shared >> libs :-) Having the people who care about this build config make sure it >> keeps working seems like a good approach to me. >> >> On Mon, Jun 4, 2018 at 8:15 AM, David Zarzycki via cfe-commits >> <cfe-commits@lists.llvm.org> wrote: >>> >>> What’s stopping the project from automatically setting BUILD_SHARED_LIBS >>> to TRUE if asserts are enabled? That’d automatically “force” active >>> developers to test the scenario on their local machines, but not change the >>> way release builds work. >>> >>> >>>> On Jun 4, 2018, at 8:11 AM, Roman Lebedev via cfe-commits >>>> <cfe-commits@lists.llvm.org> wrote: >>>> >>>> This broke building as shared libraries. >>>> >>>> I've committed the fix, but the bot coverage is clearly severely >>>> missing, >>>> given that such breakages are very often. >>>> >>>> Roman. >>>> >>>> On Mon, Jun 4, 2018 at 12:04 PM, Eric Liu via cfe-commits >>>> <cfe-commits@lists.llvm.org> wrote: >>>>> Author: ioeric >>>>> Date: Mon Jun 4 02:04:12 2018 >>>>> New Revision: 333874 >>>>> >>>>> URL: http://llvm.org/viewvc/llvm-project?rev=333874&view=rev >>>>> Log: >>>>> Reland "Move #include manipulation code to new lib/Tooling/Inclusions." >>>>> >>>>> This reverts commit r333534 (i.e. reland r332720) after fixing module >>>>> build. >>>>> >>>>> Differential Revision: https://reviews.llvm.org/D47068 >>>>> >>>>> Added: >>>>> cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h >>>>> - copied, changed from r333865, >>>>> cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h >>>>> cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h >>>>> - copied, changed from r333865, >>>>> cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h >>>>> cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt >>>>> - copied, changed from r333865, >>>>> cfe/trunk/lib/Tooling/Core/CMakeLists.txt >>>>> cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp >>>>> - copied, changed from r333865, >>>>> cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp >>>>> cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp >>>>> - copied, changed from r333865, >>>>> cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp >>>>> Removed: >>>>> cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h >>>>> cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h >>>>> cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp >>>>> cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp >>>>> Modified: >>>>> cfe/trunk/include/clang/Format/Format.h >>>>> cfe/trunk/include/clang/module.modulemap >>>>> cfe/trunk/lib/Format/CMakeLists.txt >>>>> cfe/trunk/lib/Format/Format.cpp >>>>> cfe/trunk/lib/Tooling/CMakeLists.txt >>>>> cfe/trunk/lib/Tooling/Core/CMakeLists.txt >>>>> cfe/trunk/unittests/Tooling/HeaderIncludesTest.cpp >>>>> >>>>> Modified: cfe/trunk/include/clang/Format/Format.h >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Format/Format.h?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/Format/Format.h (original) >>>>> +++ cfe/trunk/include/clang/Format/Format.h Mon Jun 4 02:04:12 2018 >>>>> @@ -16,8 +16,8 @@ >>>>> #define LLVM_CLANG_FORMAT_FORMAT_H >>>>> >>>>> #include "clang/Basic/LangOptions.h" >>>>> -#include "clang/Tooling/Core/IncludeStyle.h" >>>>> #include "clang/Tooling/Core/Replacement.h" >>>>> +#include "clang/Tooling/Inclusions/IncludeStyle.h" >>>>> #include "llvm/ADT/ArrayRef.h" >>>>> #include "llvm/Support/Regex.h" >>>>> #include <system_error> >>>>> >>>>> Removed: cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h?rev=333873&view=auto >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h (original) >>>>> +++ cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h (removed) >>>>> @@ -1,137 +0,0 @@ >>>>> -//===--- HeaderIncludes.h - Insert/Delete #includes for C++ code--*- >>>>> 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_TOOLING_CORE_HEADERINCLUDES_H >>>>> -#define LLVM_CLANG_TOOLING_CORE_HEADERINCLUDES_H >>>>> - >>>>> -#include "clang/Basic/SourceManager.h" >>>>> -#include "clang/Tooling/Core/Replacement.h" >>>>> -#include "clang/Tooling/Core/IncludeStyle.h" >>>>> -#include "llvm/Support/Path.h" >>>>> -#include "llvm/Support/Regex.h" >>>>> -#include <unordered_map> >>>>> - >>>>> -namespace clang { >>>>> -namespace tooling { >>>>> - >>>>> -/// This class manages priorities of C++ #include categories and >>>>> calculates >>>>> -/// priorities for headers. >>>>> -/// FIXME(ioeric): move this class into implementation file when >>>>> clang-format's >>>>> -/// include sorting functions are also moved here. >>>>> -class IncludeCategoryManager { >>>>> -public: >>>>> - IncludeCategoryManager(const IncludeStyle &Style, StringRef >>>>> FileName); >>>>> - >>>>> - /// Returns the priority of the category which \p IncludeName >>>>> belongs to. >>>>> - /// If \p CheckMainHeader is true and \p IncludeName is a main >>>>> header, returns >>>>> - /// 0. Otherwise, returns the priority of the matching category or >>>>> INT_MAX. >>>>> - /// NOTE: this API is not thread-safe! >>>>> - int getIncludePriority(StringRef IncludeName, bool CheckMainHeader) >>>>> const; >>>>> - >>>>> -private: >>>>> - bool isMainHeader(StringRef IncludeName) const; >>>>> - >>>>> - const IncludeStyle Style; >>>>> - bool IsMainFile; >>>>> - std::string FileName; >>>>> - // This refers to a substring in FileName. >>>>> - StringRef FileStem; >>>>> - // Regex is not thread-safe. >>>>> - mutable SmallVector<llvm::Regex, 4> CategoryRegexs; >>>>> -}; >>>>> - >>>>> -/// Generates replacements for inserting or deleting #include >>>>> directives in a >>>>> -/// file. >>>>> -class HeaderIncludes { >>>>> -public: >>>>> - HeaderIncludes(llvm::StringRef FileName, llvm::StringRef Code, >>>>> - const IncludeStyle &Style); >>>>> - >>>>> - /// Inserts an #include directive of \p Header into the code. If \p >>>>> IsAngled >>>>> - /// is true, \p Header will be quoted with <> in the directive; >>>>> otherwise, it >>>>> - /// will be quoted with "". >>>>> - /// >>>>> - /// When searching for points to insert new header, this ignores >>>>> #include's >>>>> - /// after the #include block(s) in the beginning of a file to avoid >>>>> inserting >>>>> - /// headers into code sections where new #include's should not be >>>>> added by >>>>> - /// default. These code sections include: >>>>> - /// - raw string literals (containing #include). >>>>> - /// - #if blocks. >>>>> - /// - Special #include's among declarations (e.g. functions). >>>>> - /// >>>>> - /// Returns a replacement that inserts the new header into a >>>>> suitable #include >>>>> - /// block of the same category. This respects the order of the >>>>> existing >>>>> - /// #includes in the block; if the existing #includes are not >>>>> already sorted, >>>>> - /// this will simply insert the #include in front of the first >>>>> #include of the >>>>> - /// same category in the code that should be sorted after \p >>>>> IncludeName. If >>>>> - /// \p IncludeName already exists (with exactly the same spelling), >>>>> this >>>>> - /// returns None. >>>>> - llvm::Optional<tooling::Replacement> insert(llvm::StringRef Header, >>>>> - bool IsAngled) const; >>>>> - >>>>> - /// Removes all existing #includes of \p Header quoted with <> if \p >>>>> IsAngled >>>>> - /// is true or "" if \p IsAngled is false. >>>>> - /// This doesn't resolve the header file path; it only deletes >>>>> #includes with >>>>> - /// exactly the same spelling. >>>>> - tooling::Replacements remove(llvm::StringRef Header, bool IsAngled) >>>>> const; >>>>> - >>>>> -private: >>>>> - struct Include { >>>>> - Include(StringRef Name, tooling::Range R) : Name(Name), R(R) {} >>>>> - >>>>> - // An include header quoted with either <> or "". >>>>> - std::string Name; >>>>> - // The range of the whole line of include directive including any >>>>> eading >>>>> - // whitespaces and trailing comment. >>>>> - tooling::Range R; >>>>> - }; >>>>> - >>>>> - void addExistingInclude(Include IncludeToAdd, unsigned >>>>> NextLineOffset); >>>>> - >>>>> - std::string FileName; >>>>> - std::string Code; >>>>> - >>>>> - // Map from include name (quotation trimmed) to a list of existing >>>>> includes >>>>> - // (in case there are more than one) with the name in the current >>>>> file. <x> >>>>> - // and "x" will be treated as the same header when deleting >>>>> #includes. >>>>> - llvm::StringMap<llvm::SmallVector<Include, 1>> ExistingIncludes; >>>>> - >>>>> - /// Map from priorities of #include categories to all #includes in >>>>> the same >>>>> - /// category. This is used to find #includes of the same category >>>>> when >>>>> - /// inserting new #includes. #includes in the same categories are >>>>> sorted in >>>>> - /// in the order they appear in the source file. >>>>> - /// See comment for "FormatStyle::IncludeCategories" for details >>>>> about include >>>>> - /// priorities. >>>>> - std::unordered_map<int, llvm::SmallVector<const Include *, 8>> >>>>> - IncludesByPriority; >>>>> - >>>>> - int FirstIncludeOffset; >>>>> - // All new headers should be inserted after this offset (e.g. after >>>>> header >>>>> - // guards, file comment). >>>>> - unsigned MinInsertOffset; >>>>> - // Max insertion offset in the original code. For example, we want >>>>> to avoid >>>>> - // inserting new #includes into the actual code section (e.g. after >>>>> a >>>>> - // declaration). >>>>> - unsigned MaxInsertOffset; >>>>> - IncludeCategoryManager Categories; >>>>> - // Record the offset of the end of the last include in each >>>>> category. >>>>> - std::unordered_map<int, int> CategoryEndOffsets; >>>>> - >>>>> - // All possible priorities. >>>>> - std::set<int> Priorities; >>>>> - >>>>> - // Matches a whole #include directive. >>>>> - llvm::Regex IncludeRegex; >>>>> -}; >>>>> - >>>>> - >>>>> -} // namespace tooling >>>>> -} // namespace clang >>>>> - >>>>> -#endif // LLVM_CLANG_TOOLING_CORE_HEADERINCLUDES_H >>>>> >>>>> Removed: cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h?rev=333873&view=auto >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h (original) >>>>> +++ cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h (removed) >>>>> @@ -1,133 +0,0 @@ >>>>> -//===--- IncludeStyle.h - Style of C++ #include directives -------*- >>>>> 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_TOOLING_CORE_INCLUDESTYLE_H >>>>> -#define LLVM_CLANG_TOOLING_CORE_INCLUDESTYLE_H >>>>> - >>>>> -#include "llvm/Support/YAMLTraits.h" >>>>> -#include <string> >>>>> -#include <vector> >>>>> - >>>>> -namespace clang { >>>>> -namespace tooling { >>>>> - >>>>> -/// Style for sorting and grouping C++ #include directives. >>>>> -struct IncludeStyle { >>>>> - /// Styles for sorting multiple ``#include`` blocks. >>>>> - enum IncludeBlocksStyle { >>>>> - /// Sort each ``#include`` block separately. >>>>> - /// \code >>>>> - /// #include "b.h" into #include "b.h" >>>>> - /// >>>>> - /// #include <lib/main.h> #include "a.h" >>>>> - /// #include "a.h" #include >>>>> <lib/main.h> >>>>> - /// \endcode >>>>> - IBS_Preserve, >>>>> - /// Merge multiple ``#include`` blocks together and sort as one. >>>>> - /// \code >>>>> - /// #include "b.h" into #include "a.h" >>>>> - /// #include "b.h" >>>>> - /// #include <lib/main.h> #include >>>>> <lib/main.h> >>>>> - /// #include "a.h" >>>>> - /// \endcode >>>>> - IBS_Merge, >>>>> - /// Merge multiple ``#include`` blocks together and sort as one. >>>>> - /// Then split into groups based on category priority. See >>>>> - /// ``IncludeCategories``. >>>>> - /// \code >>>>> - /// #include "b.h" into #include "a.h" >>>>> - /// #include "b.h" >>>>> - /// #include <lib/main.h> >>>>> - /// #include "a.h" #include >>>>> <lib/main.h> >>>>> - /// \endcode >>>>> - IBS_Regroup, >>>>> - }; >>>>> - >>>>> - /// Dependent on the value, multiple ``#include`` blocks can be >>>>> sorted >>>>> - /// as one and divided based on category. >>>>> - IncludeBlocksStyle IncludeBlocks; >>>>> - >>>>> - /// See documentation of ``IncludeCategories``. >>>>> - struct IncludeCategory { >>>>> - /// The regular expression that this category matches. >>>>> - std::string Regex; >>>>> - /// The priority to assign to this category. >>>>> - int Priority; >>>>> - bool operator==(const IncludeCategory &Other) const { >>>>> - return Regex == Other.Regex && Priority == Other.Priority; >>>>> - } >>>>> - }; >>>>> - >>>>> - /// Regular expressions denoting the different ``#include`` >>>>> categories >>>>> - /// used for ordering ``#includes``. >>>>> - /// >>>>> - /// These regular expressions are matched against the filename of an >>>>> include >>>>> - /// (including the <> or "") in order. The value belonging to the >>>>> first >>>>> - /// matching regular expression is assigned and ``#includes`` are >>>>> sorted first >>>>> - /// according to increasing category number and then alphabetically >>>>> within >>>>> - /// each category. >>>>> - /// >>>>> - /// If none of the regular expressions match, INT_MAX is assigned as >>>>> - /// category. The main header for a source file automatically gets >>>>> category 0. >>>>> - /// so that it is generally kept at the beginning of the >>>>> ``#includes`` >>>>> - /// (http://llvm.org/docs/CodingStandards.html#include-style). >>>>> However, you >>>>> - /// can also assign negative priorities if you have certain headers >>>>> that >>>>> - /// always need to be first. >>>>> - /// >>>>> - /// To configure this in the .clang-format file, use: >>>>> - /// \code{.yaml} >>>>> - /// IncludeCategories: >>>>> - /// - Regex: '^"(llvm|llvm-c|clang|clang-c)/' >>>>> - /// Priority: 2 >>>>> - /// - Regex: '^(<|"(gtest|gmock|isl|json)/)' >>>>> - /// Priority: 3 >>>>> - /// - Regex: '.*' >>>>> - /// Priority: 1 >>>>> - /// \endcode >>>>> - std::vector<IncludeCategory> IncludeCategories; >>>>> - >>>>> - /// Specify a regular expression of suffixes that are allowed in the >>>>> - /// file-to-main-include mapping. >>>>> - /// >>>>> - /// When guessing whether a #include is the "main" include (to >>>>> assign >>>>> - /// category 0, see above), use this regex of allowed suffixes to >>>>> the header >>>>> - /// stem. A partial match is done, so that: >>>>> - /// - "" means "arbitrary suffix" >>>>> - /// - "$" means "no suffix" >>>>> - /// >>>>> - /// For example, if configured to "(_test)?$", then a header a.h >>>>> would be seen >>>>> - /// as the "main" include in both a.cc and a_test.cc. >>>>> - std::string IncludeIsMainRegex; >>>>> -}; >>>>> - >>>>> -} // namespace tooling >>>>> -} // namespace clang >>>>> - >>>>> >>>>> -LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::IncludeStyle::IncludeCategory) >>>>> - >>>>> -namespace llvm { >>>>> -namespace yaml { >>>>> - >>>>> -template <> >>>>> -struct MappingTraits<clang::tooling::IncludeStyle::IncludeCategory> { >>>>> - static void mapping(IO &IO, >>>>> - clang::tooling::IncludeStyle::IncludeCategory >>>>> &Category); >>>>> -}; >>>>> - >>>>> -template <> >>>>> -struct ScalarEnumerationTraits< >>>>> - clang::tooling::IncludeStyle::IncludeBlocksStyle> { >>>>> - static void >>>>> - enumeration(IO &IO, clang::tooling::IncludeStyle::IncludeBlocksStyle >>>>> &Value); >>>>> -}; >>>>> - >>>>> -} // namespace yaml >>>>> -} // namespace llvm >>>>> - >>>>> -#endif // LLVM_CLANG_TOOLING_CORE_INCLUDESTYLE_H >>>>> >>>>> Copied: cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h >>>>> (from r333865, cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h) >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h?p2=cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h&p1=cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h&r1=333865&r2=333874&rev=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/Tooling/Core/HeaderIncludes.h (original) >>>>> +++ cfe/trunk/include/clang/Tooling/Inclusions/HeaderIncludes.h Mon Jun >>>>> 4 02:04:12 2018 >>>>> @@ -7,12 +7,12 @@ >>>>> // >>>>> >>>>> //===----------------------------------------------------------------------===// >>>>> >>>>> -#ifndef LLVM_CLANG_TOOLING_CORE_HEADERINCLUDES_H >>>>> -#define LLVM_CLANG_TOOLING_CORE_HEADERINCLUDES_H >>>>> +#ifndef LLVM_CLANG_TOOLING_INCLUSIONS_HEADERINCLUDES_H >>>>> +#define LLVM_CLANG_TOOLING_INCLUSIONS_HEADERINCLUDES_H >>>>> >>>>> #include "clang/Basic/SourceManager.h" >>>>> #include "clang/Tooling/Core/Replacement.h" >>>>> -#include "clang/Tooling/Core/IncludeStyle.h" >>>>> +#include "clang/Tooling/Inclusions/IncludeStyle.h" >>>>> #include "llvm/Support/Path.h" >>>>> #include "llvm/Support/Regex.h" >>>>> #include <unordered_map> >>>>> @@ -134,4 +134,4 @@ private: >>>>> } // namespace tooling >>>>> } // namespace clang >>>>> >>>>> -#endif // LLVM_CLANG_TOOLING_CORE_HEADERINCLUDES_H >>>>> +#endif // LLVM_CLANG_TOOLING_INCLUSIONS_HEADERINCLUDES_H >>>>> >>>>> Copied: cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h (from >>>>> r333865, cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h) >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h?p2=cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h&p1=cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h&r1=333865&r2=333874&rev=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/Tooling/Core/IncludeStyle.h (original) >>>>> +++ cfe/trunk/include/clang/Tooling/Inclusions/IncludeStyle.h Mon Jun >>>>> 4 02:04:12 2018 >>>>> @@ -7,8 +7,8 @@ >>>>> // >>>>> >>>>> //===----------------------------------------------------------------------===// >>>>> >>>>> -#ifndef LLVM_CLANG_TOOLING_CORE_INCLUDESTYLE_H >>>>> -#define LLVM_CLANG_TOOLING_CORE_INCLUDESTYLE_H >>>>> +#ifndef LLVM_CLANG_TOOLING_INCLUSIONS_INCLUDESTYLE_H >>>>> +#define LLVM_CLANG_TOOLING_INCLUSIONS_INCLUDESTYLE_H >>>>> >>>>> #include "llvm/Support/YAMLTraits.h" >>>>> #include <string> >>>>> @@ -130,4 +130,4 @@ struct ScalarEnumerationTraits< >>>>> } // namespace yaml >>>>> } // namespace llvm >>>>> >>>>> -#endif // LLVM_CLANG_TOOLING_CORE_INCLUDESTYLE_H >>>>> +#endif // LLVM_CLANG_TOOLING_INCLUSIONS_INCLUDESTYLE_H >>>>> >>>>> Modified: cfe/trunk/include/clang/module.modulemap >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/module.modulemap?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/include/clang/module.modulemap (original) >>>>> +++ cfe/trunk/include/clang/module.modulemap Mon Jun 4 02:04:12 2018 >>>>> @@ -154,3 +154,8 @@ module Clang_ToolingCore { >>>>> requires cplusplus >>>>> umbrella "Tooling/Core" module * { export * } >>>>> } >>>>> + >>>>> +module Clang_ToolingInclusions { >>>>> + requires cplusplus >>>>> + umbrella "Tooling/Inclusions" module * { export * } >>>>> +} >>>>> >>>>> Modified: cfe/trunk/lib/Format/CMakeLists.txt >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/CMakeLists.txt?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Format/CMakeLists.txt (original) >>>>> +++ cfe/trunk/lib/Format/CMakeLists.txt Mon Jun 4 02:04:12 2018 >>>>> @@ -20,4 +20,5 @@ add_clang_library(clangFormat >>>>> clangBasic >>>>> clangLex >>>>> clangToolingCore >>>>> + clangToolingInclusions >>>>> ) >>>>> >>>>> Modified: cfe/trunk/lib/Format/Format.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Format/Format.cpp (original) >>>>> +++ cfe/trunk/lib/Format/Format.cpp Mon Jun 4 02:04:12 2018 >>>>> @@ -31,7 +31,7 @@ >>>>> #include "clang/Basic/SourceManager.h" >>>>> #include "clang/Basic/VirtualFileSystem.h" >>>>> #include "clang/Lex/Lexer.h" >>>>> -#include "clang/Tooling/Core/HeaderIncludes.h" >>>>> +#include "clang/Tooling/Inclusions/HeaderIncludes.h" >>>>> #include "llvm/ADT/STLExtras.h" >>>>> #include "llvm/ADT/StringRef.h" >>>>> #include "llvm/Support/Allocator.h" >>>>> >>>>> Modified: cfe/trunk/lib/Tooling/CMakeLists.txt >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/CMakeLists.txt?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/CMakeLists.txt (original) >>>>> +++ cfe/trunk/lib/Tooling/CMakeLists.txt Mon Jun 4 02:04:12 2018 >>>>> @@ -4,6 +4,7 @@ set(LLVM_LINK_COMPONENTS >>>>> ) >>>>> >>>>> add_subdirectory(Core) >>>>> +add_subdirectory(Inclusions) >>>>> add_subdirectory(Refactoring) >>>>> add_subdirectory(ASTDiff) >>>>> >>>>> >>>>> Modified: cfe/trunk/lib/Tooling/Core/CMakeLists.txt >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Core/CMakeLists.txt?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/CMakeLists.txt (original) >>>>> +++ cfe/trunk/lib/Tooling/Core/CMakeLists.txt Mon Jun 4 02:04:12 2018 >>>>> @@ -2,8 +2,6 @@ set(LLVM_LINK_COMPONENTS support) >>>>> >>>>> add_clang_library(clangToolingCore >>>>> Diagnostic.cpp >>>>> - HeaderIncludes.cpp >>>>> - IncludeStyle.cpp >>>>> Lookup.cpp >>>>> Replacement.cpp >>>>> >>>>> >>>>> Removed: cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp?rev=333873&view=auto >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp (original) >>>>> +++ cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp (removed) >>>>> @@ -1,330 +0,0 @@ >>>>> -//===--- HeaderIncludes.cpp - Insert/Delete #includes --*- C++ >>>>> -*----------===// >>>>> -// >>>>> -// The LLVM Compiler Infrastructure >>>>> -// >>>>> -// This file is distributed under the University of Illinois Open >>>>> Source >>>>> -// License. See LICENSE.TXT for details. >>>>> -// >>>>> >>>>> -//===----------------------------------------------------------------------===// >>>>> - >>>>> -#include "clang/Tooling/Core/HeaderIncludes.h" >>>>> -#include "clang/Basic/SourceManager.h" >>>>> -#include "clang/Lex/Lexer.h" >>>>> - >>>>> -namespace clang { >>>>> -namespace tooling { >>>>> -namespace { >>>>> - >>>>> -LangOptions createLangOpts() { >>>>> - LangOptions LangOpts; >>>>> - LangOpts.CPlusPlus = 1; >>>>> - LangOpts.CPlusPlus11 = 1; >>>>> - LangOpts.CPlusPlus14 = 1; >>>>> - LangOpts.LineComment = 1; >>>>> - LangOpts.CXXOperatorNames = 1; >>>>> - LangOpts.Bool = 1; >>>>> - LangOpts.ObjC1 = 1; >>>>> - LangOpts.ObjC2 = 1; >>>>> - LangOpts.MicrosoftExt = 1; // To get kw___try, kw___finally. >>>>> - LangOpts.DeclSpecKeyword = 1; // To get __declspec. >>>>> - LangOpts.WChar = 1; // To get wchar_t >>>>> - return LangOpts; >>>>> -} >>>>> - >>>>> -// Returns the offset after skipping a sequence of tokens, matched by >>>>> \p >>>>> -// GetOffsetAfterSequence, from the start of the code. >>>>> -// \p GetOffsetAfterSequence should be a function that matches a >>>>> sequence of >>>>> -// tokens and returns an offset after the sequence. >>>>> -unsigned getOffsetAfterTokenSequence( >>>>> - StringRef FileName, StringRef Code, const IncludeStyle &Style, >>>>> - llvm::function_ref<unsigned(const SourceManager &, Lexer &, Token >>>>> &)> >>>>> - GetOffsetAfterSequence) { >>>>> - SourceManagerForFile VirtualSM(FileName, Code); >>>>> - SourceManager &SM = VirtualSM.get(); >>>>> - Lexer Lex(SM.getMainFileID(), SM.getBuffer(SM.getMainFileID()), SM, >>>>> - createLangOpts()); >>>>> - Token Tok; >>>>> - // Get the first token. >>>>> - Lex.LexFromRawLexer(Tok); >>>>> - return GetOffsetAfterSequence(SM, Lex, Tok); >>>>> -} >>>>> - >>>>> -// Check if a sequence of tokens is like "#<Name> <raw_identifier>". >>>>> If it is, >>>>> -// \p Tok will be the token after this directive; otherwise, it can be >>>>> any token >>>>> -// after the given \p Tok (including \p Tok). >>>>> -bool checkAndConsumeDirectiveWithName(Lexer &Lex, StringRef Name, >>>>> Token &Tok) { >>>>> - bool Matched = Tok.is(tok::hash) && !Lex.LexFromRawLexer(Tok) && >>>>> - Tok.is(tok::raw_identifier) && >>>>> - Tok.getRawIdentifier() == Name && >>>>> !Lex.LexFromRawLexer(Tok) && >>>>> - Tok.is(tok::raw_identifier); >>>>> - if (Matched) >>>>> - Lex.LexFromRawLexer(Tok); >>>>> - return Matched; >>>>> -} >>>>> - >>>>> -void skipComments(Lexer &Lex, Token &Tok) { >>>>> - while (Tok.is(tok::comment)) >>>>> - if (Lex.LexFromRawLexer(Tok)) >>>>> - return; >>>>> -} >>>>> - >>>>> -// Returns the offset after header guard directives and any comments >>>>> -// before/after header guards. If no header guard presents in the >>>>> code, this >>>>> -// will returns the offset after skipping all comments from the start >>>>> of the >>>>> -// code. >>>>> -unsigned getOffsetAfterHeaderGuardsAndComments(StringRef FileName, >>>>> - StringRef Code, >>>>> - const IncludeStyle >>>>> &Style) { >>>>> - return getOffsetAfterTokenSequence( >>>>> - FileName, Code, Style, >>>>> - [](const SourceManager &SM, Lexer &Lex, Token Tok) { >>>>> - skipComments(Lex, Tok); >>>>> - unsigned InitialOffset = SM.getFileOffset(Tok.getLocation()); >>>>> - if (checkAndConsumeDirectiveWithName(Lex, "ifndef", Tok)) { >>>>> - skipComments(Lex, Tok); >>>>> - if (checkAndConsumeDirectiveWithName(Lex, "define", Tok)) >>>>> - return SM.getFileOffset(Tok.getLocation()); >>>>> - } >>>>> - return InitialOffset; >>>>> - }); >>>>> -} >>>>> - >>>>> -// Check if a sequence of tokens is like >>>>> -// "#include ("header.h" | <header.h>)". >>>>> -// If it is, \p Tok will be the token after this directive; otherwise, >>>>> it can be >>>>> -// any token after the given \p Tok (including \p Tok). >>>>> -bool checkAndConsumeInclusiveDirective(Lexer &Lex, Token &Tok) { >>>>> - auto Matched = [&]() { >>>>> - Lex.LexFromRawLexer(Tok); >>>>> - return true; >>>>> - }; >>>>> - if (Tok.is(tok::hash) && !Lex.LexFromRawLexer(Tok) && >>>>> - Tok.is(tok::raw_identifier) && Tok.getRawIdentifier() == >>>>> "include") { >>>>> - if (Lex.LexFromRawLexer(Tok)) >>>>> - return false; >>>>> - if (Tok.is(tok::string_literal)) >>>>> - return Matched(); >>>>> - if (Tok.is(tok::less)) { >>>>> - while (!Lex.LexFromRawLexer(Tok) && Tok.isNot(tok::greater)) { >>>>> - } >>>>> - if (Tok.is(tok::greater)) >>>>> - return Matched(); >>>>> - } >>>>> - } >>>>> - return false; >>>>> -} >>>>> - >>>>> -// Returns the offset of the last #include directive after which a new >>>>> -// #include can be inserted. This ignores #include's after the >>>>> #include block(s) >>>>> -// in the beginning of a file to avoid inserting headers into code >>>>> sections >>>>> -// where new #include's should not be added by default. >>>>> -// These code sections include: >>>>> -// - raw string literals (containing #include). >>>>> -// - #if blocks. >>>>> -// - Special #include's among declarations (e.g. functions). >>>>> -// >>>>> -// If no #include after which a new #include can be inserted, this >>>>> returns the >>>>> -// offset after skipping all comments from the start of the code. >>>>> -// Inserting after an #include is not allowed if it comes after code >>>>> that is not >>>>> -// #include (e.g. pre-processing directive that is not #include, >>>>> declarations). >>>>> -unsigned getMaxHeaderInsertionOffset(StringRef FileName, StringRef >>>>> Code, >>>>> - const IncludeStyle &Style) { >>>>> - return getOffsetAfterTokenSequence( >>>>> - FileName, Code, Style, >>>>> - [](const SourceManager &SM, Lexer &Lex, Token Tok) { >>>>> - skipComments(Lex, Tok); >>>>> - unsigned MaxOffset = SM.getFileOffset(Tok.getLocation()); >>>>> - while (checkAndConsumeInclusiveDirective(Lex, Tok)) >>>>> - MaxOffset = SM.getFileOffset(Tok.getLocation()); >>>>> - return MaxOffset; >>>>> - }); >>>>> -} >>>>> - >>>>> -inline StringRef trimInclude(StringRef IncludeName) { >>>>> - return IncludeName.trim("\"<>"); >>>>> -} >>>>> - >>>>> -const char IncludeRegexPattern[] = >>>>> - R"(^[\t\ ]*#[\t\ ]*(import|include)[^"<]*(["<][^">]*[">]))"; >>>>> - >>>>> -} // anonymous namespace >>>>> - >>>>> -IncludeCategoryManager::IncludeCategoryManager(const IncludeStyle >>>>> &Style, >>>>> - StringRef FileName) >>>>> - : Style(Style), FileName(FileName) { >>>>> - FileStem = llvm::sys::path::stem(FileName); >>>>> - for (const auto &Category : Style.IncludeCategories) >>>>> - CategoryRegexs.emplace_back(Category.Regex, >>>>> llvm::Regex::IgnoreCase); >>>>> - IsMainFile = FileName.endswith(".c") || FileName.endswith(".cc") || >>>>> - FileName.endswith(".cpp") || FileName.endswith(".c++") >>>>> || >>>>> - FileName.endswith(".cxx") || FileName.endswith(".m") || >>>>> - FileName.endswith(".mm"); >>>>> -} >>>>> - >>>>> -int IncludeCategoryManager::getIncludePriority(StringRef IncludeName, >>>>> - bool CheckMainHeader) >>>>> const { >>>>> - int Ret = INT_MAX; >>>>> - for (unsigned i = 0, e = CategoryRegexs.size(); i != e; ++i) >>>>> - if (CategoryRegexs[i].match(IncludeName)) { >>>>> - Ret = Style.IncludeCategories[i].Priority; >>>>> - break; >>>>> - } >>>>> - if (CheckMainHeader && IsMainFile && Ret > 0 && >>>>> isMainHeader(IncludeName)) >>>>> - Ret = 0; >>>>> - return Ret; >>>>> -} >>>>> - >>>>> -bool IncludeCategoryManager::isMainHeader(StringRef IncludeName) const >>>>> { >>>>> - if (!IncludeName.startswith("\"")) >>>>> - return false; >>>>> - StringRef HeaderStem = >>>>> - llvm::sys::path::stem(IncludeName.drop_front(1).drop_back(1)); >>>>> - if (FileStem.startswith(HeaderStem) || >>>>> - FileStem.startswith_lower(HeaderStem)) { >>>>> - llvm::Regex MainIncludeRegex((HeaderStem + >>>>> Style.IncludeIsMainRegex).str(), >>>>> - llvm::Regex::IgnoreCase); >>>>> - if (MainIncludeRegex.match(FileStem)) >>>>> - return true; >>>>> - } >>>>> - return false; >>>>> -} >>>>> - >>>>> -HeaderIncludes::HeaderIncludes(StringRef FileName, StringRef Code, >>>>> - const IncludeStyle &Style) >>>>> - : FileName(FileName), Code(Code), FirstIncludeOffset(-1), >>>>> - MinInsertOffset( >>>>> - getOffsetAfterHeaderGuardsAndComments(FileName, Code, >>>>> Style)), >>>>> - MaxInsertOffset(MinInsertOffset + >>>>> - getMaxHeaderInsertionOffset( >>>>> - FileName, Code.drop_front(MinInsertOffset), >>>>> Style)), >>>>> - Categories(Style, FileName), >>>>> - IncludeRegex(llvm::Regex(IncludeRegexPattern)) { >>>>> - // Add 0 for main header and INT_MAX for headers that are not in any >>>>> - // category. >>>>> - Priorities = {0, INT_MAX}; >>>>> - for (const auto &Category : Style.IncludeCategories) >>>>> - Priorities.insert(Category.Priority); >>>>> - SmallVector<StringRef, 32> Lines; >>>>> - Code.drop_front(MinInsertOffset).split(Lines, "\n"); >>>>> - >>>>> - unsigned Offset = MinInsertOffset; >>>>> - unsigned NextLineOffset; >>>>> - SmallVector<StringRef, 4> Matches; >>>>> - for (auto Line : Lines) { >>>>> - NextLineOffset = std::min(Code.size(), Offset + Line.size() + 1); >>>>> - if (IncludeRegex.match(Line, &Matches)) { >>>>> - // If this is the last line without trailing newline, we need to >>>>> make >>>>> - // sure we don't delete across the file boundary. >>>>> - addExistingInclude( >>>>> - Include(Matches[2], >>>>> - tooling::Range( >>>>> - Offset, std::min(Line.size() + 1, Code.size() - >>>>> Offset))), >>>>> - NextLineOffset); >>>>> - } >>>>> - Offset = NextLineOffset; >>>>> - } >>>>> - >>>>> - // Populate CategoryEndOfssets: >>>>> - // - Ensure that CategoryEndOffset[Highest] is always populated. >>>>> - // - If CategoryEndOffset[Priority] isn't set, use the next higher >>>>> value >>>>> - // that is set, up to CategoryEndOffset[Highest]. >>>>> - auto Highest = Priorities.begin(); >>>>> - if (CategoryEndOffsets.find(*Highest) == CategoryEndOffsets.end()) { >>>>> - if (FirstIncludeOffset >= 0) >>>>> - CategoryEndOffsets[*Highest] = FirstIncludeOffset; >>>>> - else >>>>> - CategoryEndOffsets[*Highest] = MinInsertOffset; >>>>> - } >>>>> - // By this point, CategoryEndOffset[Highest] is always set >>>>> appropriately: >>>>> - // - to an appropriate location before/after existing #includes, or >>>>> - // - to right after the header guard, or >>>>> - // - to the beginning of the file. >>>>> - for (auto I = ++Priorities.begin(), E = Priorities.end(); I != E; >>>>> ++I) >>>>> - if (CategoryEndOffsets.find(*I) == CategoryEndOffsets.end()) >>>>> - CategoryEndOffsets[*I] = CategoryEndOffsets[*std::prev(I)]; >>>>> -} >>>>> - >>>>> -// \p Offset: the start of the line following this include directive. >>>>> -void HeaderIncludes::addExistingInclude(Include IncludeToAdd, >>>>> - unsigned NextLineOffset) { >>>>> - auto Iter = >>>>> - >>>>> ExistingIncludes.try_emplace(trimInclude(IncludeToAdd.Name)).first; >>>>> - Iter->second.push_back(std::move(IncludeToAdd)); >>>>> - auto &CurInclude = Iter->second.back(); >>>>> - // The header name with quotes or angle brackets. >>>>> - // Only record the offset of current #include if we can insert after >>>>> it. >>>>> - if (CurInclude.R.getOffset() <= MaxInsertOffset) { >>>>> - int Priority = Categories.getIncludePriority( >>>>> - CurInclude.Name, /*CheckMainHeader=*/FirstIncludeOffset < 0); >>>>> - CategoryEndOffsets[Priority] = NextLineOffset; >>>>> - IncludesByPriority[Priority].push_back(&CurInclude); >>>>> - if (FirstIncludeOffset < 0) >>>>> - FirstIncludeOffset = CurInclude.R.getOffset(); >>>>> - } >>>>> -} >>>>> - >>>>> -llvm::Optional<tooling::Replacement> >>>>> -HeaderIncludes::insert(llvm::StringRef IncludeName, bool IsAngled) >>>>> const { >>>>> - assert(IncludeName == trimInclude(IncludeName)); >>>>> - // If a <header> ("header") already exists in code, "header" >>>>> (<header>) with >>>>> - // different quotation will still be inserted. >>>>> - // FIXME: figure out if this is the best behavior. >>>>> - auto It = ExistingIncludes.find(IncludeName); >>>>> - if (It != ExistingIncludes.end()) >>>>> - for (const auto &Inc : It->second) >>>>> - if ((IsAngled && StringRef(Inc.Name).startswith("<")) || >>>>> - (!IsAngled && StringRef(Inc.Name).startswith("\""))) >>>>> - return llvm::None; >>>>> - std::string Quoted = IsAngled ? ("<" + IncludeName + ">").str() >>>>> - : ("\"" + IncludeName + "\"").str(); >>>>> - StringRef QuotedName = Quoted; >>>>> - int Priority = Categories.getIncludePriority( >>>>> - QuotedName, /*CheckMainHeader=*/FirstIncludeOffset < 0); >>>>> - auto CatOffset = CategoryEndOffsets.find(Priority); >>>>> - assert(CatOffset != CategoryEndOffsets.end()); >>>>> - unsigned InsertOffset = CatOffset->second; // Fall back offset >>>>> - auto Iter = IncludesByPriority.find(Priority); >>>>> - if (Iter != IncludesByPriority.end()) { >>>>> - for (const auto *Inc : Iter->second) { >>>>> - if (QuotedName < Inc->Name) { >>>>> - InsertOffset = Inc->R.getOffset(); >>>>> - break; >>>>> - } >>>>> - } >>>>> - } >>>>> - assert(InsertOffset <= Code.size()); >>>>> - std::string NewInclude = ("#include " + QuotedName + "\n").str(); >>>>> - // When inserting headers at end of the code, also append '\n' to >>>>> the code >>>>> - // if it does not end with '\n'. >>>>> - // FIXME: when inserting multiple #includes at the end of code, only >>>>> one >>>>> - // newline should be added. >>>>> - if (InsertOffset == Code.size() && (!Code.empty() && Code.back() != >>>>> '\n')) >>>>> - NewInclude = "\n" + NewInclude; >>>>> - return tooling::Replacement(FileName, InsertOffset, 0, NewInclude); >>>>> -} >>>>> - >>>>> -tooling::Replacements HeaderIncludes::remove(llvm::StringRef >>>>> IncludeName, >>>>> - bool IsAngled) const { >>>>> - assert(IncludeName == trimInclude(IncludeName)); >>>>> - tooling::Replacements Result; >>>>> - auto Iter = ExistingIncludes.find(IncludeName); >>>>> - if (Iter == ExistingIncludes.end()) >>>>> - return Result; >>>>> - for (const auto &Inc : Iter->second) { >>>>> - if ((IsAngled && StringRef(Inc.Name).startswith("\"")) || >>>>> - (!IsAngled && StringRef(Inc.Name).startswith("<"))) >>>>> - continue; >>>>> - llvm::Error Err = Result.add(tooling::Replacement( >>>>> - FileName, Inc.R.getOffset(), Inc.R.getLength(), "")); >>>>> - if (Err) { >>>>> - auto ErrMsg = "Unexpected conflicts in #include deletions: " + >>>>> - llvm::toString(std::move(Err)); >>>>> - llvm_unreachable(ErrMsg.c_str()); >>>>> - } >>>>> - } >>>>> - return Result; >>>>> -} >>>>> - >>>>> - >>>>> -} // namespace tooling >>>>> -} // namespace clang >>>>> >>>>> Removed: cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp?rev=333873&view=auto >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp (original) >>>>> +++ cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp (removed) >>>>> @@ -1,32 +0,0 @@ >>>>> -//===--- IncludeStyle.cpp - Style of C++ #include directives -----*- >>>>> C++-*-===// >>>>> -// >>>>> -// The LLVM Compiler Infrastructure >>>>> -// >>>>> -// This file is distributed under the University of Illinois Open >>>>> Source >>>>> -// License. See LICENSE.TXT for details. >>>>> -// >>>>> >>>>> -//===----------------------------------------------------------------------===// >>>>> - >>>>> -#include "clang/Tooling/Core/IncludeStyle.h" >>>>> - >>>>> - >>>>> -using clang::tooling::IncludeStyle; >>>>> - >>>>> -namespace llvm { >>>>> -namespace yaml { >>>>> - >>>>> -void MappingTraits<IncludeStyle::IncludeCategory>::mapping( >>>>> - IO &IO, IncludeStyle::IncludeCategory &Category) { >>>>> - IO.mapOptional("Regex", Category.Regex); >>>>> - IO.mapOptional("Priority", Category.Priority); >>>>> -} >>>>> - >>>>> -void >>>>> ScalarEnumerationTraits<IncludeStyle::IncludeBlocksStyle>::enumeration( >>>>> - IO &IO, IncludeStyle::IncludeBlocksStyle &Value) { >>>>> - IO.enumCase(Value, "Preserve", IncludeStyle::IBS_Preserve); >>>>> - IO.enumCase(Value, "Merge", IncludeStyle::IBS_Merge); >>>>> - IO.enumCase(Value, "Regroup", IncludeStyle::IBS_Regroup); >>>>> -} >>>>> - >>>>> -} // namespace yaml >>>>> -} // namespace llvm >>>>> >>>>> Copied: cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt (from r333865, >>>>> cfe/trunk/lib/Tooling/Core/CMakeLists.txt) >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt?p2=cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt&p1=cfe/trunk/lib/Tooling/Core/CMakeLists.txt&r1=333865&r2=333874&rev=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/CMakeLists.txt (original) >>>>> +++ cfe/trunk/lib/Tooling/Inclusions/CMakeLists.txt Mon Jun 4 02:04:12 >>>>> 2018 >>>>> @@ -1,15 +1,12 @@ >>>>> set(LLVM_LINK_COMPONENTS support) >>>>> >>>>> -add_clang_library(clangToolingCore >>>>> - Diagnostic.cpp >>>>> +add_clang_library(clangToolingInclusions >>>>> HeaderIncludes.cpp >>>>> IncludeStyle.cpp >>>>> - Lookup.cpp >>>>> - Replacement.cpp >>>>> >>>>> LINK_LIBS >>>>> - clangAST >>>>> clangBasic >>>>> clangLex >>>>> clangRewrite >>>>> + clangToolingCore >>>>> ) >>>>> >>>>> Copied: cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp (from >>>>> r333865, cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp) >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp?p2=cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp&p1=cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp&r1=333865&r2=333874&rev=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/HeaderIncludes.cpp (original) >>>>> +++ cfe/trunk/lib/Tooling/Inclusions/HeaderIncludes.cpp Mon Jun 4 >>>>> 02:04:12 2018 >>>>> @@ -7,7 +7,7 @@ >>>>> // >>>>> >>>>> //===----------------------------------------------------------------------===// >>>>> >>>>> -#include "clang/Tooling/Core/HeaderIncludes.h" >>>>> +#include "clang/Tooling/Inclusions/HeaderIncludes.h" >>>>> #include "clang/Basic/SourceManager.h" >>>>> #include "clang/Lex/Lexer.h" >>>>> >>>>> >>>>> Copied: cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp (from >>>>> r333865, cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp) >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp?p2=cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp&p1=cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp&r1=333865&r2=333874&rev=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/lib/Tooling/Core/IncludeStyle.cpp (original) >>>>> +++ cfe/trunk/lib/Tooling/Inclusions/IncludeStyle.cpp Mon Jun 4 >>>>> 02:04:12 2018 >>>>> @@ -7,8 +7,7 @@ >>>>> // >>>>> >>>>> //===----------------------------------------------------------------------===// >>>>> >>>>> -#include "clang/Tooling/Core/IncludeStyle.h" >>>>> - >>>>> +#include "clang/Tooling/Inclusions/IncludeStyle.h" >>>>> >>>>> using clang::tooling::IncludeStyle; >>>>> >>>>> >>>>> Modified: cfe/trunk/unittests/Tooling/HeaderIncludesTest.cpp >>>>> URL: >>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/HeaderIncludesTest.cpp?rev=333874&r1=333873&r2=333874&view=diff >>>>> >>>>> ============================================================================== >>>>> --- cfe/trunk/unittests/Tooling/HeaderIncludesTest.cpp (original) >>>>> +++ cfe/trunk/unittests/Tooling/HeaderIncludesTest.cpp Mon Jun 4 >>>>> 02:04:12 2018 >>>>> @@ -7,7 +7,7 @@ >>>>> // >>>>> >>>>> //===----------------------------------------------------------------------===// >>>>> >>>>> -#include "clang/Tooling/Core/HeaderIncludes.h" >>>>> +#include "clang/Tooling/Inclusions/HeaderIncludes.h" >>>>> #include "../Tooling/ReplacementTest.h" >>>>> #include "../Tooling/RewriterTestContext.h" >>>>> #include "clang/Format/Format.h" >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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 >>> >>> _______________________________________________ >>> 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