diff options
author | Kevin Enderby <enderby@apple.com> | 2016-07-29 17:44:13 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2016-07-29 17:44:13 +0000 |
commit | 2a7151766d6552e877b1432edc71ffd7907ff963 (patch) | |
tree | 93398694d56b9126f64c5da5f951b5949fce9f32 /tools/llvm-ar | |
parent | 0c332fd27262703bb8a98af4d7a828cb47f5e864 (diff) |
The next step along the way to getting good error messages for bad archives.
As mentioned in commit log for r276686 this next step is adding a new
method in the ArchiveMemberHeader class to get the full name that
does proper error checking, and can be use for error messages.
To do this the name of ArchiveMemberHeader::getName() is changed to
ArchiveMemberHeader::getRawName() to be consistent with
Archive::Child::getRawName(). Then the “new” method is the addition
of a new implementation of ArchiveMemberHeader::getName() which gets
the full name and provides proper error checking. Which is mostly a rewrite
of what was Archive::Child::getName() and cleaning up incorrect uses of
llvm_unreachable() in the code which were actually just cases of errors
in the input Archives.
Then Archive::Child::getName() is changed to return Expected<> and use
the new implementation of ArchiveMemberHeader::getName() .
Also needed to change Archive::getMemoryBufferRef() with these
changes to return Expected<> as well to propagate Errors up.
As well as changing Archive::isThinMember() to return Expected<> .
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277177 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-ar')
-rw-r--r-- | tools/llvm-ar/llvm-ar.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index dc1755de7d6..f52f9c376c1 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -409,8 +409,8 @@ static void performReadOperation(ArchiveOperation Operation, { Error Err; for (auto &C : OldArchive->children(Err)) { - ErrorOr<StringRef> NameOrErr = C.getName(); - failIfError(NameOrErr.getError()); + Expected<StringRef> NameOrErr = C.getName(); + failIfError(NameOrErr.takeError()); StringRef Name = NameOrErr.get(); if (Filter) { @@ -537,8 +537,8 @@ computeNewArchiveMembers(ArchiveOperation Operation, Error Err; for (auto &Child : OldArchive->children(Err)) { int Pos = Ret.size(); - ErrorOr<StringRef> NameOrErr = Child.getName(); - failIfError(NameOrErr.getError()); + Expected<StringRef> NameOrErr = Child.getName(); + failIfError(NameOrErr.takeError()); StringRef Name = NameOrErr.get(); if (Name == PosName) { assert(AddAfter || AddBefore); |