Fix for importing functions where the TypeSourceInfo is set and the
exception specification information contains reference to the function
declaration itself.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
clang/unittests/AST/ASTImporterTest.cpp | ||
---|---|---|
6180 | 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. |
clang/unittests/AST/ASTImporterTest.cpp | ||
---|---|---|
6180 | 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. |
clang/unittests/AST/ASTImporterTest.cpp | ||
---|---|---|
6180 | Yeah, that is what I meant, a test that did not require the setTypeSourceInfo hand crafting. |
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.
clang/unittests/AST/ASTImporterTest.cpp | ||
---|---|---|
6180 | 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. |
clang/unittests/AST/ASTImporterTest.cpp | ||
---|---|---|
6189 | Here the goal is only to get a copy constructor, not to test if all constructors are imported. To get the constructor count relatively much additional code is needed (there is no function for it). |
Perhaps, put here a FIXME to replace this with a real-world scenario.