[llvm] r184186 - Don't convert object_error's enum to and from int.
Rafael Espindola
rafael.espindola at gmail.com
Tue Jun 18 06:30:32 PDT 2013
Author: rafael
Date: Tue Jun 18 08:30:31 2013
New Revision: 184186
URL: http://llvm.org/viewvc/llvm-project?rev=184186&view=rev
Log:
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.
Modified:
llvm/trunk/include/llvm/Object/Error.h
llvm/trunk/lib/Object/Error.cpp
Modified: llvm/trunk/include/llvm/Object/Error.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/Error.h?rev=184186&r1=184185&r2=184186&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/Error.h (original)
+++ llvm/trunk/include/llvm/Object/Error.h Tue Jun 18 08:30:31 2013
@@ -22,17 +22,16 @@ namespace object {
const error_category &object_category();
struct object_error {
-enum _ {
- success = 0,
- invalid_file_type,
- parse_failed,
- unexpected_eof
-};
- _ v_;
+ enum Impl {
+ success = 0,
+ invalid_file_type,
+ parse_failed,
+ unexpected_eof
+ };
+ 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
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.
Modified: llvm/trunk/lib/Object/Error.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/Error.cpp?rev=184186&r1=184185&r2=184186&view=diff
==============================================================================
--- llvm/trunk/lib/Object/Error.cpp (original)
+++ llvm/trunk/lib/Object/Error.cpp Tue Jun 18 08:30:31 2013
@@ -31,7 +31,8 @@ const char *_object_error_category::name
}
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::mess
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.");
}
+ llvm_unreachable("An enumerator of object_error does not have a message "
+ "defined.");
}
error_condition _object_error_category::default_error_condition(int ev) const {
More information about the llvm-commits
mailing list