[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