diff --git a/src/tools/clangrefactoringbackend/source/collectincludesaction.h b/src/tools/clangrefactoringbackend/source/collectincludesaction.h deleted file mode 100644 index 1586ba3f8b6..00000000000 --- a/src/tools/clangrefactoringbackend/source/collectincludesaction.h +++ /dev/null @@ -1,88 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include - -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -#include -#include -#include - -#if defined(__GNUC__) -#pragma GCC diagnostic pop -#endif - -namespace ClangBackEnd { - -class CollectIncludesAction final : public clang::PreprocessOnlyAction -{ -public: - CollectIncludesAction(Utils::SmallStringVector &includes, - const std::vector &excludedIncludeUID, - std::vector &alreadyIncludedFileUIDs) - : includes(includes), - excludedIncludeUID(excludedIncludeUID), - alreadyIncludedFileUIDs(alreadyIncludedFileUIDs) - { - } - - bool BeginSourceFileAction(clang::CompilerInstance &compilerInstance, - llvm::StringRef filename) override - { - if (clang::PreprocessOnlyAction::BeginSourceFileAction(compilerInstance, filename)) { - auto &preprocessor = compilerInstance.getPreprocessor(); - auto &headerSearch = preprocessor.getHeaderSearchInfo(); - - auto macroPreprocessorCallbacks = new CollectIncludesPreprocessorCallbacks(headerSearch, - includes, - excludedIncludeUID, - alreadyIncludedFileUIDs); - - preprocessor.addPPCallbacks(std::unique_ptr(macroPreprocessorCallbacks)); - - return true; - } - - return false; - } - - void EndSourceFileAction() override - { - clang::PreprocessOnlyAction::EndSourceFileAction(); - } - -private: - Utils::SmallStringVector &includes; - const std::vector &excludedIncludeUID; - std::vector &alreadyIncludedFileUIDs; -}; - -} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/collectincludespreprocessorcallbacks.h b/src/tools/clangrefactoringbackend/source/collectincludespreprocessorcallbacks.h deleted file mode 100644 index b1f3d2c2026..00000000000 --- a/src/tools/clangrefactoringbackend/source/collectincludespreprocessorcallbacks.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" -#endif - -#include -#include -#include -#include -#include - -#if defined(__GNUC__) -#pragma GCC diagnostic pop -#endif - -#include - -#include - -#include - -namespace ClangBackEnd { - -class CollectIncludesPreprocessorCallbacks final : public clang::PPCallbacks -{ -public: - CollectIncludesPreprocessorCallbacks(clang::HeaderSearch &headerSearch, - Utils::SmallStringVector &includes, - const std::vector &excludedIncludeUID, - std::vector &alreadyIncludedFileUIDs) - : headerSearch(headerSearch), - includes(includes), - excludedIncludeUID(excludedIncludeUID), - alreadyIncludedFileUIDs(alreadyIncludedFileUIDs) - {} - - void InclusionDirective(clang::SourceLocation /*hashLocation*/, - const clang::Token &/*includeToken*/, - llvm::StringRef fileName, - bool /*isAngled*/, - clang::CharSourceRange /*fileNameRange*/, - const clang::FileEntry *file, - llvm::StringRef /*searchPath*/, - llvm::StringRef /*relativePath*/, - const clang::Module */*imported*/) override - { - auto fileUID = file->getUID(); - - flagIncludeAlreadyRead(file); - - if (isNotInExcludedIncludeUID(fileUID)) { - auto notAlreadyIncluded = isNotAlreadyIncluded(fileUID); - if (notAlreadyIncluded.first) { - alreadyIncludedFileUIDs.insert(notAlreadyIncluded.second, file->getUID()); - includes.emplace_back(fileName.data(), fileName.size()); - } - } - } - - bool isNotInExcludedIncludeUID(uint uid) const - { - return !std::binary_search(excludedIncludeUID.begin(), - excludedIncludeUID.end(), - uid); - } - - - std::pair::iterator> isNotAlreadyIncluded(uint uid) - { - auto range = std::equal_range(alreadyIncludedFileUIDs.begin(), - alreadyIncludedFileUIDs.end(), - uid); - - return {range.first == range.second, range.first}; - } - - void flagIncludeAlreadyRead(const clang::FileEntry *file) - { - auto &headerFileInfo = headerSearch.getFileInfo(file); - - headerFileInfo.isImport = true; - ++headerFileInfo.NumIncludes; - - } - -private: - clang::HeaderSearch &headerSearch; - std::vector &includes; - const std::vector &excludedIncludeUID; - std::vector &alreadyIncludedFileUIDs; -}; - -} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/collectincludestoolaction.h b/src/tools/clangrefactoringbackend/source/collectincludestoolaction.h deleted file mode 100644 index 017b2efe2a3..00000000000 --- a/src/tools/clangrefactoringbackend/source/collectincludestoolaction.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "collectincludesaction.h" - -#include - -namespace ClangBackEnd { - -class CollectIncludesToolAction final : public clang::tooling::FrontendActionFactory -{ -public: - CollectIncludesToolAction(Utils::SmallStringVector &includes, - const std::vector &excludedIncludeUIDs) - : includes(includes), - excludedIncludeUIDs(excludedIncludeUIDs) - {} - - clang::FrontendAction *create() - { - return new CollectIncludesAction(includes, excludedIncludeUIDs, alreadyIncludedFileUIDs); - } - -private: - Utils::SmallStringVector &includes; - const std::vector &excludedIncludeUIDs; - std::vector alreadyIncludedFileUIDs; -}; - -} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/includecollector.cpp b/src/tools/clangrefactoringbackend/source/includecollector.cpp deleted file mode 100644 index 914df823c1f..00000000000 --- a/src/tools/clangrefactoringbackend/source/includecollector.cpp +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "includecollector.h" - -#include "collectincludestoolaction.h" - -namespace ClangBackEnd { - -void IncludeCollector::collectIncludes() -{ - clang::tooling::ClangTool tool = createTool(); - - auto excludedIncludeFileUIDs = generateExcludedIncludeFileUIDs(tool.getFiles()); - - auto action = std::unique_ptr( - new CollectIncludesToolAction(includes, excludedIncludeFileUIDs)); - - tool.run(action.get()); -} - -void IncludeCollector::setExcludedIncludes(Utils::SmallStringVector &&excludedIncludes) -{ - this->excludedIncludes = std::move(excludedIncludes); -} - -Utils::SmallStringVector IncludeCollector::takeIncludes() -{ - std::sort(includes.begin(), includes.end()); - - return std::move(includes); -} - -std::vector IncludeCollector::generateExcludedIncludeFileUIDs(clang::FileManager &fileManager) const -{ - std::vector fileUIDs; - fileUIDs.reserve(excludedIncludes.size()); - - auto generateUID = [&] (const Utils::SmallString &filePath) { - return fileManager.getFile({filePath.data(), filePath.size()})->getUID(); - }; - - std::transform(excludedIncludes.begin(), - excludedIncludes.end(), - std::back_inserter(fileUIDs), - generateUID); - - std::sort(fileUIDs.begin(), fileUIDs.end()); - - return fileUIDs; -} - -} // namespace ClangBackEnd diff --git a/src/tools/clangrefactoringbackend/source/includecollector.h b/src/tools/clangrefactoringbackend/source/includecollector.h deleted file mode 100644 index 738ff077d2d..00000000000 --- a/src/tools/clangrefactoringbackend/source/includecollector.h +++ /dev/null @@ -1,49 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#pragma once - -#include "clangtool.h" - -namespace ClangBackEnd { - -class IncludeCollector : public ClangTool -{ -public: - void collectIncludes(); - - void setExcludedIncludes(Utils::SmallStringVector &&excludedIncludes); - - Utils::SmallStringVector takeIncludes(); - -private: - std::vector generateExcludedIncludeFileUIDs(clang::FileManager &fileManager) const; - -private: - Utils::SmallStringVector excludedIncludes; - Utils::SmallStringVector includes; -}; - -} // namespace ClangBackEnd