1 //===----- lib/Support/Error.cpp - Error and associated utilities ---------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 #include "llvm/Support/Error.h" 11 #include "llvm/Support/ErrorHandling.h" 12 #include "llvm/Support/ManagedStatic.h" 13 14 using namespace llvm; 15 16 namespace { 17 18 enum class ErrorErrorCode { 19 MultipleErrors 20 }; 21 22 class ErrorErrorCategory : public std::error_category { 23 public: 24 const char *name() const LLVM_NOEXCEPT override { return "Error"; } 25 26 std::string message(int condition) const override { 27 switch (static_cast<ErrorErrorCode>(condition)) { 28 case ErrorErrorCode::MultipleErrors: 29 return "Multiple errors"; 30 }; 31 llvm_unreachable("Unhandled error code"); 32 } 33 }; 34 35 } 36 37 void ErrorInfoBase::anchor() {} 38 char ErrorInfoBase::ID = 0; 39 char ErrorList::ID = 0; 40 char ECError::ID = 0; 41 42 static ManagedStatic<ErrorErrorCategory> ErrorErrorCat; 43 44 std::error_code ErrorList::convertToErrorCode() const { 45 return std::error_code(static_cast<int>(ErrorErrorCode::MultipleErrors), 46 *ErrorErrorCat); 47 } 48