[cfe-commits] r157260 - in /cfe/trunk: include/clang/Rewrite/Rewriter.h lib/Rewrite/Rewriter.cpp unittests/CMakeLists.txt unittests/Tooling/RewriterTest.cpp unittests/Tooling/RewriterTestContext.h
Manuel Klimek
klimek at google.com
Mon May 28 23:50:41 PDT 2012
On Sun, May 27, 2012 at 4:01 PM, NAKAMURA Takumi <geek4civic at gmail.com>wrote:
> 2012/5/23 Manuel Klimek <klimek at google.com>:
> > Author: klimek
> > Date: Tue May 22 12:01:35 2012
> > New Revision: 157260
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=157260&view=rev
> > Log:
> > Adds a method overwriteChangedFiles to the Rewriter. This is implemented
> by
> > first writing the changed files to a temporary location and then
> overwriting
> > the original files atomically.
> >
> > Also adds a RewriterTestContext to aid unit testing rewrting logic in
> general.
> >
> >
> > Added:
> > cfe/trunk/unittests/Tooling/RewriterTest.cpp (with props)
> > cfe/trunk/unittests/Tooling/RewriterTestContext.h (with props)
> > Modified:
> > cfe/trunk/include/clang/Rewrite/Rewriter.h
> > cfe/trunk/lib/Rewrite/Rewriter.cpp
> > cfe/trunk/unittests/CMakeLists.txt
>
>
> > Added: cfe/trunk/unittests/Tooling/RewriterTestContext.h
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Tooling/RewriterTestContext.h?rev=157260&view=auto
> >
> ==============================================================================
> > --- cfe/trunk/unittests/Tooling/RewriterTestContext.h (added)
> > +++ cfe/trunk/unittests/Tooling/RewriterTestContext.h Tue May 22
> 12:01:35 2012
> > @@ -0,0 +1,120 @@
> > +//===--- RewriterTestContext.h ----------------------------------*- C++
> -*-===//
> > +//
> > +// The LLVM Compiler Infrastructure
> > +//
> > +// This file is distributed under the University of Illinois Open Source
> > +// License. See LICENSE.TXT for details.
> > +//
> >
> +//===----------------------------------------------------------------------===//
> > +//
> > +// This file defines a utility class for Rewriter related tests.
> > +//
> >
> +//===----------------------------------------------------------------------===//
> > +
> > +#ifndef LLVM_CLANG_REWRITER_TEST_CONTEXT_H
> > +#define LLVM_CLANG_REWRITER_TEST_CONTEXT_H
> > +
> > +#include "clang/Basic/Diagnostic.h"
> > +#include "clang/Basic/FileManager.h"
> > +#include "clang/Basic/LangOptions.h"
> > +#include "clang/Basic/SourceManager.h"
> > +#include "clang/Frontend/DiagnosticOptions.h"
> > +#include "clang/Frontend/TextDiagnosticPrinter.h"
> > +#include "clang/Rewrite/Rewriter.h"
> > +#include "llvm/Support/Path.h"
> > +#include "llvm/Support/raw_ostream.h"
> > +
> > +namespace clang {
> > +
> > +/// \brief A class that sets up a ready to use Rewriter.
> > +///
> > +/// Useful in unit tests that need a Rewriter. Creates all dependencies
> > +/// of a Rewriter with default values for testing and provides
> convenience
> > +/// methods, which help with writing tests that change files.
> > +class RewriterTestContext {
> > + public:
> > + RewriterTestContext()
> > + : Diagnostics(llvm::IntrusiveRefCntPtr<DiagnosticIDs>()),
> > + DiagnosticPrinter(llvm::outs(), DiagnosticOptions()),
> > + Files((FileSystemOptions())),
> > + Sources(Diagnostics, Files),
> > + Rewrite(Sources, Options) {
> > + Diagnostics.setClient(&DiagnosticPrinter, false);
> > + }
> > +
> > + ~RewriterTestContext() {
> > + if (TemporaryDirectory.isValid()) {
> > + std::string ErrorInfo;
> > + TemporaryDirectory.eraseFromDisk(true, &ErrorInfo);
> > + assert(ErrorInfo.empty());
> > + }
> > + }
>
> Don't try to remove the TemporaryDirectory given by PathV1. Fixed in
> r157530.
> See also r157529.
>
The Windows and Unix implementation of GetTemporaryDirectory seem to
disagree on the contract here.
>From what I can see the Unix implementation neither reuses the path, nor
deletes it on exit (both need to be done).
Why does the Windows implementation re-use the temporary directory?
Cheers,
/Manuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120529/59be8bd0/attachment.html>
More information about the cfe-commits
mailing list