Don't convert object_error's enum to and from int.

This allows the compiler to see the enum and warn about it. While in here,
fix a switch to not use a default and fix style violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184186 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2013-06-18 13:30:31 +00:00
parent beb920fce6
commit 79ac9c8402
2 changed files with 15 additions and 15 deletions

View File

@ -22,17 +22,16 @@ namespace object {
const error_category &object_category();
struct object_error {
enum _ {
enum Impl {
success = 0,
invalid_file_type,
parse_failed,
unexpected_eof
};
_ v_;
};
Impl V;
object_error(_ v) : v_(v) {}
explicit object_error(int v) : v_(_(v)) {}
operator int() const {return v_;}
object_error(Impl V) : V(V) {}
operator Impl() const { return V; }
};
inline error_code make_error_code(object_error e) {
@ -43,7 +42,8 @@ inline error_code make_error_code(object_error e) {
template <> struct is_error_code_enum<object::object_error> : true_type { };
template <> struct is_error_code_enum<object::object_error::_> : true_type { };
template <> struct is_error_code_enum<object::object_error::Impl> : true_type {
};
} // end namespace llvm.

View File

@ -31,7 +31,8 @@ const char *_object_error_category::name() const {
}
std::string _object_error_category::message(int ev) const {
switch (ev) {
object_error::Impl E = static_cast<object_error::Impl>(ev);
switch (E) {
case object_error::success: return "Success";
case object_error::invalid_file_type:
return "The file was not recognized as a valid object file";
@ -39,10 +40,9 @@ std::string _object_error_category::message(int ev) const {
return "Invalid data was encountered while parsing the file";
case object_error::unexpected_eof:
return "The end of the file was unexpectedly encountered";
default:
}
llvm_unreachable("An enumerator of object_error does not have a message "
"defined.");
}
}
error_condition _object_error_category::default_error_condition(int ev) const {