diff --git a/include/llvm/Object/Error.h b/include/llvm/Object/Error.h index c5c6f005e69..cd55e5dc26d 100644 --- a/include/llvm/Object/Error.h +++ b/include/llvm/Object/Error.h @@ -72,6 +72,13 @@ private: std::string Msg; }; +/// isNotObjectErrorInvalidFileType() is used when looping through the children +/// of an archive after calling getAsBinary() on the child and it returns an +/// llvm::Error. In the cases we want to loop through the children and ignore the +/// non-objects in the archive this is used to test the error to see if an +/// error() function needs to called on the llvm::Error. +Error isNotObjectErrorInvalidFileType(llvm::Error Err); + } // end namespace object. } // end namespace llvm. @@ -81,34 +88,4 @@ template <> struct is_error_code_enum : std::true_type {}; } -namespace llvm { -namespace object { - -// isNotObjectErrorInvalidFileType() is used when looping through the children -// of an archive after calling getAsBinary() on the child and it returns an -// llvm::Error. In the cases we want to loop through the children and ignore the -// non-objects in the archive this is used to test the error to see if an -// error() function needs to called on the llvm::Error. -static inline llvm::Error isNotObjectErrorInvalidFileType(llvm::Error Err) { - if (auto Err2 = - handleErrors(std::move(Err), - [](std::unique_ptr M) { - // Try to handle 'M'. If successful, return a success value from - // the handler. - if (M->convertToErrorCode() == object_error::invalid_file_type) - return Error::success(); - - // We failed to handle 'M' - return it from the handler. - // This value will be passed back from catchErrors and - // wind up in Err2, where it will be returned from this function. - return Error(std::move(M)); - })) - return Err2; - return Err; -} - -} // end namespace object. - -} // end namespace llvm. - #endif diff --git a/lib/Object/Error.cpp b/lib/Object/Error.cpp index 15bce7727dc..8eab793c27b 100644 --- a/lib/Object/Error.cpp +++ b/lib/Object/Error.cpp @@ -71,3 +71,21 @@ static ManagedStatic<_object_error_category> error_category; const std::error_category &object::object_category() { return *error_category; } + +llvm::Error llvm::object::isNotObjectErrorInvalidFileType(llvm::Error Err) { + if (auto Err2 = + handleErrors(std::move(Err), + [](std::unique_ptr M) { + // Try to handle 'M'. If successful, return a success value from + // the handler. + if (M->convertToErrorCode() == object_error::invalid_file_type) + return Error::success(); + + // We failed to handle 'M' - return it from the handler. + // This value will be passed back from catchErrors and + // wind up in Err2, where it will be returned from this function. + return Error(std::move(M)); + })) + return Err2; + return Err; +}