summaryrefslogtreecommitdiffstats
path: root/clang/unittests/AST/ASTImporterTest.cpp
diff options
context:
space:
mode:
authorGabor Marton <gabor.marton@ericsson.com>2019-09-23 09:32:07 +0000
committerGabor Marton <gabor.marton@ericsson.com>2019-09-23 09:32:07 +0000
commitc65628a49ad3883c2c52165e7f7763431738d242 (patch)
tree7ced482546792e57786dd8e9ce6b63126f5475c8 /clang/unittests/AST/ASTImporterTest.cpp
parentf7caf3cac8487c7876b8249c7c9c5d7131e013b9 (diff)
downloadbcm5719-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.cpp184
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
OpenPOWER on IntegriCloud