martong accepted this revision.
martong added a comment.
This revision is now accepted and ready to land.

Thanks! The fix makes sense and looks good to me. Though, it would be nice if 
you could provide a test without the hand crafting of the setTypeSourceInfo, 
but I think that could be done in a follow-up patch.



================
Comment at: clang/unittests/AST/ASTImporterTest.cpp:6180
+  ASSERT_FALSE(FromCtor->getTypeSourceInfo());
+  // Set a TypeSourceInfo for the function, this state may occur in reality.
+  TypeSourceInfo *FromTSI = FromTU->getASTContext().getTrivialTypeSourceInfo(
----------------
shafik wrote:
> balazske wrote:
> > shafik wrote:
> > > steakhal wrote:
> > > > Perhaps, put here a `FIXME` to replace this with a real-world scenario.
> > > I think it is useful to have cases that we run into in practice as a 
> > > regression test but it would be nice to see a more general test as well.
> > What means a "more general test"? Code where the `setTypeSourceInfo` is not 
> > needed? I just could not find out why there is no TypeSourceInfo set. The 
> > involved code part looks like this (comes from Bitcoin):
> > ```
> > void 
> > RegisterSharedValidationInterface(std::shared_ptr<CValidationInterface> 
> > pwalletIn) {
> >     // Each connection captures pwalletIn to ensure that each callback is
> >     // executed before pwalletIn is destroyed. For more details see #18338.
> >     g_signals.m_internals->Register(std::move(pwalletIn));
> > }
> > 
> > void RegisterValidationInterface(CValidationInterface* callbacks)
> > {
> >     // Create a shared_ptr with a no-op deleter - CValidationInterface 
> > lifecycle
> >     // is managed by the caller.
> >     RegisterSharedValidationInterface({callbacks, 
> > [](CValidationInterface*){}});
> >     //                                            ^ This is the lambda to 
> > be imported.
> > }
> > ```
> > If the same code is used in the test and a simple `CValidationInterface` 
> > and `std::shared_ptr` with appropriate constructor is added there is still 
> > no `TypeSourceInfo` in the needed place.
> Yeah, that is what I meant, a test that did not require the 
> `setTypeSourceInfo` hand crafting.
On one hand, I think this is a through and precisely written test case and we 
had similar test cases before. On the other hand, I agree it is unfortunate 
that we have to change the AST in the test setup.
@balazske Perhaps creduce-ing the to be imported TU with the bitcoin case could 
provide a reduced case that does not require the hand crafting of the 
`setTypeSourceInfo` ?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D112013/new/

https://reviews.llvm.org/D112013

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to