[clang] [clang][ASTImporter] Fix import of variable template redeclarations. (PR #72841)
Balázs Kéri via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 5 07:10:27 PST 2023
================
@@ -5050,6 +5050,59 @@ TEST_P(ImportFriendClasses, RecordVarTemplateDecl) {
EXPECT_EQ(ToTUX, ToX);
}
+TEST_P(ASTImporterOptionSpecificTestBase, VarTemplateDeclConflict) {
+ getToTuDecl(
+ R"(
+ template <class U>
+ constexpr int X = 1;
+ )",
+ Lang_CXX14);
+
+ Decl *FromTU = getTuDecl(
+ R"(
+ template <class U>
+ constexpr int X = 2;
+ )",
+ Lang_CXX14, "input1.cc");
+ auto *FromX = FirstDeclMatcher<VarTemplateDecl>().match(
+ FromTU, varTemplateDecl(hasName("X")));
+ auto *ToX = Import(FromX, Lang_CXX11);
+ // FIXME: This import should fail.
+ EXPECT_TRUE(ToX);
+}
+
+TEST_P(ASTImporterOptionSpecificTestBase, VarTemplateStaticDefinition) {
+ Decl *ToTU = getToTuDecl(
+ R"(
+ struct A {
+ template <class U, class V>
+ static int X;
+ };
+ )",
+ Lang_CXX14);
+ auto *ToX = FirstDeclMatcher<VarTemplateDecl>().match(
+ ToTU, varTemplateDecl(hasName("X")));
+ ASSERT_FALSE(ToX->isThisDeclarationADefinition());
+
+ Decl *FromTU = getTuDecl(
+ R"(
+ struct A {
+ template <class U>
----------------
balazske wrote:
Yes, this code was incorrect. It is still a bug that the test did not fail, my next planned fixes should improve this situation.
https://github.com/llvm/llvm-project/pull/72841
More information about the cfe-commits
mailing list