[clang] [clang][ASTImporter] Import source location of explicit object parameter instead of copying it (PR #124305)
Michael Buch via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 27 02:35:14 PST 2025
================
@@ -3441,13 +3441,33 @@ TEST_P(ASTImporterOptionSpecificTestBase, ImportParmVarDecl) {
ASSERT_TRUE(FromVar);
ASSERT_TRUE(FromVar->hasUninstantiatedDefaultArg());
ASSERT_TRUE(FromVar->getUninstantiatedDefaultArg());
+ ASSERT_FALSE(FromVar->isExplicitObjectParameter());
const auto *ToVar = Import(FromVar, Lang_CXX11);
EXPECT_TRUE(ToVar);
EXPECT_TRUE(ToVar->hasUninstantiatedDefaultArg());
EXPECT_TRUE(ToVar->getUninstantiatedDefaultArg());
EXPECT_NE(FromVar->getUninstantiatedDefaultArg(),
ToVar->getUninstantiatedDefaultArg());
+ EXPECT_FALSE(ToVar->isExplicitObjectParameter());
+}
+
+TEST_P(ASTImporterOptionSpecificTestBase, ImportParmVarDecl_Explicit) {
+ const auto *Code = R"(
+ struct Wrapper {
+ void func(this Wrapper) {}
+ };
+ )";
+ Decl *FromTU = getTuDecl(Code, Lang_CXX23);
+ auto *FromVar = FirstDeclMatcher<ParmVarDecl>().match(FromTU, parmVarDecl());
+ ASSERT_TRUE(FromVar);
+ ASSERT_TRUE(FromVar->isExplicitObjectParameter());
+
+ const auto *ToVar = Import(FromVar, Lang_CXX23);
+ EXPECT_TRUE(ToVar);
+ EXPECT_TRUE(ToVar->isExplicitObjectParameter());
+ EXPECT_EQ(ToVar->getExplicitObjectParamThisLoc(),
+ FromVar->getExplicitObjectParamThisLoc());
----------------
Michael137 wrote:
Latest commit updates code to import the location.
https://github.com/llvm/llvm-project/pull/124305
More information about the cfe-commits
mailing list