[clang] [APINotes] Refactor APINotesReader to propagate llvm::Error (PR #183812)
Maria Fernanda GuimarĂ£es via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 2 04:54:17 PST 2026
================
@@ -98,8 +98,11 @@ APINotesManager::loadAPINotes(FileEntryRef APINotesFile) {
// Load the binary form we just compiled.
auto Reader = APINotesReader::Create(std::move(CompiledBuffer), SwiftVersion);
- assert(Reader && "Could not load the API notes we just generated?");
- return Reader;
+ if (!Reader) {
+ llvm::consumeError(Reader.takeError());
+ return nullptr;
+ }
+ return std::move(Reader.get());
----------------
mafeguimaraes wrote:
Hi @Xazax-hun,
I actually tried removing it, but it turns out the `std::move` is required here.
Since `Reader` is an `llvm::Expected<std::unique_ptr<APINotesReader>>`, `Reader.get()` returns a reference to the underlying `unique_ptr`. Because we are returning it by value from the function and `unique_ptr` cannot be copied, we have to explicitly use `std::move()` to transfer ownership out of the `Expected` wrapper.
I've kept the `std::move` in `APINotesManager.cpp`, but I removed the redundant ones in `APINotesReader.cpp` as well as the stray semicolon you pointed out.
Pushed the updates! Thanks for the review!
https://github.com/llvm/llvm-project/pull/183812
More information about the cfe-commits
mailing list