[PATCH] D99576: [ASTImporter][NFC] Improve test coverage
Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 31 03:11:26 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG936d1e97a32d: [ASTImporter][NFC] Improve test coverage (authored by Balazs Benics <balazsbenics at sigmatechnology.se>).
Changed prior to commit:
https://reviews.llvm.org/D99576?vs=334101&id=334392#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D99576/new/
https://reviews.llvm.org/D99576
Files:
clang/unittests/AST/ASTImporterTest.cpp
Index: clang/unittests/AST/ASTImporterTest.cpp
===================================================================
--- clang/unittests/AST/ASTImporterTest.cpp
+++ clang/unittests/AST/ASTImporterTest.cpp
@@ -3064,6 +3064,72 @@
EXPECT_EQ(ToF1, ToF2);
}
+TEST_P(ASTImporterOptionSpecificTestBase, ImportBitfields) {
+ Decl *FromTU = getTuDecl("struct A { unsigned x : 3; };", Lang_CXX03);
+ auto *FromF =
+ FirstDeclMatcher<FieldDecl>().match(FromTU, fieldDecl(hasName("x")));
+
+ ASSERT_TRUE(FromF->isBitField());
+ ASSERT_EQ(3u, FromF->getBitWidthValue(FromTU->getASTContext()));
+ auto *ToField = Import(FromF, Lang_CXX03);
+ auto *ToTU = ToField->getTranslationUnitDecl();
+
+ EXPECT_TRUE(ToField->isBitField());
+ EXPECT_EQ(3u, ToField->getBitWidthValue(ToTU->getASTContext()));
+
+ const auto *FromBT = FromF->getBitWidth()->getType()->getAs<BuiltinType>();
+ const auto *ToBT = ToField->getBitWidth()->getType()->getAs<BuiltinType>();
+ ASSERT_TRUE(FromBT);
+ ASSERT_EQ(BuiltinType::Int, FromBT->getKind());
+ EXPECT_TRUE(ToBT);
+ EXPECT_EQ(BuiltinType::Int, ToBT->getKind());
+}
+
+struct ImportBlock : ASTImporterOptionSpecificTestBase {};
+const internal::VariadicDynCastAllOfMatcher<Decl, BlockDecl> blockDecl;
+TEST_P(ImportBlock, ImportBlocksAreUnsupported) {
+ const auto *Code = R"(
+ void test_block__capture_null() {
+ int *p = 0;
+ ^(){
+ *p = 1;
+ }();
+ })";
+ Decl *FromTU = getTuDecl(Code, Lang_CXX03);
+ auto *FromBlock = FirstDeclMatcher<BlockDecl>().match(FromTU, blockDecl());
+ ASSERT_TRUE(FromBlock);
+
+ auto ToBlockOrError = importOrError(FromBlock, Lang_CXX03);
+
+ const auto ExpectUnsupportedConstructError = [](const ImportError &Error) {
+ EXPECT_EQ(ImportError::UnsupportedConstruct, Error.Error);
+ };
+ llvm::handleAllErrors(ToBlockOrError.takeError(),
+ ExpectUnsupportedConstructError);
+}
+
+TEST_P(ASTImporterOptionSpecificTestBase, ImportParmVarDecl) {
+ const auto *Code = R"(
+ template <typename T> struct Wrapper {
+ Wrapper(T Value = {}) {}
+ };
+ template class Wrapper<int>;
+ )";
+ Decl *FromTU = getTuDecl(Code, Lang_CXX11);
+ auto *FromVar = FirstDeclMatcher<ParmVarDecl>().match(
+ FromTU, parmVarDecl(hasType(asString("int"))));
+ ASSERT_TRUE(FromVar);
+ ASSERT_TRUE(FromVar->hasUninstantiatedDefaultArg());
+ ASSERT_TRUE(FromVar->getUninstantiatedDefaultArg());
+
+ const auto *ToVar = Import(FromVar, Lang_CXX11);
+ EXPECT_TRUE(ToVar);
+ EXPECT_TRUE(ToVar->hasUninstantiatedDefaultArg());
+ EXPECT_TRUE(ToVar->getUninstantiatedDefaultArg());
+ EXPECT_NE(FromVar->getUninstantiatedDefaultArg(),
+ ToVar->getUninstantiatedDefaultArg());
+}
+
TEST_P(ASTImporterOptionSpecificTestBase, ImportOfNonEquivalentField) {
Decl *ToF1;
{
@@ -6272,6 +6338,11 @@
std::vector<std::string>{
"-ffixed-point"}), );
+INSTANTIATE_TEST_CASE_P(ParameterizedTests, ImportBlock,
+ ExtendWithOptions(DefaultTestArrayForRunOptions,
+ std::vector<std::string>{
+ "-fblocks"}), );
+
INSTANTIATE_TEST_CASE_P(ParameterizedTests, ImportType,
DefaultTestValuesForRunOptions, );
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D99576.334392.patch
Type: text/x-patch
Size: 3367 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210331/2f22e5ef/attachment.bin>
More information about the cfe-commits
mailing list