1 #include "llvm/DebugInfo/PDB/DIA/DIAError.h"
2 #include "llvm/Support/ErrorHandling.h"
3 
4 using namespace llvm;
5 using namespace llvm::pdb;
6 
7 // FIXME: This class is only here to support the transition to llvm::Error. It
8 // will be removed once this transition is complete. Clients should prefer to
9 // deal with the Error value directly, rather than converting to error_code.
10 class DIAErrorCategory : public std::error_category {
11 public:
12   const char *name() const noexcept override { return "llvm.pdb.dia"; }
13   std::string message(int Condition) const override {
14     switch (static_cast<dia_error_code>(Condition)) {
15     case dia_error_code::could_not_create_impl:
16       return "Failed to connect to DIA at runtime. Verify that Visual Studio "
17              "is properly installed, or that msdiaXX.dll is in your PATH.";
18     case dia_error_code::invalid_file_format:
19       return "Unable to load PDB. The file has an unrecognized format.";
20     case dia_error_code::invalid_parameter:
21       return "The parameter is incorrect.";
22     case dia_error_code::already_loaded:
23       return "Unable to load the PDB or EXE, because it is already loaded.";
24     case dia_error_code::debug_info_mismatch:
25       return "The PDB file and the EXE file do not match.";
26     case dia_error_code::unspecified:
27       return "An unknown error has occurred.";
28     }
29     llvm_unreachable("Unrecognized DIAErrorCode");
30   }
31 };
32 
33 const std::error_category &llvm::pdb::DIAErrCategory() {
34   static DIAErrorCategory DIACategory;
35   return DIACategory;
36 }
37 
38 char DIAError::ID;
39