Cleaning up throw specifiers on Exception and subclasses. (#1475)
authorTim King <taking@cs.nyu.edu>
Wed, 10 Jan 2018 06:05:02 +0000 (22:05 -0800)
committerAndres Noetzli <andres.noetzli@gmail.com>
Wed, 10 Jan 2018 06:05:02 +0000 (22:05 -0800)
17 files changed:
src/base/exception.h
src/base/exception.i
src/expr/datatype.h
src/expr/expr_template.cpp
src/expr/expr_template.h
src/expr/node.cpp
src/expr/node.h
src/options/option_exception.h
src/parser/parser_exception.h
src/smt/logic_exception.h
src/theory/arith/delta_rational.cpp
src/theory/arith/delta_rational.h
src/theory/arith/theory_arith_private.cpp
src/theory/arith/theory_arith_private.h
src/theory/type_enumerator.h
src/util/rational_cln_imp.cpp
src/util/rational_gmp_imp.h

index 01a054b196d46b64f0dd7dc7c38c1374e5edd87f..04b155571c7736f8c67611702cc9b27c2b371529 100644 (file)
 namespace CVC4 {
 
 class CVC4_PUBLIC Exception : public std::exception {
-protected:
+ protected:
   std::string d_msg;
 
-public:
+ public:
   // Constructors
-  Exception() throw() : d_msg("Unknown exception") {}
-  Exception(const std::string& msg) throw() : d_msg(msg) {}
-  Exception(const char* msg) throw() : d_msg(msg) {}
+  Exception() : d_msg("Unknown exception") {}
+  Exception(const std::string& msg) : d_msg(msg) {}
+  Exception(const char* msg) : d_msg(msg) {}
 
   // Destructor
-  virtual ~Exception() throw() {}
+  virtual ~Exception() {}
 
   // NON-VIRTUAL METHOD for setting and printing the error message
-  void setMessage(const std::string& msg) throw() { d_msg = msg; }
-  std::string getMessage() const throw() { return d_msg; }
+  void setMessage(const std::string& msg) { d_msg = msg; }
+  std::string getMessage() const { return d_msg; }
 
   // overridden from base class std::exception
-  virtual const char* what() const throw() { return d_msg.c_str(); }
+  const char* what() const noexcept override { return d_msg.c_str(); }
 
   /**
    * Get this exception as a string.  Note that
@@ -63,7 +63,8 @@ public:
    * toString(), there is no stream, so the parameters are default
    * and you'll get exprs and types printed using the AST language.
    */
-  std::string toString() const throw() {
+  std::string toString() const
+  {
     std::stringstream ss;
     toStream(ss);
     return ss.str();
@@ -74,7 +75,7 @@ public:
    * a derived class, it's recommended that this method print the
    * type of exception before the actual message.
    */
-  virtual void toStream(std::ostream& os) const throw() { os << d_msg; }
+  virtual void toStream(std::ostream& os) const { os << d_msg; }
 
 };/* class Exception */
 
@@ -116,8 +117,10 @@ public:
   static std::string formatVariadic(const char* format, ...);
 };/* class IllegalArgumentException */
 
-inline std::ostream& operator<<(std::ostream& os, const Exception& e) throw() CVC4_PUBLIC;
-inline std::ostream& operator<<(std::ostream& os, const Exception& e) throw() {
+inline std::ostream& operator<<(std::ostream& os,
+                                const Exception& e) CVC4_PUBLIC;
+inline std::ostream& operator<<(std::ostream& os, const Exception& e)
+{
   e.toStream(os);
   return os;
 }
index 083670567832fef290f8cfa48e4ae00c89c4163e..429d13a63d551aa62da98235537aa4ec962cb397 100644 (file)
@@ -2,8 +2,8 @@
 #include "base/exception.h"
 %}
 
-%ignore CVC4::operator<<(std::ostream&, const Exception&) throw();
-%ignore CVC4::Exception::Exception(const char*) throw();
+%ignore CVC4::operator<<(std::ostream&, const Exception&);
+%ignore CVC4::Exception::Exception(const char*);
 %typemap(javabase) CVC4::Exception "java.lang.RuntimeException";
 
 %rename(CVC4IllegalArgumentException) CVC4::IllegalArgumentException;
index 9e3ad07f8ea6f10acae2b51935ab9a68661ad828..fffabac7787dc934ff914e4f13c2a3d5387efe2b 100644 (file)
@@ -88,7 +88,7 @@ public:
  * An exception that is thrown when a datatype resolution fails.
  */
 class CVC4_PUBLIC DatatypeResolutionException : public Exception {
-public:
+ public:
   inline DatatypeResolutionException(std::string msg);
 };/* class DatatypeResolutionException */
 
index 6dbc2256c07eb486f280bc312ab41767500fc074..0ed3601fc4d618373db7bceee5061220bc4c4949 100644 (file)
@@ -54,31 +54,33 @@ std::ostream& operator<<(std::ostream& out, const Expr& e) {
   }
 }
 
-TypeCheckingException::TypeCheckingException(const TypeCheckingException& t) throw() :
-  Exception(t.d_msg), d_expr(new Expr(t.getExpression())) {
+TypeCheckingException::TypeCheckingException(const TypeCheckingException& t)
+    : Exception(t.d_msg), d_expr(new Expr(t.getExpression()))
+{
 }
 
-TypeCheckingException::TypeCheckingException(const Expr& expr, std::string message) throw() :
-  Exception(message), d_expr(new Expr(expr)) {
+TypeCheckingException::TypeCheckingException(const Expr& expr,
+                                             std::string message)
+    : Exception(message), d_expr(new Expr(expr))
+{
 }
 
-TypeCheckingException::TypeCheckingException(ExprManager* em,
-                                             const TypeCheckingExceptionPrivate* exc) throw() :
-  Exception(exc->getMessage()), d_expr(new Expr(em, new Node(exc->getNode()))) {
+TypeCheckingException::TypeCheckingException(
+    ExprManager* em, const TypeCheckingExceptionPrivate* exc)
+    : Exception(exc->getMessage()),
+      d_expr(new Expr(em, new Node(exc->getNode())))
+{
 }
 
-TypeCheckingException::~TypeCheckingException() throw() {
-  delete d_expr;
-}
+TypeCheckingException::~TypeCheckingException() { delete d_expr; }
 
-void TypeCheckingException::toStream(std::ostream& os) const throw() {
+void TypeCheckingException::toStream(std::ostream& os) const
+{
   os << "Error during type checking: " << d_msg << endl
      << "The ill-typed expression: " << *d_expr;
 }
 
-Expr TypeCheckingException::getExpression() const throw() {
-  return *d_expr;
-}
+Expr TypeCheckingException::getExpression() const { return *d_expr; }
 
 Expr::Expr() :
   d_node(new Node),
index ead50c1abf695fb9e43978ac223e030d30024968..9656781a89339198c66326503dfe64e8a265dbe9 100644 (file)
@@ -83,44 +83,40 @@ namespace expr {
  * Exception thrown in the case of type-checking errors.
  */
 class CVC4_PUBLIC TypeCheckingException : public Exception {
-
+ private:
   friend class SmtEngine;
   friend class smt::SmtEnginePrivate;
 
-private:
-
   /** The expression responsible for the error */
   Expr* d_expr;
 
-protected:
-
-  TypeCheckingException() throw() : Exception() {}
+ protected:
+  TypeCheckingException() : Exception() {}
   TypeCheckingException(ExprManager* em,
-                        const TypeCheckingExceptionPrivate* exc) throw();
+                        const TypeCheckingExceptionPrivate* exc);
 
-public:
-
-  TypeCheckingException(const Expr& expr, std::string message) throw();
+ public:
+  TypeCheckingException(const Expr& expr, std::string message);
 
   /** Copy constructor */
-  TypeCheckingException(const TypeCheckingException& t) throw();
+  TypeCheckingException(const TypeCheckingException& t);
 
   /** Destructor */
-  ~TypeCheckingException() throw();
+  ~TypeCheckingException() override;
 
   /**
    * Get the Expr that caused the type-checking to fail.
    *
    * @return the expr
    */
-  Expr getExpression() const throw();
+  Expr getExpression() const;
 
   /**
    * Returns the message corresponding to the type-checking failure.
    * We prefer toStream() to toString() because that keeps the expr-depth
    * and expr-language settings present in the stream.
    */
-  void toStream(std::ostream& out) const throw();
+  void toStream(std::ostream& out) const override;
 
   friend class ExprManager;
 };/* class TypeCheckingException */
@@ -129,13 +125,9 @@ public:
  * Exception thrown in case of failure to export
  */
 class CVC4_PUBLIC ExportUnsupportedException : public Exception {
-public:
-  ExportUnsupportedException() throw():
-    Exception("export unsupported") {
-  }
-  ExportUnsupportedException(const char* msg) throw():
-    Exception(msg) {
-  }
+ public:
+  ExportUnsupportedException() : Exception("export unsupported") {}
+  ExportUnsupportedException(const char* msg) : Exception(msg) {}
 };/* class DatatypeExportUnsupportedException */
 
 std::ostream& operator<<(std::ostream& out,
index 126feadd83f899e3d4b3232c42a0b149790cf81b..110925f416226e880085a7006b598bc295241b03 100644 (file)
@@ -27,9 +27,9 @@ using namespace std;
 namespace CVC4 {
 
 TypeCheckingExceptionPrivate::TypeCheckingExceptionPrivate(TNode node,
-                                                           std::string message) throw() :
-  Exception(message),
-  d_node(new Node(node)) {
+                                                           std::string message)
+    : Exception(message), d_node(new Node(node))
+{
 #ifdef CVC4_DEBUG
   LastExceptionBuffer* current = LastExceptionBuffer::getCurrent();
   if(current != NULL){
@@ -38,21 +38,25 @@ TypeCheckingExceptionPrivate::TypeCheckingExceptionPrivate(TNode node,
 #endif /* CVC4_DEBUG */
 }
 
-TypeCheckingExceptionPrivate::~TypeCheckingExceptionPrivate() throw () {
-  delete d_node;
-}
+TypeCheckingExceptionPrivate::~TypeCheckingExceptionPrivate() { delete d_node; }
 
-void TypeCheckingExceptionPrivate::toStream(std::ostream& os) const throw() {
+void TypeCheckingExceptionPrivate::toStream(std::ostream& os) const
+{
   os << "Error during type checking: " << d_msg << std::endl << *d_node << endl << "The ill-typed expression: " << *d_node;
 }
 
-NodeTemplate<true> TypeCheckingExceptionPrivate::getNode() const throw() {
+NodeTemplate<true> TypeCheckingExceptionPrivate::getNode() const
+{
   return *d_node;
 }
 
-UnknownTypeException::UnknownTypeException(TNode n) throw() :
-  TypeCheckingExceptionPrivate(n, "this expression contains an element of unknown type (such as an abstract value);"
-                               " its type cannot be computed until it is substituted away") {
+UnknownTypeException::UnknownTypeException(TNode n)
+    : TypeCheckingExceptionPrivate(
+          n,
+          "this expression contains an element of unknown type (such as an "
+          "abstract value);"
+          " its type cannot be computed until it is substituted away")
+{
 }
 
 /** Is this node constant? (and has that been computed yet?) */
index 66f8b0a4742db6c07486cf1ac918fc957a7bc798..fd3d20afa60a071598dd4b859cefc4f8d32a32a2 100644 (file)
@@ -66,44 +66,39 @@ class NodeTemplate;
  * thrown by node.getType().
  */
 class TypeCheckingExceptionPrivate : public Exception {
-
-private:
-
+ private:
   /** The node responsible for the failure */
   NodeTemplate<true>* d_node;
 
-public:
-
+ public:
   /**
    * Construct the exception with the problematic node and the message
    * @param node the problematic node
    * @param message the message explaining the failure
    */
-  TypeCheckingExceptionPrivate(NodeTemplate<false> node, std::string message) throw();
+  TypeCheckingExceptionPrivate(NodeTemplate<false> node, std::string message);
 
   /** Destructor */
-  ~TypeCheckingExceptionPrivate() throw ();
+  ~TypeCheckingExceptionPrivate() override;
 
   /**
    * Get the Node that caused the type-checking to fail.
    * @return the node
    */
-  NodeTemplate<true> getNode() const throw();
+  NodeTemplate<true> getNode() const;
 
   /**
    * Returns the message corresponding to the type-checking failure.
    * We prefer toStream() to toString() because that keeps the expr-depth
    * and expr-language settings present in the stream.
    */
-  void toStream(std::ostream& out) const throw();
+  void toStream(std::ostream& out) const override;
 
 };/* class TypeCheckingExceptionPrivate */
 
 class UnknownTypeException : public TypeCheckingExceptionPrivate {
-public:
-
-  UnknownTypeException(NodeTemplate<false> node) throw();
-
+ public:
+  UnknownTypeException(NodeTemplate<false> node);
 };/* class UnknownTypeException */
 
 /**
index 4cea29592764d6198145a98779653d1fc84c7f1b..12c69193e609b5ce87a298e0045199eec7464ad0 100644 (file)
@@ -30,9 +30,10 @@ namespace CVC4 {
  * class, below) should be used instead.
  */
 class CVC4_PUBLIC OptionException : public CVC4::Exception {
-public:
-  OptionException(const std::string& s) throw() :
-    CVC4::Exception("Error in option parsing: " + s) {
+ public:
+  OptionException(const std::string& s)
+      : CVC4::Exception("Error in option parsing: " + s)
+  {
   }
 };/* class OptionException */
 
@@ -41,7 +42,7 @@ public:
  * unrecognized or unsupported option key.
  */
 class CVC4_PUBLIC UnrecognizedOptionException : public CVC4::OptionException {
-public:
+ public:
   UnrecognizedOptionException() :
     CVC4::OptionException("Unrecognized informational or option key or setting") {
   }
index 48eb43e33b772fdde7db703c76249dcfec86bdf1..5e1be70e84e319facf95865e648bdede4206fc21 100644 (file)
@@ -29,40 +29,33 @@ namespace CVC4 {
 namespace parser {
 
 class CVC4_PUBLIC ParserException : public Exception {
-public:
+ public:
   // Constructors
-  ParserException() throw() :
-    d_filename(),
-    d_line(0),
-    d_column(0) {
-  }
+  ParserException() : d_filename(), d_line(0), d_column(0) {}
 
-  ParserException(const std::string& msg) throw() :
-    Exception(msg),
-    d_filename(),
-    d_line(0),
-    d_column(0) {
+  ParserException(const std::string& msg)
+      : Exception(msg), d_filename(), d_line(0), d_column(0)
+  {
   }
 
-  ParserException(const char* msg) throw() :
-    Exception(msg),
-    d_filename(),
-    d_line(0),
-    d_column(0) {
+  ParserException(const char* msg)
+      : Exception(msg), d_filename(), d_line(0), d_column(0)
+  {
   }
 
-  ParserException(const std::string& msg, const std::string& filename,
-                  unsigned long line, unsigned long column) throw() :
-    Exception(msg),
-    d_filename(filename),
-    d_line(line),
-    d_column(column) {
+  ParserException(const std::string& msg,
+                  const std::string& filename,
+                  unsigned long line,
+                  unsigned long column)
+      : Exception(msg), d_filename(filename), d_line(line), d_column(column)
+  {
   }
 
   // Destructor
-  virtual ~ParserException() throw() {}
+  ~ParserException() override {}
 
-  virtual void toStream(std::ostream& os) const throw() {
+  void toStream(std::ostream& os) const override
+  {
     if( d_line > 0 ) {
       os <<  "Parse Error: " << d_filename << ":" << d_line << "."
          << d_column << ": " << d_msg;
@@ -71,44 +64,34 @@ public:
     }
   }
 
-  std::string getFilename() const throw() {
-    return d_filename;
-  }
+  std::string getFilename() const { return d_filename; }
 
-  int getLine() const throw() {
-    return d_line;
-  }
+  int getLine() const { return d_line; }
 
-  int getColumn() const throw() {
-    return d_column;
-  }
+  int getColumn() const { return d_column; }
 
-protected:
+ protected:
   std::string d_filename;
   unsigned long d_line;
   unsigned long d_column;
 };/* class ParserException */
 
 class CVC4_PUBLIC ParserEndOfFileException : public ParserException {
-public:
-
+ public:
   // Constructors same as ParserException's
 
-  ParserEndOfFileException() throw() :
-    ParserException() {
-  }
+  ParserEndOfFileException() : ParserException() {}
 
-  ParserEndOfFileException(const std::string& msg) throw() :
-    ParserException(msg) {
-  }
+  ParserEndOfFileException(const std::string& msg) : ParserException(msg) {}
 
-  ParserEndOfFileException(const char* msg) throw() :
-    ParserException(msg) {
-  }
+  ParserEndOfFileException(const char* msg) : ParserException(msg) {}
 
-  ParserEndOfFileException(const std::string& msg, const std::string& filename,
-                           unsigned long line, unsigned long column) throw() :
-    ParserException(msg, filename, line, column) {
+  ParserEndOfFileException(const std::string& msg,
+                           const std::string& filename,
+                           unsigned long line,
+                           unsigned long column)
+      : ParserException(msg, filename, line, column)
+  {
   }
 
 };/* class ParserEndOfFileException */
index 5d5b021626f6505aacf9d69385f66331f9a56187..86e386e9a3625501911302634dfa0dc5d5300d66 100644 (file)
@@ -27,7 +27,7 @@
 namespace CVC4 {
 
 class CVC4_PUBLIC LogicException : public CVC4::Exception {
-public:
+ public:
   LogicException() :
     Exception("Feature used while operating in "
               "incorrect state") {
index 467f868a3093e9f0aad96bc0903d0b52bf6ea653..fba7fdaf658aa1afa10e91dd147777f44d943f49 100644 (file)
@@ -72,16 +72,17 @@ void DeltaRational::seperatingDelta(Rational& res, const DeltaRational& a, const
   }
 }
 
-
-DeltaRationalException::DeltaRationalException(const char* op, const DeltaRational& a, const DeltaRational& b) throw (){
-    std::stringstream ss;
-    ss << "Operation [" << op << "] between DeltaRational values ";
-    ss << a << " and " << b << " is not a DeltaRational.";
-    setMessage(ss.str());
+DeltaRationalException::DeltaRationalException(const char* op,
+                                               const DeltaRational& a,
+                                               const DeltaRational& b)
+{
+  std::stringstream ss;
+  ss << "Operation [" << op << "] between DeltaRational values ";
+  ss << a << " and " << b << " is not a DeltaRational.";
+  setMessage(ss.str());
 }
 
-DeltaRationalException::~DeltaRationalException() throw () { }
-
+DeltaRationalException::~DeltaRationalException() {}
 
 Integer DeltaRational::euclidianDivideQuotient(const DeltaRational& y) const throw(DeltaRationalException){
   if(isIntegral() && y.isIntegral()){
index b0ea8a9c1a4a8fcbfb97a66b99dc799d651d3459..7a1c18ea22f78ea29563a116dc718ef165d05399 100644 (file)
@@ -31,9 +31,11 @@ namespace CVC4 {
 class DeltaRational;
 
 class DeltaRationalException : public Exception {
-public:
-  DeltaRationalException(const char* op, const DeltaRational& a, const DeltaRational& b) throw ();
-  virtual ~DeltaRationalException() throw ();
+ public:
+  DeltaRationalException(const char* op,
+                         const DeltaRational& a,
+                         const DeltaRational& b);
+  ~DeltaRationalException() override;
 };
 
 
index f281bdfcc8046a3ff5f73b361895418265cc83a4..f05f475959e1020adb82f46fa0779d11ea71ca35 100644 (file)
@@ -311,13 +311,13 @@ void TheoryArithPrivate::setMasterEqualityEngine(eq::EqualityEngine* eq) {
   d_congruenceManager.setMasterEqualityEngine(eq);
 }
 
-TheoryArithPrivate::ModelException::ModelException(TNode n, const char* msg) throw (){
+TheoryArithPrivate::ModelException::ModelException(TNode n, const char* msg)
+{
   stringstream ss;
   ss << "Cannot construct a model for " << n << " as " << endl << msg;
   setMessage(ss.str());
 }
-TheoryArithPrivate::ModelException::~ModelException() throw (){ }
-
+TheoryArithPrivate::ModelException::~ModelException() {}
 
 TheoryArithPrivate::Statistics::Statistics()
   : d_statAssertUpperConflicts("theory::arith::AssertUpperConflicts", 0)
index ff60e84360288b90b5bf513a93f5ea966846e8d2..912bae5e69d56eec70ba105d28bfe6e4fe4c6d2a 100644 (file)
@@ -396,9 +396,9 @@ private:
   bool replayLog(ApproximateSimplex* approx);
 
   class ModelException : public Exception {
-  public:
-    ModelException(TNode n, const char* msg) throw ();
-    virtual ~ModelException() throw ();
+   public:
+    ModelException(TNode n, const char* msg);
+    ~ModelException() override;
   };
 
   /**
index 18ed6d66146657be8713ecfcd11760ed5aa97417..f90a0683349cba4c49026f89002aaf4d9e7ff5f2 100644 (file)
@@ -29,8 +29,9 @@ namespace theory {
 
 class NoMoreValuesException : public Exception {
  public:
-  NoMoreValuesException(TypeNode n) throw() :
-    Exception("No more values for type `" + n.toString() + "'") {
+  NoMoreValuesException(TypeNode n)
+      : Exception("No more values for type `" + n.toString() + "'")
+  {
   }
 };/* class NoMoreValuesException */
 
index 6250cbccdad17559d337176482e634eff7150045..aa893517b208c599b605caa1be31cb2f3a7dbff0 100644 (file)
@@ -98,7 +98,6 @@ Maybe<Rational> Rational::fromDouble(double d)
   }catch(cln::floating_point_overflow_exception& fpoe){
     return Maybe<Rational>();
   }
-  Unreachable();
 }
 
 } /* namespace CVC4 */
index 7c17ead15f65e7273525d40f1d8d34017143e532..153b237d76d07f4ef2af69833cb4cfc1e01f2484 100644 (file)
@@ -84,6 +84,7 @@ public:
 
   /**
    * Constructs a Rational from a C string in a given base (defaults to 10).
+   *
    * Throws std::invalid_argument if the string is not a valid rational.
    * For more information about what is a valid rational string,
    * see GMP's documentation for mpq_set_str().