diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-12-04 07:27:05 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-12-04 07:27:05 +0000 |
commit | 37ed12720a35b7bfa1c4de73ad6f1c6c1c88ee17 (patch) | |
tree | bba1cb7716cd13f295e22172dd4ca239d62fae54 /unittests/Lex/PreprocessingRecordTest.cpp | |
parent | df1059cac42d613547d86b4e44c5e364bfc03073 (diff) |
Refactor recording the preprocessor conditional directive regions out of
PreprocessingRecord and into its own class, PPConditionalDirectiveRecord.
Decoupling allows a client to use the functionality of PPConditionalDirectiveRecord
without needing a PreprocessingRecord.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169229 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/Lex/PreprocessingRecordTest.cpp')
-rw-r--r-- | unittests/Lex/PreprocessingRecordTest.cpp | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/unittests/Lex/PreprocessingRecordTest.cpp b/unittests/Lex/PreprocessingRecordTest.cpp deleted file mode 100644 index 2bf00483c0..0000000000 --- a/unittests/Lex/PreprocessingRecordTest.cpp +++ /dev/null @@ -1,145 +0,0 @@ -//===- unittests/Lex/PreprocessingRecordTest.cpp - PreprocessingRecord tests =// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "clang/Basic/SourceManager.h" -#include "clang/Basic/FileManager.h" -#include "clang/Basic/Diagnostic.h" -#include "clang/Basic/DiagnosticOptions.h" -#include "clang/Basic/LangOptions.h" -#include "clang/Basic/TargetOptions.h" -#include "clang/Basic/TargetInfo.h" -#include "clang/Lex/ModuleLoader.h" -#include "clang/Lex/HeaderSearch.h" -#include "clang/Lex/HeaderSearchOptions.h" -#include "clang/Lex/Preprocessor.h" -#include "clang/Lex/PreprocessorOptions.h" -#include "clang/Lex/PreprocessingRecord.h" -#include "llvm/Config/config.h" - -#include "gtest/gtest.h" - -using namespace llvm; -using namespace clang; - -namespace { - -// The test fixture. -class PreprocessingRecordTest : public ::testing::Test { -protected: - PreprocessingRecordTest() - : FileMgr(FileMgrOpts), - DiagID(new DiagnosticIDs()), - Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()), - SourceMgr(Diags, FileMgr), - TargetOpts(new TargetOptions) - { - TargetOpts->Triple = "x86_64-apple-darwin11.1.0"; - Target = TargetInfo::CreateTargetInfo(Diags, &*TargetOpts); - } - - FileSystemOptions FileMgrOpts; - FileManager FileMgr; - IntrusiveRefCntPtr<DiagnosticIDs> DiagID; - DiagnosticsEngine Diags; - SourceManager SourceMgr; - LangOptions LangOpts; - IntrusiveRefCntPtr<TargetOptions> TargetOpts; - IntrusiveRefCntPtr<TargetInfo> Target; -}; - -class VoidModuleLoader : public ModuleLoader { - virtual ModuleLoadResult loadModule(SourceLocation ImportLoc, - ModuleIdPath Path, - Module::NameVisibilityKind Visibility, - bool IsInclusionDirective) { - return ModuleLoadResult(); - } -}; - -TEST_F(PreprocessingRecordTest, PPRecAPI) { - const char *source = - "0 1\n" - "#if 1\n" - "2\n" - "#ifndef BB\n" - "3 4\n" - "#else\n" - "#endif\n" - "5\n" - "#endif\n" - "6\n" - "#if 1\n" - "7\n" - "#if 1\n" - "#endif\n" - "8\n" - "#endif\n" - "9\n"; - - MemoryBuffer *buf = MemoryBuffer::getMemBuffer(source); - SourceMgr.createMainFileIDForMemBuffer(buf); - - VoidModuleLoader ModLoader; - HeaderSearch HeaderInfo(new HeaderSearchOptions, FileMgr, Diags, LangOpts, - Target.getPtr()); - Preprocessor PP(new PreprocessorOptions(), Diags, LangOpts,Target.getPtr(), - SourceMgr, HeaderInfo, ModLoader, - /*IILookup =*/ 0, - /*OwnsHeaderSearch =*/false, - /*DelayInitialization =*/ false); - PP.createPreprocessingRecord(true); - PP.EnterMainSourceFile(); - - std::vector<Token> toks; - while (1) { - Token tok; - PP.Lex(tok); - if (tok.is(tok::eof)) - break; - toks.push_back(tok); - } - - // Make sure we got the tokens that we expected. - ASSERT_EQ(10U, toks.size()); - - PreprocessingRecord &PPRec = *PP.getPreprocessingRecord(); - EXPECT_FALSE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[0].getLocation(), toks[1].getLocation()))); - EXPECT_TRUE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[0].getLocation(), toks[2].getLocation()))); - EXPECT_FALSE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[3].getLocation(), toks[4].getLocation()))); - EXPECT_TRUE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[1].getLocation(), toks[5].getLocation()))); - EXPECT_TRUE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[2].getLocation(), toks[6].getLocation()))); - EXPECT_FALSE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[2].getLocation(), toks[5].getLocation()))); - EXPECT_FALSE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[0].getLocation(), toks[6].getLocation()))); - EXPECT_TRUE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[2].getLocation(), toks[8].getLocation()))); - EXPECT_FALSE(PPRec.rangeIntersectsConditionalDirective( - SourceRange(toks[0].getLocation(), toks[9].getLocation()))); - - EXPECT_TRUE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[0].getLocation(), toks[2].getLocation())); - EXPECT_FALSE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[3].getLocation(), toks[4].getLocation())); - EXPECT_TRUE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[1].getLocation(), toks[5].getLocation())); - EXPECT_TRUE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[2].getLocation(), toks[0].getLocation())); - EXPECT_FALSE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[4].getLocation(), toks[3].getLocation())); - EXPECT_TRUE(PPRec.areInDifferentConditionalDirectiveRegion( - toks[5].getLocation(), toks[1].getLocation())); -} - -} // anonymous namespace |