================ @@ -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()); ---------------- balazske wrote:
It looks not correct to copy a `SourceLocation` from the "from" into the "to" context. They have a different source manager instance. Function [ASTNodeImporter::ImportDefaultArgOfParmVarDecl](https://clang.llvm.org/doxygen/classclang_1_1ASTNodeImporter.html#af363fc3da4121fce19f9a96e9e0b64fa) is the place where this is done. Copy of `getExplicitObjectParamThisLoc` should be replaced with normal import. https://github.com/llvm/llvm-project/pull/124305 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits