diff options
author | Edwin Vane <edwin.vane@intel.com> | 2013-08-30 19:28:59 +0000 |
---|---|---|
committer | Edwin Vane <edwin.vane@intel.com> | 2013-08-30 19:28:59 +0000 |
commit | 0acd502afe118a82f480d184271fe60e5551746f (patch) | |
tree | 100dd06543c384a68e3ced4031e07340d4928cfa /clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp | |
parent | e600025528eaa1c43e5084bab219f8f467b4731e (diff) | |
download | bcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.tar.gz bcm5719-llvm-0acd502afe118a82f480d184271fe60e5551746f.zip |
cpp11-migrate: Refactor for driver model of operation
Massive simplification of how replacements and file overrides are handled by
the migrator:
* Sources and headers are all treated the same.
* All replacements for a given translation unit are stored in the same
TranslationUnitReplacements structure.
* Change tracking is updated only from main file; no need for
propagating "is tracking" flag around.
* Transform base class no longer responsible for applying replacements.
They are simply stored and main() looks after deduplication and
application.
* Renamed -yaml-only to -serialize-replacements. Same restrictions apply:
Can only request one transform. New restriction: formatting cannot also
be turned on since it's basically a transform.
* If -serialize-replacements is requested, changes to files will not be
applied on disk.
* Changed behaviour of function generating names for serialized
replacements: Only the main source file goes into the name of the file
since a file may contain changes for multiple different files.
* Updated HeaderReplacements LIT test for new serialization behaviour.
* Replaced old test that ensures replacements are not serialized if
-serialize-replacements is not provided. New version ensures changes
are made directly to all files in the translation unit.
* Updated unit tests.
* Due to major simplification of structures in FileOverrides.h, the
FileOverridesTest is quite a bit simpler now.
Differential Revision: http://llvm-reviews.chandlerc.com/D1545
llvm-svn: 189689
Diffstat (limited to 'clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp index fcde6b81db4..b4b9a365478 100644 --- a/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp +++ b/clang-tools-extra/unittests/cpp11-migrate/ReformattingTest.cpp @@ -9,6 +9,7 @@ #include "Core/Reformatting.h" #include "Core/FileOverrides.h" +#include "Core/Refactoring.h" #include "gtest/gtest.h" #include "VirtualFileHelper.h" @@ -19,9 +20,9 @@ namespace { // convenience function to create a ChangedRanges containing one Range ChangedRanges makeChangedRanges(unsigned Offset, unsigned Length) { ChangedRanges Changes; - Replacements Replaces; + ReplacementsVec Replaces; - Replaces.insert(Replacement("", Offset, 0, std::string(Length, '~'))); + Replaces.push_back(Replacement("", Offset, 0, std::string(Length, '~'))); Changes.adjustChangedRanges(Replaces); return Changes; } @@ -35,16 +36,20 @@ TEST(Reformatter, SingleReformat) { Reformatter ChangesReformatter(format::getLLVMStyle()); ChangedRanges Changes = makeChangedRanges(0, 6); - tooling::Replacements Replaces = ChangesReformatter.reformatSingleFile( - FileName, Changes, VFHelper.getNewSourceManager()); - - SourceOverrides Overrides(FileName, /*TrackChanges=*/false); - Overrides.applyReplacements(Replaces, VFHelper.getNewSourceManager()); - - std::string Expected, Result; - - Expected = "int a;\n" - "int b;\n"; - Result = Overrides.getMainFileContent(); - EXPECT_EQ(Expected, Result); + tooling::ReplacementsVec Replaces; + ChangesReformatter.reformatSingleFile( + FileName, Changes, VFHelper.getNewSourceManager(), Replaces); + + // We expect the code above to reformatted like so: + // + // int a; + // int b; + // + // This test is slightly fragile since there's more than one Replacement that + // results in the above change. However, testing the result of applying the + // replacement is more trouble than it's worth in this context. + ASSERT_EQ(1u, Replaces.size()); + EXPECT_EQ(3u, Replaces[0].getOffset()); + EXPECT_EQ(2u, Replaces[0].getLength()); + EXPECT_EQ(" ", Replaces[0].getReplacementText()); } |