diff options
author | Gabor Marton <gabor.marton@ericsson.com> | 2019-09-23 09:32:07 +0000 |
---|---|---|
committer | Gabor Marton <gabor.marton@ericsson.com> | 2019-09-23 09:32:07 +0000 |
commit | c65628a49ad3883c2c52165e7f7763431738d242 (patch) | |
tree | 7ced482546792e57786dd8e9ce6b63126f5475c8 /clang/unittests/AST/ASTImporterTest.cpp | |
parent | f7caf3cac8487c7876b8249c7c9c5d7131e013b9 (diff) | |
download | bcm5719-llvm-c65628a49ad3883c2c52165e7f7763431738d242.tar.gz bcm5719-llvm-c65628a49ad3883c2c52165e7f7763431738d242.zip |
[ASTImporter][NFC] Add comprehensive tests for ODR violation handling strategies
Summary:
In this patch we provide additional and comprehensive tests for the ODR
handling strategies. This is the continuation of
https://reviews.llvm.org/D59692.
Reviewers: shafik, a_sidorin, balazske, a.sidorin
Subscribers: mgorny, rnkovacs, dkrupp, Szelethus, gamesh411, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66951
llvm-svn: 372564
Diffstat (limited to 'clang/unittests/AST/ASTImporterTest.cpp')
-rw-r--r-- | clang/unittests/AST/ASTImporterTest.cpp | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/clang/unittests/AST/ASTImporterTest.cpp b/clang/unittests/AST/ASTImporterTest.cpp index 17696a38e94..1514313231b 100644 --- a/clang/unittests/AST/ASTImporterTest.cpp +++ b/clang/unittests/AST/ASTImporterTest.cpp @@ -5481,187 +5481,6 @@ TEST_P(ASTImporterOptionSpecificTestBase, EXPECT_EQ(ImportedX->isAggregate(), FromX->isAggregate()); } -struct ConflictingDeclsWithLiberalStrategy : ASTImporterOptionSpecificTestBase { - ConflictingDeclsWithLiberalStrategy() { - this->ODRHandling = ASTImporter::ODRHandlingType::Liberal; - } -}; - -// Check that a Decl has been successfully imported into a standalone redecl -// chain. -template <typename DeclTy, typename PatternTy> -static void CheckImportedAsNew(llvm::Expected<Decl *> &Result, Decl *ToTU, - PatternTy Pattern) { - ASSERT_TRUE(isSuccess(Result)); - Decl *ImportedD = *Result; - ASSERT_TRUE(ImportedD); - auto *ToD = FirstDeclMatcher<DeclTy>().match(ToTU, Pattern); - EXPECT_NE(ImportedD, ToD); - EXPECT_FALSE(ImportedD->getPreviousDecl()); - EXPECT_EQ(DeclCounter<DeclTy>().match(ToTU, Pattern), 2u); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, Typedef) { - Decl *ToTU = getToTuDecl( - R"( - typedef int X; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - typedef double X; - )", - Lang_CXX11); - auto Pattern = typedefNameDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<TypedefNameDecl>().match(FromTU, Pattern); - - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<TypedefNameDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, TypeAlias) { - Decl *ToTU = getToTuDecl( - R"( - using X = int; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - using X = double; - )", - Lang_CXX11); - auto Pattern = typedefNameDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<TypedefNameDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<TypedefNameDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, EnumDecl) { - Decl *ToTU = getToTuDecl( - R"( - enum X { a, b }; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - enum X { a, b, c }; - )", - Lang_CXX11); - auto Pattern = enumDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<EnumDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<EnumDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, EnumConstantDecl) { - Decl *ToTU = getToTuDecl( - R"( - enum E { X = 0 }; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - enum E { X = 1 }; - )", - Lang_CXX11); - auto Pattern = enumConstantDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<EnumConstantDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<EnumConstantDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, RecordDecl) { - Decl *ToTU = getToTuDecl( - R"( - class X { int a; }; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - class X { int b; }; - )", - Lang_CXX11); - auto Pattern = cxxRecordDecl(hasName("X"), unless(isImplicit())); - auto *FromX = FirstDeclMatcher<RecordDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<RecordDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, VarDecl) { - Decl *ToTU = getToTuDecl( - R"( - int X; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - double X; - )", - Lang_CXX11); - auto Pattern = varDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<VarDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<VarDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, FunctionDecl) { - Decl *ToTU = getToTuDecl( - R"( - void X(int); - )", - Lang_C); // C, no overloading! - Decl *FromTU = getTuDecl( - R"( - void X(double); - )", - Lang_C); - auto Pattern = functionDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<FunctionDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<FunctionDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, ClassTemplateDecl) { - Decl *ToTU = getToTuDecl( - R"( - template <class> - struct X; - )", - Lang_CXX11); - Decl *FromTU = getTuDecl( - R"( - template <int> - struct X; - )", - Lang_CXX11); - auto Pattern = classTemplateDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<ClassTemplateDecl>().match(FromTU, Pattern); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<ClassTemplateDecl>(Result, ToTU, Pattern); -} - -TEST_P(ConflictingDeclsWithLiberalStrategy, DISABLED_VarTemplateDecl) { - const internal::VariadicDynCastAllOfMatcher<Decl, VarTemplateDecl> - varTemplateDecl; - Decl *ToTU = getToTuDecl( - R"( - template <class T> - constexpr T X; - )", - Lang_CXX14); - Decl *FromTU = getTuDecl( - R"( - template <int> - constexpr int X = 0; - )", - Lang_CXX14); - auto Pattern = varTemplateDecl(hasName("X")); - auto *FromX = FirstDeclMatcher<VarTemplateDecl>().match( - FromTU, varTemplateDecl(hasName("X"))); - Expected<Decl *> Result = importOrError(FromX, Lang_CXX11); - CheckImportedAsNew<VarTemplateDecl>(Result, ToTU, Pattern); -} - INSTANTIATE_TEST_CASE_P(ParameterizedTests, SVEBuiltins, ::testing::Values(ArgVector{"-target", "aarch64-linux-gnu"}), ); @@ -5838,8 +5657,5 @@ INSTANTIATE_TEST_CASE_P(ParameterizedTests, ImportVariables, INSTANTIATE_TEST_CASE_P(ParameterizedTests, LLDBLookupTest, DefaultTestValuesForRunOptions, ); -INSTANTIATE_TEST_CASE_P(ParameterizedTests, ConflictingDeclsWithLiberalStrategy, - DefaultTestValuesForRunOptions, ); - } // end namespace ast_matchers } // end namespace clang |