[clang-tools-extra] r189832 - Rename clang-replace -> clang-apply-replacements
Sean Silva
silvas at purdue.edu
Mon Sep 23 16:33:41 PDT 2013
Thanks for getting to this.
-- Sean Silva
On Tue, Sep 3, 2013 at 1:58 PM, Edwin Vane <edwin.vane at intel.com> wrote:
> Author: revane
> Date: Tue Sep 3 12:58:19 2013
> New Revision: 189832
>
> URL: http://llvm.org/viewvc/llvm-project?rev=189832&view=rev
> Log:
> Rename clang-replace -> clang-apply-replacements
>
> Made changes throughout clang-tools-extra for the renaming of
> clang-replace to clang-apply-replacements as per feedback from
> community.
>
>
> Added:
> clang-tools-extra/trunk/clang-apply-replacements/
> clang-tools-extra/trunk/clang-apply-replacements/CMakeLists.txt
> clang-tools-extra/trunk/clang-apply-replacements/Makefile
> clang-tools-extra/trunk/clang-apply-replacements/include/
>
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/
>
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/
>
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h
> clang-tools-extra/trunk/clang-apply-replacements/lib/
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/
>
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/Makefile
> clang-tools-extra/trunk/clang-apply-replacements/tool/
> clang-tools-extra/trunk/clang-apply-replacements/tool/CMakeLists.txt
>
> clang-tools-extra/trunk/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
> clang-tools-extra/trunk/clang-apply-replacements/tool/Makefile
> clang-tools-extra/trunk/test/clang-apply-replacements/
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/basic.h
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file1.yaml
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file2.yaml
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/common.h
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/expected.txt
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file1.yaml
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file2.yaml
>
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file3.yaml
> clang-tools-extra/trunk/test/clang-apply-replacements/basic.cpp
> clang-tools-extra/trunk/test/clang-apply-replacements/conflict.cpp
> Removed:
> clang-tools-extra/trunk/clang-replace/
> clang-tools-extra/trunk/test/clang-replace/
> Modified:
> clang-tools-extra/trunk/CMakeLists.txt
> clang-tools-extra/trunk/Makefile
> clang-tools-extra/trunk/cpp11-migrate/CMakeLists.txt
> clang-tools-extra/trunk/cpp11-migrate/Core/FileOverrides.h
> clang-tools-extra/trunk/cpp11-migrate/Core/Makefile
> clang-tools-extra/trunk/cpp11-migrate/tool/CMakeLists.txt
> clang-tools-extra/trunk/cpp11-migrate/tool/Cpp11Migrate.cpp
> clang-tools-extra/trunk/cpp11-migrate/tool/Makefile
> clang-tools-extra/trunk/docs/Doxyfile
> clang-tools-extra/trunk/test/CMakeLists.txt
> clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt
> clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile
>
> Modified: clang-tools-extra/trunk/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/CMakeLists.txt?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/CMakeLists.txt (original)
> +++ clang-tools-extra/trunk/CMakeLists.txt Tue Sep 3 12:58:19 2013
> @@ -1,7 +1,7 @@
> add_subdirectory(remove-cstr-calls)
> add_subdirectory(tool-template)
> +add_subdirectory(clang-apply-replacements)
> add_subdirectory(cpp11-migrate)
> -add_subdirectory(clang-replace)
> add_subdirectory(modularize)
> add_subdirectory(clang-tidy)
>
>
> Modified: clang-tools-extra/trunk/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/Makefile?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/Makefile (original)
> +++ clang-tools-extra/trunk/Makefile Tue Sep 3 12:58:19 2013
> @@ -12,7 +12,7 @@ CLANG_LEVEL := ../..
> include $(CLANG_LEVEL)/../../Makefile.config
>
> PARALLEL_DIRS := remove-cstr-calls tool-template modularize
> -DIRS := clang-replace cpp11-migrate clang-tidy unittests
> +DIRS := clang-apply-replacements cpp11-migrate clang-tidy unittests
>
> include $(CLANG_LEVEL)/Makefile
>
>
> Added: clang-tools-extra/trunk/clang-apply-replacements/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/CMakeLists.txt?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-apply-replacements/CMakeLists.txt (added)
> +++ clang-tools-extra/trunk/clang-apply-replacements/CMakeLists.txt Tue
> Sep 3 12:58:19 2013
> @@ -0,0 +1,22 @@
> +set(LLVM_LINK_COMPONENTS
> + ${LLVM_TARGETS_TO_BUILD}
> + asmparser
> + bitreader
> + support
> + mc
> + )
> +
> +add_clang_library(clangApplyReplacements
> + lib/Tooling/ApplyReplacements.cpp
> + )
> +target_link_libraries(clangApplyReplacements
> + clangTooling
> + clangBasic
> + clangRewriteFrontend
> + )
> +
> +include_directories(
> + ${CMAKE_CURRENT_SOURCE_DIR}
> + include
> + )
> +add_subdirectory(tool)
>
> Added: clang-tools-extra/trunk/clang-apply-replacements/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/Makefile?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-apply-replacements/Makefile (added)
> +++ clang-tools-extra/trunk/clang-apply-replacements/Makefile Tue Sep 3
> 12:58:19 2013
> @@ -0,0 +1,15 @@
> +##===- clang-apply-replacements/Makefile -------------------*- Makefile
> -*-===##
> +#
> +# The LLVM Compiler Infrastructure
> +#
> +# This file is distributed under the University of Illinois Open Source
> +# License. See LICENSE.TXT for details.
> +#
>
> +##===----------------------------------------------------------------------===##
> +
> +CLANG_LEVEL := ../../..
> +include $(CLANG_LEVEL)/../../Makefile.config
> +
> +DIRS = lib/Tooling tool
> +
> +include $(CLANG_LEVEL)/Makefile
>
> Added:
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h
> (added)
> +++
> clang-tools-extra/trunk/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,114 @@
> +//===-- ApplyReplacements.h - Deduplicate and apply replacements -- C++
> -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +///
> +/// \file
> +/// \brief This file provides the interface for deduplicating, detecting
> +/// conflicts in, and applying collections of Replacements.
> +///
>
> +//===----------------------------------------------------------------------===//
> +
> +#ifndef LLVM_CLANG_APPLYREPLACEMENTS_H
> +#define LLVM_CLANG_APPLYREPLACEMENTS_H
> +
> +#include "clang/Tooling/Refactoring.h"
> +#include "llvm/ADT/StringMap.h"
> +#include "llvm/ADT/StringRef.h"
> +#include "llvm/Support/system_error.h"
> +#include <vector>
> +#include <string>
> +
> +namespace clang {
> +
> +class DiagnosticsEngine;
> +class Rewriter;
> +
> +namespace replace {
> +
> +/// \brief Collection of TranslationUnitReplacements.
> +typedef std::vector<clang::tooling::TranslationUnitReplacements>
> +TUReplacements;
> +
> +/// \brief Collection of TranslationUnitReplacement files.
> +typedef std::vector<std::string> TUReplacementFiles;
> +
> +/// \brief Map mapping file name to Replacements targeting that file.
> +typedef llvm::StringMap<std::vector<clang::tooling::Replacement> >
> +FileToReplacementsMap;
> +
> +/// \brief Recursively descends through a directory structure rooted at \p
> +/// Directory and attempts to deserialize *.yaml files as
> +/// TranslationUnitReplacements. All docs that successfully deserialize
> are
> +/// added to \p TUs.
> +///
> +/// Directories starting with '.' are ignored during traversal.
> +///
> +/// \param[in] Directory Directory to begin search for serialized
> +/// TranslationUnitReplacements.
> +/// \param[out] TUs Collection of all found and deserialized
> +/// TranslationUnitReplacements.
> +/// \param[out] TURFiles Collection of all TranslationUnitReplacement
> files
> +/// found in \c Directory.
> +/// \param[in] Diagnostics DiagnosticsEngine used for error output.
> +///
> +/// \returns An error_code indicating success or failure in navigating the
> +/// directory structure.
> +llvm::error_code
> +collectReplacementsFromDirectory(const llvm::StringRef Directory,
> + TUReplacements &TUs,
> + TUReplacementFiles &TURFiles,
> + clang::DiagnosticsEngine &Diagnostics);
> +
> +/// \brief Deduplicate, check for conflicts, and apply all Replacements
> stored
> +/// in \c TUs. If conflicts occur, no Replacements are applied.
> +///
> +/// \param[in] TUs Collection of TranslationUnitReplacements to merge,
> +/// deduplicate, and test for conflicts.
> +/// \param[out] GroupedReplacements Container grouping all Replacements
> by the
> +/// file they target.
> +/// \param[in] SM SourceManager required for conflict reporting.
> +///
> +/// \returns \li true If all changes were applied successfully.
> +/// \li false If there were conflicts.
> +bool mergeAndDeduplicate(const TUReplacements &TUs,
> + FileToReplacementsMap &GroupedReplacements,
> + clang::SourceManager &SM);
> +
> +/// \brief Apply all replacements in \c GroupedReplacements.
> +///
> +/// \param[in] GroupedReplacements Deduplicated and conflict free
> Replacements
> +/// to apply.
> +/// \param[out] Rewrites The results of applying replacements will be
> applied
> +/// to this Rewriter.
> +///
> +/// \returns \li true If all changes were applied successfully.
> +/// \li false If a replacement failed to apply.
> +bool applyReplacements(const FileToReplacementsMap &GroupedReplacements,
> + clang::Rewriter &Rewrites);
> +
> +/// \brief Write the contents of \c FileContents to disk. Keys of the map
> are
> +/// filenames and values are the new contents for those files.
> +///
> +/// \param[in] Rewrites Rewriter containing written files to write to
> disk.
> +bool writeFiles(const clang::Rewriter &Rewrites);
> +
> +/// \brief Delete the replacement files.
> +///
> +/// \param[in] Files Replacement files to delete.
> +/// \param[in] Diagnostics DiagnosticsEngine used for error output.
> +///
> +/// \returns \li true If all files have been deleted successfully.
> +/// \li false If at least one or more failures occur when
> deleting
> +/// files.
> +bool deleteReplacementFiles(const TUReplacementFiles &Files,
> + clang::DiagnosticsEngine &Diagnostics);
> +
> +} // end namespace replace
> +} // end namespace clang
> +
> +#endif // LLVM_CLANG_APPLYREPLACEMENTS_H
>
> Added:
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp
> (added)
> +++
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/ApplyReplacements.cpp
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,254 @@
> +//===-- ApplyReplacements.cpp - Apply and deduplicate replacements
> --------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +///
> +/// \file
> +/// \brief This file provides the implementation for deduplicating,
> detecting
> +/// conflicts in, and applying collections of Replacements.
> +///
> +/// FIXME: Use Diagnostics for output instead of llvm::errs().
> +///
>
> +//===----------------------------------------------------------------------===//
> +#include "clang-apply-replacements/Tooling/ApplyReplacements.h"
> +#include "clang/Basic/LangOptions.h"
> +#include "clang/Basic/SourceManager.h"
> +#include "clang/Rewrite/Core/Rewriter.h"
> +#include "clang/Tooling/ReplacementsYaml.h"
> +#include "llvm/ADT/ArrayRef.h"
> +#include "llvm/Support/FileSystem.h"
> +#include "llvm/Support/MemoryBuffer.h"
> +#include "llvm/Support/Path.h"
> +#include "llvm/Support/raw_ostream.h"
> +
> +using namespace llvm;
> +using namespace clang;
> +
> +
> +static void eatDiagnostics(const SMDiagnostic &, void *) {}
> +
> +namespace clang {
> +namespace replace {
> +
> +
> +llvm::error_code
> +collectReplacementsFromDirectory(const llvm::StringRef Directory,
> + TUReplacements &TUs,
> + TUReplacementFiles & TURFiles,
> + clang::DiagnosticsEngine &Diagnostics) {
> + using namespace llvm::sys::fs;
> + using namespace llvm::sys::path;
> +
> + error_code ErrorCode;
> +
> + for (recursive_directory_iterator I(Directory, ErrorCode), E;
> + I != E && !ErrorCode; I.increment(ErrorCode)) {
> + if (filename(I->path())[0] == '.') {
> + // Indicate not to descend into directories beginning with '.'
> + I.no_push();
> + continue;
> + }
> +
> + if (extension(I->path()) != ".yaml")
> + continue;
> +
> + TURFiles.push_back(I->path());
> +
> + OwningPtr<MemoryBuffer> Out;
> + error_code BufferError = MemoryBuffer::getFile(I->path(), Out);
> + if (BufferError) {
> + errs() << "Error reading " << I->path() << ": " <<
> BufferError.message()
> + << "\n";
> + continue;
> + }
> +
> + yaml::Input YIn(Out->getBuffer());
> + YIn.setDiagHandler(&eatDiagnostics);
> + tooling::TranslationUnitReplacements TU;
> + YIn >> TU;
> + if (YIn.error()) {
> + // File doesn't appear to be a header change description. Ignore it.
> + continue;
> + }
> +
> + // Only keep files that properly parse.
> + TUs.push_back(TU);
> + }
> +
> + return ErrorCode;
> +}
> +
> +/// \brief Dumps information for a sequence of conflicting Replacements.
> +///
> +/// \param[in] File FileEntry for the file the conflicting Replacements
> are
> +/// for.
> +/// \param[in] ConflictingReplacements List of conflicting Replacements.
> +/// \param[in] SM SourceManager used for reporting.
> +static void reportConflict(
> + const FileEntry *File,
> + const llvm::ArrayRef<clang::tooling::Replacement>
> ConflictingReplacements,
> + SourceManager &SM) {
> + FileID FID = SM.translateFile(File);
> + if (FID.isInvalid())
> + FID = SM.createFileID(File, SourceLocation(), SrcMgr::C_User);
> +
> + // FIXME: Output something a little more user-friendly (e.g. unified
> diff?)
> + errs() << "The following changes conflict:\n";
> + for (const tooling::Replacement *I = ConflictingReplacements.begin(),
> + *E = ConflictingReplacements.end();
> + I != E; ++I) {
> + if (I->getLength() == 0) {
> + errs() << " Insert at " << SM.getLineNumber(FID, I->getOffset())
> << ":"
> + << SM.getColumnNumber(FID, I->getOffset()) << " "
> + << I->getReplacementText() << "\n";
> + } else {
> + if (I->getReplacementText().empty())
> + errs() << " Remove ";
> + else
> + errs() << " Replace ";
> +
> + errs() << SM.getLineNumber(FID, I->getOffset()) << ":"
> + << SM.getColumnNumber(FID, I->getOffset()) << "-"
> + << SM.getLineNumber(FID, I->getOffset() + I->getLength() - 1)
> + << ":"
> + << SM.getColumnNumber(FID, I->getOffset() + I->getLength() -
> 1);
> +
> + if (I->getReplacementText().empty())
> + errs() << "\n";
> + else
> + errs() << " with \"" << I->getReplacementText() << "\"\n";
> + }
> + }
> +}
> +
> +/// \brief Deduplicates and tests for conflicts among the replacements
> for each
> +/// file in \c Replacements. Any conflicts found are reported.
> +///
> +/// \param[in,out] Replacements Container of all replacements grouped by
> file
> +/// to be deduplicated and checked for conflicts.
> +/// \param[in] SM SourceManager required for conflict reporting.
> +///
> +/// \returns \li true if conflicts were detected
> +/// \li false if no conflicts were detected
> +static bool deduplicateAndDetectConflicts(FileToReplacementsMap
> &Replacements,
> + SourceManager &SM) {
> + bool conflictsFound = false;
> +
> + for (FileToReplacementsMap::iterator I = Replacements.begin(),
> + E = Replacements.end();
> + I != E; ++I) {
> +
> + const FileEntry *Entry = SM.getFileManager().getFile(I->getKey());
> + if (!Entry) {
> + errs() << "Described file '" << I->getKey()
> + << "' doesn't exist. Ignoring...\n";
> + continue;
> + }
> +
> + std::vector<tooling::Range> Conflicts;
> + tooling::deduplicate(I->getValue(), Conflicts);
> +
> + if (Conflicts.empty())
> + continue;
> +
> + conflictsFound = true;
> +
> + errs() << "There are conflicting changes to " << I->getKey() << ":\n";
> +
> + for (std::vector<tooling::Range>::const_iterator
> + ConflictI = Conflicts.begin(),
> + ConflictE = Conflicts.end();
> + ConflictI != ConflictE; ++ConflictI) {
> + ArrayRef<tooling::Replacement> ConflictingReplacements(
> + &I->getValue()[ConflictI->getOffset()], ConflictI->getLength());
> + reportConflict(Entry, ConflictingReplacements, SM);
> + }
> + }
> +
> + return conflictsFound;
> +}
> +
> +bool mergeAndDeduplicate(const TUReplacements &TUs,
> + FileToReplacementsMap &GroupedReplacements,
> + clang::SourceManager &SM) {
> +
> + // Group all replacements by target file.
> + for (TUReplacements::const_iterator TUI = TUs.begin(), TUE = TUs.end();
> + TUI != TUE; ++TUI)
> + for (std::vector<tooling::Replacement>::const_iterator
> + RI = TUI->Replacements.begin(),
> + RE = TUI->Replacements.end();
> + RI != RE; ++RI)
> + GroupedReplacements[RI->getFilePath()].push_back(*RI);
> +
> +
> + // Ask clang to deduplicate and report conflicts.
> + if (deduplicateAndDetectConflicts(GroupedReplacements, SM))
> + return false;
> +
> + return true;
> +}
> +
> +bool applyReplacements(const FileToReplacementsMap &GroupedReplacements,
> + clang::Rewriter &Rewrites) {
> +
> + // Apply all changes
> + //
> + // FIXME: No longer certain GroupedReplacements is really the best kind
> of
> + // data structure for applying replacements. Rewriter certainly doesn't
> care.
> + // However, until we nail down the design of ReplacementGroups, might
> as well
> + // leave this as is.
> + for (FileToReplacementsMap::const_iterator I =
> GroupedReplacements.begin(),
> + E =
> GroupedReplacements.end();
> + I != E; ++I) {
> + if (!tooling::applyAllReplacements(I->getValue(), Rewrites))
> + return false;
> + }
> +
> + return true;
> +}
> +
> +bool writeFiles(const clang::Rewriter &Rewrites) {
> +
> + for (Rewriter::const_buffer_iterator BufferI = Rewrites.buffer_begin(),
> + BufferE = Rewrites.buffer_end();
> + BufferI != BufferE; ++BufferI) {
> + const char *FileName =
> +
> Rewrites.getSourceMgr().getFileEntryForID(BufferI->first)->getName();
> +
> + std::string ErrorInfo;
> +
> + llvm::raw_fd_ostream FileStream(FileName, ErrorInfo);
> + if (!ErrorInfo.empty()) {
> + errs() << "Warning: Could not write to " << FileName << "\n";
> + continue;
> + }
> + BufferI->second.write(FileStream);
> + }
> +
> + return true;
> +}
> +
> +bool deleteReplacementFiles(const TUReplacementFiles &Files,
> + clang::DiagnosticsEngine &Diagnostics) {
> + bool Success = true;
> + for (TUReplacementFiles::const_iterator I = Files.begin(), E =
> Files.end();
> + I != E; ++I) {
> + error_code Error = llvm::sys::fs::remove(*I);
> + if (Error) {
> + Success = false;
> + // FIXME: Use Diagnostics for outputting errors.
> + errs() << "Error deleting file: " << *I << "\n";
> + errs() << Error.message() << "\n";
> + errs() << "Please delete the file manually\n";
> + }
> + }
> + return Success;
> +}
> +
> +} // end namespace replace
> +} // end namespace clang
>
> Added:
> clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/Makefile?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/Makefile
> (added)
> +++ clang-tools-extra/trunk/clang-apply-replacements/lib/Tooling/Makefile
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,14 @@
> +##===- clang-apply-replacements/lib/Tooling/Makefile -------*- Makefile
> -*-===##
> +#
> +# The LLVM Compiler Infrastructure
> +#
> +# This file is distributed under the University of Illinois Open Source
> +# License. See LICENSE.TXT for details.
> +#
>
> +##===----------------------------------------------------------------------===##
> +
> +CLANG_LEVEL := ../../../../..
> +LIBRARYNAME := clangApplyReplacements
> +include $(CLANG_LEVEL)/../../Makefile.config
> +include $(CLANG_LEVEL)/Makefile
> +CPP.Flags += -I$(PROJ_SRC_DIR)/../../include
>
> Added: clang-tools-extra/trunk/clang-apply-replacements/tool/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/tool/CMakeLists.txt?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-apply-replacements/tool/CMakeLists.txt
> (added)
> +++ clang-tools-extra/trunk/clang-apply-replacements/tool/CMakeLists.txt
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,17 @@
> +set(LLVM_LINK_COMPONENTS
> + ${LLVM_TARGETS_TO_BUILD}
> + asmparser
> + bitreader
> + support
> + mc
> + )
> +
> +add_clang_executable(clang-apply-replacements
> + ClangApplyReplacementsMain.cpp
> + )
> +target_link_libraries(clang-apply-replacements
> + clangApplyReplacements
> + )
> +
> +install(TARGETS clang-apply-replacements
> + RUNTIME DESTINATION bin)
>
> Added:
> clang-tools-extra/trunk/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
> (added)
> +++
> clang-tools-extra/trunk/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,96 @@
> +//===-- ClangApplyReplacementsMain.cpp - Main file for the tool
> -----------===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
>
> +//===----------------------------------------------------------------------===//
> +///
> +/// \file
> +/// \brief This file provides the main function for the
> +/// clang-apply-replacements tool.
> +///
>
> +//===----------------------------------------------------------------------===//
> +
> +#include "clang-apply-replacements/Tooling/ApplyReplacements.h"
> +#include "clang/Basic/Diagnostic.h"
> +#include "clang/Basic/DiagnosticOptions.h"
> +#include "clang/Basic/SourceManager.h"
> +#include "clang/Rewrite/Core/Rewriter.h"
> +#include "llvm/Support/CommandLine.h"
> +
> +using namespace llvm;
> +using namespace clang;
> +using namespace clang::replace;
> +
> +static cl::opt<std::string> Directory(cl::Positional, cl::Required,
> + cl::desc("<Search Root
> Directory>"));
> +
> +static cl::opt<bool> RemoveTUReplacementFiles(
> + "remove-change-desc-files",
> + cl::desc("Remove the change description files regardless of
> successful\n"
> + "merging/replacing."),
> + cl::init(false));
> +
> +// Helper object to remove the TUReplacement files (triggered by
> +// "remove-change-desc-files" command line option) when exiting current
> scope.
> +class ScopedFileRemover {
> +public:
> + ScopedFileRemover(const TUReplacementFiles &Files,
> + clang::DiagnosticsEngine &Diagnostics)
> + : TURFiles(Files), Diag(Diagnostics) {}
> +
> + ~ScopedFileRemover() {
> + deleteReplacementFiles(TURFiles, Diag);
> + }
> +
> +private:
> + const TUReplacementFiles &TURFiles;
> + clang::DiagnosticsEngine &Diag;
> +};
> +
> +int main(int argc, char **argv) {
> + cl::ParseCommandLineOptions(argc, argv);
> +
> + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions());
> + DiagnosticsEngine Diagnostics(
> + IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()),
> + DiagOpts.getPtr());
> +
> + TUReplacements TUs;
> + TUReplacementFiles TURFiles;
> +
> + error_code ErrorCode =
> + collectReplacementsFromDirectory(Directory, TUs, TURFiles,
> Diagnostics);
> +
> + if (ErrorCode) {
> + errs() << "Trouble iterating over directory '" << Directory
> + << "': " << ErrorCode.message() << "\n";
> + return false;
> + }
> +
> + // Remove the TUReplacementFiles (triggered by
> "remove-change-desc-files"
> + // command line option) when exiting main().
> + OwningPtr<ScopedFileRemover> Remover;
> + if (RemoveTUReplacementFiles)
> + Remover.reset(new ScopedFileRemover(TURFiles, Diagnostics));
> +
> + FileManager Files((FileSystemOptions()));
> + SourceManager SM(Diagnostics, Files);
> +
> + FileToReplacementsMap GroupedReplacements;
> + if (!mergeAndDeduplicate(TUs, GroupedReplacements, SM))
> + return 1;
> +
> + Rewriter DestRewriter(SM, LangOptions());
> + if (!applyReplacements(GroupedReplacements, DestRewriter)) {
> + errs() << "Failed to apply all replacements. No changes made.\n";
> + return 1;
> + }
> +
> + if (!writeFiles(DestRewriter))
> + return 1;
> +
> + return 0;
> +}
>
> Added: clang-tools-extra/trunk/clang-apply-replacements/tool/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-apply-replacements/tool/Makefile?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/clang-apply-replacements/tool/Makefile (added)
> +++ clang-tools-extra/trunk/clang-apply-replacements/tool/Makefile Tue Sep
> 3 12:58:19 2013
> @@ -0,0 +1,28 @@
> +##===- clang-apply-replacements/tool/Makefile --------------*- Makefile
> -*-===##
> +#
> +# The LLVM Compiler Infrastructure
> +#
> +# This file is distributed under the University of Illinois Open Source
> +# License. See LICENSE.TXT for details.
> +#
>
> +##===----------------------------------------------------------------------===##
> +
> +CLANG_LEVEL := ../../../..
> +include $(CLANG_LEVEL)/../../Makefile.config
> +
> +TOOLNAME = clang-apply-replacements
> +
> +# No plugins, optimize startup time.
> +TOOL_NO_EXPORTS = 1
> +
> +SOURCES = ClangApplyReplacementsMain.cpp
> +
> +LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc
> mcparser option
> +USEDLIBS = clangApplyReplacements.a clangFormat.a clangTooling.a
> clangFrontend.a \
> + clangSerialization.a clangDriver.a clangRewriteFrontend.a \
> + clangRewriteCore.a clangParse.a clangSema.a clangAnalysis.a \
> + clangAST.a clangASTMatchers.a clangEdit.a clangLex.a
> clangBasic.a
> +
> +include $(CLANG_LEVEL)/Makefile
> +
> +CPP.Flags += -I$(PROJ_SRC_DIR)/../include
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/CMakeLists.txt?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/CMakeLists.txt (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/CMakeLists.txt Tue Sep 3
> 12:58:19 2013
> @@ -1,5 +1,5 @@
> get_filename_component(ClangReplaceLocation
> - "${CMAKE_CURRENT_SOURCE_DIR}/../clang-replace/include" ABSOLUTE)
> + "${CMAKE_CURRENT_SOURCE_DIR}/../clang-apply-replacements/include"
> ABSOLUTE)
>
> include_directories(
> ${CMAKE_CURRENT_SOURCE_DIR}
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/Core/FileOverrides.h
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/Core/FileOverrides.h?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/Core/FileOverrides.h (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/Core/FileOverrides.h Tue Sep 3
> 12:58:19 2013
> @@ -17,7 +17,7 @@
> #define CPP11_MIGRATE_FILE_OVERRIDES_H
>
> #include "Core/Refactoring.h"
> -#include "clang-replace/Tooling/ApplyReplacements.h"
> +#include "clang-apply-replacements/Tooling/ApplyReplacements.h"
> #include "clang/Tooling/ReplacementsYaml.h"
> #include "llvm/ADT/StringMap.h"
>
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/Core/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/Core/Makefile?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/Core/Makefile (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/Core/Makefile Tue Sep 3
> 12:58:19 2013
> @@ -11,4 +11,4 @@ LIBRARYNAME := migrateCore
>
> include $(CLANG_LEVEL)/Makefile
>
> -CPP.Flags += -I$(PROJ_SRC_DIR)/..
> -I$(PROJ_SRC_DIR)/../../clang-replace/include
> +CPP.Flags += -I$(PROJ_SRC_DIR)/..
> -I$(PROJ_SRC_DIR)/../../clang-apply-replacements/include
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/tool/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/tool/CMakeLists.txt?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/tool/CMakeLists.txt (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/tool/CMakeLists.txt Tue Sep 3
> 12:58:19 2013
> @@ -34,7 +34,7 @@ add_dependencies(cpp11-migrate
> )
>
> target_link_libraries(cpp11-migrate
> - clangReplace
> + clangApplyReplacements
> migrateCore
> )
>
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/tool/Cpp11Migrate.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/tool/Cpp11Migrate.cpp?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/tool/Cpp11Migrate.cpp (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/tool/Cpp11Migrate.cpp Tue Sep 3
> 12:58:19 2013
> @@ -28,7 +28,7 @@
> #include "clang/Rewrite/Core/Rewriter.h"
> #include "clang/Tooling/CommonOptionsParser.h"
> #include "clang/Tooling/Tooling.h"
> -#include "clang-replace/Tooling/ApplyReplacements.h"
> +#include "clang-apply-replacements/Tooling/ApplyReplacements.h"
> #include "llvm/ADT/STLExtras.h"
> #include "llvm/ADT/StringSwitch.h"
> #include "llvm/Support/MemoryBuffer.h"
>
> Modified: clang-tools-extra/trunk/cpp11-migrate/tool/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/cpp11-migrate/tool/Makefile?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/cpp11-migrate/tool/Makefile (original)
> +++ clang-tools-extra/trunk/cpp11-migrate/tool/Makefile Tue Sep 3
> 12:58:19 2013
> @@ -36,14 +36,14 @@ SOURCES += $(addprefix ../ReplaceAutoPtr
> BUILT_SOURCES += $(ObjDir)/../ReplaceAutoPtr/.objdir
>
> LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc
> mcparser option
> -USEDLIBS = migrateCore.a clangFormat.a clangReplace.a clangTooling.a
> clangFrontend.a \
> +USEDLIBS = migrateCore.a clangFormat.a clangApplyReplacements.a
> clangTooling.a clangFrontend.a \
> clangSerialization.a clangDriver.a clangRewriteFrontend.a \
> clangRewriteCore.a clangParse.a clangSema.a clangAnalysis.a \
> clangAST.a clangASTMatchers.a clangEdit.a clangLex.a
> clangBasic.a
>
> include $(CLANG_LEVEL)/Makefile
>
> -CPP.Flags += -I$(PROJ_SRC_DIR)/..
> -I$(PROJ_SRC_DIR)/../../clang-replace/include
> +CPP.Flags += -I$(PROJ_SRC_DIR)/..
> -I$(PROJ_SRC_DIR)/../../clang-apply-replacements/include
>
> # BUILT_SOURCES gets used as a prereq for many top-level targets.
> However, at
> # the point those targets are defined, $(ObjDir) hasn't been defined and
> so the
>
> Modified: clang-tools-extra/trunk/docs/Doxyfile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/docs/Doxyfile?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/docs/Doxyfile (original)
> +++ clang-tools-extra/trunk/docs/Doxyfile Tue Sep 3 12:58:19 2013
> @@ -648,7 +648,7 @@ WARN_LOGFILE =
> # directories like "/usr/src/myproject". Separate the files or directories
> # with spaces.
>
> -INPUT = ../cpp11-migrate ../clang-replace
> +INPUT = ../cpp11-migrate ../clang-apply-replacements
>
> # This tag can be used to specify the character encoding of the source
> files
> # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which
> is
>
> Modified: clang-tools-extra/trunk/test/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/CMakeLists.txt?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/test/CMakeLists.txt (original)
> +++ clang-tools-extra/trunk/test/CMakeLists.txt Tue Sep 3 12:58:19 2013
> @@ -27,7 +27,7 @@ set(CLANG_TOOLS_TEST_DEPS
> clang clang-headers FileCheck count not
>
> # Individual tools we test.
> - remove-cstr-calls clang-replace cpp11-migrate modularize clang-tidy
> + remove-cstr-calls clang-apply-replacements cpp11-migrate modularize
> clang-tidy
>
> # Unit tests
> ExtraToolsUnitTests
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/basic.h
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/basic.h?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/basic.h
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/basic.h
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,32 @@
> +#ifndef BASIC_H
> +#define BASIC_H
> +
> +
> +class Parent {
> +public:
> + virtual void func() {}
> +};
> +
> +class Derived : public Parent {
> +public:
> + virtual void func() {}
> + // CHECK: virtual void func() override {}
> +};
> +
> +extern void ext(int (&)[5], const Parent &);
> +
> +void func(int t) {
> + int ints[5];
> + for (unsigned i = 0; i < 5; ++i) {
> + int &e = ints[i];
> + e = t;
> + // CHECK: for (auto & elem : ints) {
> + // CHECK-NEXT: elem = t;
> + }
> +
> + Derived d;
> +
> + ext(ints, d);
> +}
> +
> +#endif // BASIC_H
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file1.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file1.yaml?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file1.yaml
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file1.yaml
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,16 @@
> +---
> +MainSourceFile: "source1.cpp"
> +Replacements:
> + - FilePath: "$(path)/basic.h"
> + Offset: 242
> + Length: 26
> + ReplacementText: "auto & elem : ints"
> + - FilePath: "$(path)/basic.h"
> + Offset: 276
> + Length: 22
> + ReplacementText: ""
> + - FilePath: "$(path)/basic.h"
> + Offset: 298
> + Length: 1
> + ReplacementText: "elem"
> +...
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file2.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file2.yaml?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file2.yaml
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/basic/file2.yaml
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,8 @@
> +---
> +MainSourceFile: "source2.cpp"
> +Replacements:
> + - FilePath: "$(path)/basic.h"
> + Offset: 148
> + Length: 0
> + ReplacementText: "override "
> +...
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/common.h
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/common.h?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/common.h
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/common.h
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,17 @@
> +#ifndef COMMON_H
> +#define COMMON_H
> +
> +extern void ext(int (&)[5]);
> +
> +void func(int t) {
> + int ints[5];
> + for (unsigned i = 0; i < 5; ++i) {
> + ints[i] = t;
> + }
> +
> + int *i = 0;
> +
> + ext(ints);
> +}
> +
> +#endif // COMMON_H
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/expected.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/expected.txt?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/expected.txt
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/expected.txt
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,11 @@
> +There are conflicting changes to $(path)/common.h:
> +The following changes conflict:
> + Replace 8:8-8:33 with "auto & i : ints"
> + Replace 8:8-8:33 with "int & elem : ints"
> +The following changes conflict:
> + Replace 9:5-9:11 with "elem"
> + Replace 9:5-9:11 with "i"
> +The following changes conflict:
> + Remove 12:3-12:14
> + Insert at 12:12 (int*)
> + Replace 12:12-12:12 with "nullptr"
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file1.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file1.yaml?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file1.yaml
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file1.yaml
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,16 @@
> +---
> +MainSourceFile: "source1.cpp"
> +Replacements:
> + - FilePath: "$(path)/common.h"
> + Offset: 106
> + Length: 26
> + ReplacementText: "auto & i : ints"
> + - FilePath: "$(path)/common.h"
> + Offset: 140
> + Length: 7
> + ReplacementText: "i"
> + - FilePath: "$(path)/common.h"
> + Offset: 160
> + Length: 12
> + ReplacementText: ""
> +...
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file2.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file2.yaml?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file2.yaml
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file2.yaml
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,16 @@
> +---
> +MainSourceFile: "source2.cpp"
> +Replacements:
> + - FilePath: "$(path)/common.h"
> + Offset: 106
> + Length: 26
> + ReplacementText: "int & elem : ints"
> + - FilePath: "$(path)/common.h"
> + Offset: 140
> + Length: 7
> + ReplacementText: "elem"
> + - FilePath: "$(path)/common.h"
> + Offset: 169
> + Length: 1
> + ReplacementText: "nullptr"
> +...
>
> Added:
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file3.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file3.yaml?rev=189832&view=auto
>
> ==============================================================================
> ---
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file3.yaml
> (added)
> +++
> clang-tools-extra/trunk/test/clang-apply-replacements/Inputs/conflict/file3.yaml
> Tue Sep 3 12:58:19 2013
> @@ -0,0 +1,8 @@
> +---
> +MainSourceFile: "source1.cpp"
> +Replacements:
> + - FilePath: "$(path)/common.h"
> + Offset: 169
> + Length: 0
> + ReplacementText: "(int*)"
> +...
>
> Added: clang-tools-extra/trunk/test/clang-apply-replacements/basic.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/basic.cpp?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/test/clang-apply-replacements/basic.cpp (added)
> +++ clang-tools-extra/trunk/test/clang-apply-replacements/basic.cpp Tue
> Sep 3 12:58:19 2013
> @@ -0,0 +1,17 @@
> +// RUN: mkdir -p %T/Inputs/basic
> +// RUN: grep -Ev "// *[A-Z-]+:" %S/Inputs/basic/basic.h >
> %T/Inputs/basic/basic.h
> +// RUN: sed "s#\$(path)#%/T/Inputs/basic#" %S/Inputs/basic/file1.yaml >
> %T/Inputs/basic/file1.yaml
> +// RUN: sed "s#\$(path)#%/T/Inputs/basic#" %S/Inputs/basic/file2.yaml >
> %T/Inputs/basic/file2.yaml
> +// RUN: clang-apply-replacements %T/Inputs/basic
> +// RUN: FileCheck -input-file=%T/Inputs/basic/basic.h
> %S/Inputs/basic/basic.h
> +//
> +// Check that the yaml files are *not* deleted after running
> clang-apply-replacements without remove-change-desc-files.
> +// RUN: ls -1 %T/Inputs/basic | FileCheck %s --check-prefix=YAML
> +//
> +// Check that the yaml files *are* deleted after running
> clang-apply-replacements with remove-change-desc-files.
> +// RUN: grep -Ev "// *[A-Z-]+:" %S/Inputs/basic/basic.h >
> %T/Inputs/basic/basic.h
> +// RUN: clang-apply-replacements -remove-change-desc-files %T/Inputs/basic
> +// RUN: ls -1 %T/Inputs/basic | FileCheck %s --check-prefix=NO_YAML
> +//
> +// YAML: {{^file.\.yaml$}}
> +// NO_YAML-NOT: {{^file.\.yaml$}}
>
> Added: clang-tools-extra/trunk/test/clang-apply-replacements/conflict.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-apply-replacements/conflict.cpp?rev=189832&view=auto
>
> ==============================================================================
> --- clang-tools-extra/trunk/test/clang-apply-replacements/conflict.cpp
> (added)
> +++ clang-tools-extra/trunk/test/clang-apply-replacements/conflict.cpp Tue
> Sep 3 12:58:19 2013
> @@ -0,0 +1,17 @@
> +// RUN: mkdir -p %T/Inputs/conflict
> +// RUN: sed "s#\$(path)#%/S/Inputs/conflict#"
> %S/Inputs/conflict/file1.yaml > %T/Inputs/conflict/file1.yaml
> +// RUN: sed "s#\$(path)#%/S/Inputs/conflict#"
> %S/Inputs/conflict/file2.yaml > %T/Inputs/conflict/file2.yaml
> +// RUN: sed "s#\$(path)#%/S/Inputs/conflict#"
> %S/Inputs/conflict/file3.yaml > %T/Inputs/conflict/file3.yaml
> +// RUN: sed "s#\$(path)#%/S/Inputs/conflict#"
> %S/Inputs/conflict/expected.txt > %T/Inputs/conflict/expected.txt
> +// RUN: not clang-apply-replacements %T/Inputs/conflict >
> %T/Inputs/conflict/output.txt 2>&1
> +// RUN: diff -b %T/Inputs/conflict/output.txt
> %T/Inputs/conflict/expected.txt
> +//
> +// Check that the yaml files are *not* deleted after running
> clang-apply-replacements without remove-change-desc-files even when there
> is a failure.
> +// RUN: ls -1 %T/Inputs/conflict | FileCheck %s --check-prefix=YAML
> +//
> +// Check that the yaml files *are* deleted after running
> clang-apply-replacements with remove-change-desc-files even when there is a
> failure.
> +// RUN: not clang-apply-replacements %T/Inputs/conflict
> -remove-change-desc-files > %T/Inputs/conflict/output.txt 2>&1
> +// RUN: ls -1 %T/Inputs/conflict | FileCheck %s --check-prefix=NO_YAML
> +//
> +// YAML: {{^file.\.yaml$}}
> +// NO_YAML-NOT: {{^file.\.yaml$}}
>
> Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt
> (original)
> +++ clang-tools-extra/trunk/unittests/cpp11-migrate/CMakeLists.txt Tue Sep
> 3 12:58:19 2013
> @@ -5,7 +5,7 @@ set(LLVM_LINK_COMPONENTS
> get_filename_component(CPP11_MIGRATE_SOURCE_DIR
> ${CMAKE_CURRENT_SOURCE_DIR}/../../cpp11-migrate REALPATH)
> get_filename_component(ClangReplaceLocation
> - "${CMAKE_CURRENT_SOURCE_DIR}/../../clang-replace/include" REALPATH)
> + "${CMAKE_CURRENT_SOURCE_DIR}/../../clang-apply-replacements/include"
> REALPATH)
> include_directories(
> ${CPP11_MIGRATE_SOURCE_DIR}
> ${ClangReplaceLocation}
>
> Modified: clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile
> URL:
> http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile?rev=189832&r1=189831&r2=189832&view=diff
>
> ==============================================================================
> --- clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile (original)
> +++ clang-tools-extra/trunk/unittests/cpp11-migrate/Makefile Tue Sep 3
> 12:58:19 2013
> @@ -13,7 +13,7 @@ include $(CLANG_LEVEL)/../../Makefile.co
> TESTNAME = Cpp11MigrateTests
> LINK_COMPONENTS := asmparser bitreader support MC MCParser option \
> TransformUtils
> -USEDLIBS = migrateCore.a clangFormat.a clangReplace.a clangTooling.a
> clangFrontend.a \
> +USEDLIBS = migrateCore.a clangFormat.a clangApplyReplacements.a
> clangTooling.a clangFrontend.a \
> clangSerialization.a clangDriver.a clangRewriteFrontend.a \
> clangRewriteCore.a clangParse.a clangSema.a
> clangAnalysis.a \
> clangAST.a clangASTMatchers.a clangEdit.a clangLex.a \
> @@ -21,5 +21,5 @@ USEDLIBS = migrateCore.a clangFormat.a c
>
> include $(CLANG_LEVEL)/Makefile
> MAKEFILE_UNITTEST_NO_INCLUDE_COMMON := 1
> -CPP.Flags += -I$(PROJ_SRC_DIR)/../../cpp11-migrate
> -I$(PROJ_SRC_DIR)/../../clang-replace/include
> +CPP.Flags += -I$(PROJ_SRC_DIR)/../../cpp11-migrate
> -I$(PROJ_SRC_DIR)/../../clang-apply-replacements/include
> include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130923/b26a6dca/attachment.html>
More information about the cfe-commits
mailing list