give folly future's exceptions default visibility
authorEric Niebler <eniebler@fb.com>
Wed, 4 Oct 2017 21:56:25 +0000 (14:56 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Wed, 4 Oct 2017 22:05:11 +0000 (15:05 -0700)
Summary: Exception types should have default visibility, otherwise RTTI doesn't work right.

Reviewed By: elsteveogrande

Differential Revision: D5976415

fbshipit-source-id: 45dcfe3476b513aa49a6f78352318f31d381ada7

folly/futures/FutureException.h

index 2ee69c08bd388fec01ab10d6b44efced52f82c48..5d265b75b76747b66a334ac7117837aff4286563 100644 (file)
 #include <stdexcept>
 #include <string>
 
+#include <folly/CPortability.h>
+
 namespace folly {
 
-class FutureException : public std::logic_error {
+class FOLLY_EXPORT FutureException : public std::logic_error {
  public:
   using std::logic_error::logic_error;
 };
 
-class BrokenPromise : public FutureException {
+class FOLLY_EXPORT BrokenPromise : public FutureException {
  public:
   explicit BrokenPromise(const std::string& type)
       : FutureException("Broken promise for type name `" + type + '`') {}
@@ -34,54 +36,54 @@ class BrokenPromise : public FutureException {
   explicit BrokenPromise(const char* type) : BrokenPromise(std::string(type)) {}
 };
 
-class NoState : public FutureException {
+class FOLLY_EXPORT NoState : public FutureException {
  public:
   NoState() : FutureException("No state") {}
 };
 
 [[noreturn]] void throwNoState();
 
-class PromiseAlreadySatisfied : public FutureException {
+class FOLLY_EXPORT PromiseAlreadySatisfied : public FutureException {
  public:
   PromiseAlreadySatisfied() : FutureException("Promise already satisfied") {}
 };
 
 [[noreturn]] void throwPromiseAlreadySatisfied();
 
-class FutureNotReady : public FutureException {
+class FOLLY_EXPORT FutureNotReady : public FutureException {
  public:
   FutureNotReady() : FutureException("Future not ready") {}
 };
 
 [[noreturn]] void throwFutureNotReady();
 
-class FutureAlreadyRetrieved : public FutureException {
+class FOLLY_EXPORT FutureAlreadyRetrieved : public FutureException {
  public:
   FutureAlreadyRetrieved() : FutureException("Future already retrieved") {}
 };
 
 [[noreturn]] void throwFutureAlreadyRetrieved();
 
-class FutureCancellation : public FutureException {
+class FOLLY_EXPORT FutureCancellation : public FutureException {
  public:
   FutureCancellation() : FutureException("Future was cancelled") {}
 };
 
-class TimedOut : public FutureException {
+class FOLLY_EXPORT TimedOut : public FutureException {
  public:
   TimedOut() : FutureException("Timed out") {}
 };
 
 [[noreturn]] void throwTimedOut();
 
-class PredicateDoesNotObtain : public FutureException {
+class FOLLY_EXPORT PredicateDoesNotObtain : public FutureException {
  public:
   PredicateDoesNotObtain() : FutureException("Predicate does not obtain") {}
 };
 
 [[noreturn]] void throwPredicateDoesNotObtain();
 
-struct NoFutureInSplitter : FutureException {
+struct FOLLY_EXPORT NoFutureInSplitter : FutureException {
   NoFutureInSplitter() : FutureException("No Future in this FutureSplitter") {}
 };