From e70058f47d312aaf194207ff6034089850750c1e Mon Sep 17 00:00:00 2001 From: Victor Gao Date: Wed, 24 May 2017 11:03:04 -0700 Subject: [PATCH] apply clang-tidy modernize-use-override Summary: This is generated by applying clang-tidy -checks=modernize-use-override to all .cpp files under folly. It enforces the use of the keywords virtual, override and final in a way compliant to the style guide. Reviewed By: yfeldblum Differential Revision: D5108973 fbshipit-source-id: 61c55aa372feebe3b3be12a2705a04879aae57a4 --- folly/IPAddressException.h | 4 +- folly/LifoSem.h | 2 +- folly/Singleton.h | 10 +-- folly/Subprocess.h | 4 +- folly/dynamic-inl.h | 2 +- folly/experimental/hazptr/memory_resource.h | 4 +- folly/experimental/hazptr/test/HazptrUse1.h | 4 +- folly/experimental/hazptr/test/HazptrUse2.h | 4 +- folly/experimental/symbolizer/Symbolizer.h | 2 +- folly/fibers/EventBaseLoopController.h | 4 +- folly/fibers/FiberManagerInternal.h | 2 +- folly/futures/DrivableExecutor.h | 2 +- folly/futures/ManualExecutor.h | 2 +- folly/futures/ScheduledExecutor.h | 4 +- folly/gen/Base-inl.h | 6 +- folly/io/Compression.cpp | 2 +- folly/io/IOBuf.h | 2 +- folly/io/async/AsyncPipe.h | 4 +- folly/io/async/AsyncSSLSocket.h | 42 +++++------ folly/io/async/AsyncServerSocket.h | 14 ++-- folly/io/async/AsyncSocket.h | 8 +-- folly/io/async/AsyncTimeout.h | 2 +- folly/io/async/AsyncTransport.h | 29 +++++--- folly/io/async/AsyncUDPServerSocket.h | 19 ++--- folly/io/async/AsyncUDPSocket.h | 4 +- .../io/async/DecoratedAsyncTransportWrapper.h | 70 +++++++++---------- folly/io/async/DelayedDestruction.h | 2 +- folly/io/async/EventBase.h | 14 ++-- folly/io/async/EventBaseLocal.h | 2 +- folly/io/async/HHWheelTimer.h | 4 +- folly/io/async/NotificationQueue.h | 2 +- folly/io/async/VirtualEventBase.h | 2 +- .../async/WriteChainAsyncTransportWrapper.h | 6 +- folly/io/async/test/AsyncSSLSocketTest.cpp | 4 +- folly/io/async/test/AsyncSSLSocketTest.h | 20 +++--- folly/io/async/test/AsyncSocketTest.h | 2 +- folly/io/async/test/AsyncSocketTest2.h | 16 ++--- .../io/async/test/DelayedDestructionTest.cpp | 3 +- folly/io/async/test/NotificationQueueTest.cpp | 2 +- folly/io/async/test/RequestContextTest.cpp | 2 +- folly/io/async/test/TestSSLServer.h | 2 +- folly/io/async/test/UndelayedDestruction.h | 2 +- .../WriteChainAsyncTransportWrapperTest.cpp | 3 +- folly/test/SingletonTest.cpp | 4 +- folly/test/SmallLocksBenchmark.cpp | 2 +- folly/test/SubprocessTest.cpp | 2 +- 46 files changed, 178 insertions(+), 170 deletions(-) diff --git a/folly/IPAddressException.h b/folly/IPAddressException.h index c2ca1ad4..86f8a5ac 100644 --- a/folly/IPAddressException.h +++ b/folly/IPAddressException.h @@ -37,8 +37,8 @@ class IPAddressFormatException : public std::exception { default; IPAddressFormatException& operator=(IPAddressFormatException&&) = default; - virtual ~IPAddressFormatException() noexcept {} - virtual const char *what(void) const noexcept { + ~IPAddressFormatException() noexcept override {} + const char* what(void) const noexcept override { return msg_.c_str(); } diff --git a/folly/LifoSem.h b/folly/LifoSem.h index d66f77e5..f6b7bf02 100644 --- a/folly/LifoSem.h +++ b/folly/LifoSem.h @@ -91,7 +91,7 @@ typedef LifoSemImpl<> LifoSem; /// The exception thrown when wait()ing on an isShutdown() LifoSem struct ShutdownSemError : public std::runtime_error { explicit ShutdownSemError(const std::string& msg); - virtual ~ShutdownSemError() noexcept; + ~ShutdownSemError() noexcept override; }; namespace detail { diff --git a/folly/Singleton.h b/folly/Singleton.h index e8344cef..104054af 100644 --- a/folly/Singleton.h +++ b/folly/Singleton.h @@ -273,11 +273,11 @@ struct SingletonHolder : public SingletonHolderBase { void registerSingleton(CreateFunc c, TeardownFunc t); void registerSingletonMock(CreateFunc c, TeardownFunc t); - virtual bool hasLiveInstance() override; - virtual void createInstance() override; - virtual bool creationStarted() override; - virtual void preDestroyInstance(ReadMostlyMainPtrDeleter<>&) override; - virtual void destroyInstance() override; + bool hasLiveInstance() override; + void createInstance() override; + bool creationStarted() override; + void preDestroyInstance(ReadMostlyMainPtrDeleter<>&) override; + void destroyInstance() override; private: SingletonHolder(TypeDescriptor type, SingletonVault& vault); diff --git a/folly/Subprocess.h b/folly/Subprocess.h index 01e6d2c0..f1dd2ecd 100644 --- a/folly/Subprocess.h +++ b/folly/Subprocess.h @@ -217,7 +217,7 @@ class SubprocessError : public std::exception {}; class CalledProcessError : public SubprocessError { public: explicit CalledProcessError(ProcessReturnCode rc); - ~CalledProcessError() throw() = default; + ~CalledProcessError() throw() override = default; const char* what() const throw() override { return what_.c_str(); } ProcessReturnCode returnCode() const { return returnCode_; } private: @@ -231,7 +231,7 @@ class CalledProcessError : public SubprocessError { class SubprocessSpawnError : public SubprocessError { public: SubprocessSpawnError(const char* executable, int errCode, int errnoValue); - ~SubprocessSpawnError() throw() = default; + ~SubprocessSpawnError() throw() override = default; const char* what() const throw() override { return what_.c_str(); } int errnoValue() const { return errnoValue_; } diff --git a/folly/dynamic-inl.h b/folly/dynamic-inl.h index fe65cbbc..48666de3 100644 --- a/folly/dynamic-inl.h +++ b/folly/dynamic-inl.h @@ -78,7 +78,7 @@ struct TypeError : std::runtime_error { explicit TypeError(const std::string& expected, dynamic::Type actual); explicit TypeError(const std::string& expected, dynamic::Type actual1, dynamic::Type actual2); - ~TypeError(); + ~TypeError() override; }; diff --git a/folly/experimental/hazptr/memory_resource.h b/folly/experimental/hazptr/memory_resource.h index 33994dd5..952c8397 100644 --- a/folly/experimental/hazptr/memory_resource.h +++ b/folly/experimental/hazptr/memory_resource.h @@ -69,7 +69,7 @@ inline memory_resource* new_delete_resource() { public: void* allocate( const size_t bytes, - const size_t alignment = alignof(std::max_align_t)) { + const size_t alignment = alignof(std::max_align_t)) override { (void)alignment; void* p = static_cast(new char[bytes]); DEBUG_PRINT(this << " " << p << " " << bytes); @@ -78,7 +78,7 @@ inline memory_resource* new_delete_resource() { void deallocate( void* p, const size_t bytes, - const size_t alignment = alignof(std::max_align_t)) { + const size_t alignment = alignof(std::max_align_t)) override { (void)alignment; (void)bytes; DEBUG_PRINT(p << " " << bytes); diff --git a/folly/experimental/hazptr/test/HazptrUse1.h b/folly/experimental/hazptr/test/HazptrUse1.h index 4ca53b58..614225c6 100644 --- a/folly/experimental/hazptr/test/HazptrUse1.h +++ b/folly/experimental/hazptr/test/HazptrUse1.h @@ -23,13 +23,13 @@ namespace hazptr { class MyMemoryResource : public memory_resource { public: - void* allocate(const size_t sz, const size_t /* align */) { + void* allocate(const size_t sz, const size_t /* align */) override { void* p = malloc(sz); DEBUG_PRINT(p << " " << sz); return p; } - void deallocate(void* p, const size_t sz, const size_t /* align */) { + void deallocate(void* p, const size_t sz, const size_t /* align */) override { DEBUG_PRINT(p << " " << sz); free(p); } diff --git a/folly/experimental/hazptr/test/HazptrUse2.h b/folly/experimental/hazptr/test/HazptrUse2.h index e3a11243..b8dc58e9 100644 --- a/folly/experimental/hazptr/test/HazptrUse2.h +++ b/folly/experimental/hazptr/test/HazptrUse2.h @@ -23,13 +23,13 @@ namespace hazptr { class MineMemoryResource : public memory_resource { public: - void* allocate(const size_t sz, const size_t /* align */) { + void* allocate(const size_t sz, const size_t /* align */) override { void* p = malloc(sz); DEBUG_PRINT(p << " " << sz); return p; } - void deallocate(void* p, const size_t sz, const size_t /* align */) { + void deallocate(void* p, const size_t sz, const size_t /* align */) override { DEBUG_PRINT(p << " " << sz); free(p); } diff --git a/folly/experimental/symbolizer/Symbolizer.h b/folly/experimental/symbolizer/Symbolizer.h index 677e0a8d..772b11d0 100644 --- a/folly/experimental/symbolizer/Symbolizer.h +++ b/folly/experimental/symbolizer/Symbolizer.h @@ -269,7 +269,7 @@ class FDSymbolizePrinter : public SymbolizePrinter { public: explicit FDSymbolizePrinter(int fd, int options=0, size_t bufferSize=0); - ~FDSymbolizePrinter(); + ~FDSymbolizePrinter() override; void flush(); private: void doPrint(StringPiece sp) override; diff --git a/folly/fibers/EventBaseLoopController.h b/folly/fibers/EventBaseLoopController.h index a8a82766..329997d2 100644 --- a/folly/fibers/EventBaseLoopController.h +++ b/folly/fibers/EventBaseLoopController.h @@ -27,7 +27,7 @@ namespace fibers { class EventBaseLoopController : public LoopController { public: explicit EventBaseLoopController(); - ~EventBaseLoopController(); + ~EventBaseLoopController() override; /** * Attach EventBase after LoopController was created. @@ -60,7 +60,7 @@ class EventBaseLoopController : public LoopController { class DestructionCallback : public folly::EventBase::LoopCallback { public: DestructionCallback() : alive_(new int(42)) {} - ~DestructionCallback() { + ~DestructionCallback() override { reset(); } diff --git a/folly/fibers/FiberManagerInternal.h b/folly/fibers/FiberManagerInternal.h index 7428d01d..f9447894 100644 --- a/folly/fibers/FiberManagerInternal.h +++ b/folly/fibers/FiberManagerInternal.h @@ -146,7 +146,7 @@ class FiberManager : public ::folly::Executor { std::unique_ptr loopController, Options options = Options()); - ~FiberManager(); + ~FiberManager() override; /** * Controller access. diff --git a/folly/futures/DrivableExecutor.h b/folly/futures/DrivableExecutor.h index a33d2d6f..49b3c5d7 100644 --- a/folly/futures/DrivableExecutor.h +++ b/folly/futures/DrivableExecutor.h @@ -39,7 +39,7 @@ namespace folly { class DrivableExecutor : public virtual Executor { public: - virtual ~DrivableExecutor() = default; + ~DrivableExecutor() override = default; // Make progress on this Executor's work. // diff --git a/folly/futures/ManualExecutor.h b/folly/futures/ManualExecutor.h index d4fb8db6..76847e2c 100644 --- a/folly/futures/ManualExecutor.h +++ b/folly/futures/ManualExecutor.h @@ -73,7 +73,7 @@ namespace folly { } - virtual void scheduleAt(Func&& f, TimePoint const& t) override { + void scheduleAt(Func&& f, TimePoint const& t) override { std::lock_guard lock(lock_); scheduledFuncs_.emplace(t, std::move(f)); sem_.post(); diff --git a/folly/futures/ScheduledExecutor.h b/folly/futures/ScheduledExecutor.h index df102546..99cb2b73 100644 --- a/folly/futures/ScheduledExecutor.h +++ b/folly/futures/ScheduledExecutor.h @@ -30,9 +30,9 @@ namespace folly { typedef std::chrono::microseconds Duration; typedef std::chrono::steady_clock::time_point TimePoint; - virtual ~ScheduledExecutor() = default; + ~ScheduledExecutor() override = default; - virtual void add(Func) override = 0; + void add(Func) override = 0; /// Alias for add() (for Rx consistency) void schedule(Func&& a) { add(std::move(a)); } diff --git a/folly/gen/Base-inl.h b/folly/gen/Base-inl.h index 45873e8b..2245bf08 100644 --- a/folly/gen/Base-inl.h +++ b/folly/gen/Base-inl.h @@ -2233,15 +2233,15 @@ class VirtualGen : public GenImpl> { public: explicit WrapperImpl(Wrapped wrapped) : wrapped_(std::move(wrapped)) {} - virtual bool apply(const std::function& handler) const { + bool apply(const std::function& handler) const override { return wrapped_.apply(handler); } - virtual void foreach(const std::function& body) const { + void foreach(const std::function& body) const override { wrapped_.foreach(body); } - virtual std::unique_ptr clone() const { + std::unique_ptr clone() const override { return std::unique_ptr(new WrapperImpl(wrapped_)); } }; diff --git a/folly/io/Compression.cpp b/folly/io/Compression.cpp index ba941032..4c02802e 100644 --- a/folly/io/Compression.cpp +++ b/folly/io/Compression.cpp @@ -445,7 +445,7 @@ class LZ4FrameCodec final : public Codec { public: static std::unique_ptr create(int level, CodecType type); explicit LZ4FrameCodec(int level, CodecType type); - ~LZ4FrameCodec(); + ~LZ4FrameCodec() override; std::vector validPrefixes() const override; bool canUncompress(const IOBuf* data, Optional uncompressedLength) diff --git a/folly/io/IOBuf.h b/folly/io/IOBuf.h index 15f8839c..22867091 100644 --- a/folly/io/IOBuf.h +++ b/folly/io/IOBuf.h @@ -1396,7 +1396,7 @@ class IOBuf { typedef typename UniquePtr::deleter_type Deleter; explicit UniquePtrDeleter(Deleter deleter) : deleter_(std::move(deleter)){ } - void dispose(void* p) { + void dispose(void* p) override { try { deleter_(static_cast(p)); delete this; diff --git a/folly/io/async/AsyncPipe.h b/folly/io/async/AsyncPipe.h index 1b5d0de4..7a4ece3d 100644 --- a/folly/io/async/AsyncPipe.h +++ b/folly/io/async/AsyncPipe.h @@ -77,7 +77,7 @@ class AsyncPipeReader : public EventHandler, } private: - ~AsyncPipeReader(); + ~AsyncPipeReader() override; void handlerReady(uint16_t events) noexcept override; void failRead(const AsyncSocketException& ex); @@ -173,7 +173,7 @@ class AsyncPipeWriter : public EventHandler, bool closeOnEmpty_{false}; std::function closeCb_; - ~AsyncPipeWriter() { + ~AsyncPipeWriter() override { closeNow(); } }; diff --git a/folly/io/async/AsyncSSLSocket.h b/folly/io/async/AsyncSSLSocket.h index accd120a..516e07c2 100644 --- a/folly/io/async/AsyncSSLSocket.h +++ b/folly/io/async/AsyncSSLSocket.h @@ -141,7 +141,7 @@ class AsyncSSLSocket : public virtual AsyncSocket { return timeout_; } - virtual void timeoutExpired() noexcept override { + void timeoutExpired() noexcept override { sslSocket_->timeoutExpired(timeout_); } @@ -275,18 +275,20 @@ class AsyncSSLSocket : public virtual AsyncSocket { // See the documentation in TAsyncTransport.h // TODO: implement graceful shutdown in close() // TODO: implement detachSSL() that returns the SSL connection - virtual void closeNow() override; - virtual void shutdownWrite() override; - virtual void shutdownWriteNow() override; - virtual bool good() const override; - virtual bool connecting() const override; - virtual std::string getApplicationProtocol() noexcept override; - - virtual std::string getSecurityProtocol() const override { return "TLS"; } - - virtual void setEorTracking(bool track) override; - virtual size_t getRawBytesWritten() const override; - virtual size_t getRawBytesReceived() const override; + void closeNow() override; + void shutdownWrite() override; + void shutdownWriteNow() override; + bool good() const override; + bool connecting() const override; + std::string getApplicationProtocol() noexcept override; + + std::string getSecurityProtocol() const override { + return "TLS"; + } + + void setEorTracking(bool track) override; + size_t getRawBytesWritten() const override; + size_t getRawBytesReceived() const override; void enableClientHelloParsing(); /** @@ -513,21 +515,21 @@ class AsyncSSLSocket : public virtual AsyncSocket { /** * Get the certificate used for this SSL connection. May be null */ - virtual const X509* getSelfCert() const override; + const X509* getSelfCert() const override; - virtual void attachEventBase(EventBase* eventBase) override { + void attachEventBase(EventBase* eventBase) override { AsyncSocket::attachEventBase(eventBase); handshakeTimeout_.attachEventBase(eventBase); connectionTimeout_.attachEventBase(eventBase); } - virtual void detachEventBase() override { + void detachEventBase() override { AsyncSocket::detachEventBase(); handshakeTimeout_.detachEventBase(); connectionTimeout_.detachEventBase(); } - virtual bool isDetachable() const override { + bool isDetachable() const override { return AsyncSocket::isDetachable() && !handshakeTimeout_.isScheduled(); } @@ -675,7 +677,7 @@ class AsyncSSLSocket : public virtual AsyncSocket { /** * Returns the peer certificate, or nullptr if no peer certificate received. */ - virtual ssl::X509UniquePtr getPeerCert() const override { + ssl::X509UniquePtr getPeerCert() const override { if (!ssl_) { return nullptr; } @@ -734,7 +736,7 @@ class AsyncSSLSocket : public virtual AsyncSocket { * destroy() instead. (See the documentation in DelayedDestruction.h for * more details.) */ - ~AsyncSSLSocket(); + ~AsyncSSLSocket() override; // Inherit event notification methods from AsyncSocket except // the following. @@ -749,7 +751,7 @@ class AsyncSSLSocket : public virtual AsyncSocket { int* sslErrorOut, unsigned long* errErrorOut) noexcept; - virtual void checkForImmediateRead() noexcept override; + void checkForImmediateRead() noexcept override; // AsyncSocket calls this at the wrong time for SSL void handleInitialReadWrite() noexcept override {} diff --git a/folly/io/async/AsyncServerSocket.h b/folly/io/async/AsyncServerSocket.h index 63ca06ed..ff2f539c 100644 --- a/folly/io/async/AsyncServerSocket.h +++ b/folly/io/async/AsyncServerSocket.h @@ -246,7 +246,7 @@ class AsyncServerSocket : public DelayedDestruction * time after destroy() returns. They will not receive any more callback * invocations once acceptStopped() is invoked. */ - virtual void destroy(); + void destroy() override; /** * Attach this AsyncServerSocket to its primary EventBase. @@ -268,7 +268,7 @@ class AsyncServerSocket : public DelayedDestruction /** * Get the EventBase used by this socket. */ - EventBase* getEventBase() const { + EventBase* getEventBase() const override { return eventBase_; } @@ -353,7 +353,7 @@ class AsyncServerSocket : public DelayedDestruction * * Throws TTransportException on error. */ - void getAddress(SocketAddress* addressReturn) const; + void getAddress(SocketAddress* addressReturn) const override; /** * Get the local address to which the socket is bound. @@ -717,7 +717,7 @@ class AsyncServerSocket : public DelayedDestruction * * Invoke destroy() instead to destroy the AsyncServerSocket. */ - virtual ~AsyncServerSocket(); + ~AsyncServerSocket() override; private: enum class MessageType { @@ -750,12 +750,12 @@ class AsyncServerSocket : public DelayedDestruction : callback_(callback), connectionEventCallback_(connectionEventCallback) {} - ~RemoteAcceptor() = default; + ~RemoteAcceptor() override = default; void start(EventBase *eventBase, uint32_t maxAtOnce, uint32_t maxInQueue); void stop(EventBase* eventBase, AcceptCallback* callback); - virtual void messageAvailable(QueueMessage&& message) noexcept override; + void messageAvailable(QueueMessage&& message) noexcept override; NotificationQueue* getQueue() { return &queue_; @@ -841,7 +841,7 @@ class AsyncServerSocket : public DelayedDestruction } // Inherited from EventHandler - virtual void handlerReady(uint16_t events) noexcept { + void handlerReady(uint16_t events) noexcept override { parent_->handlerReady(events, socket_, addressFamily_); } diff --git a/folly/io/async/AsyncSocket.h b/folly/io/async/AsyncSocket.h index d4ddf0be..1bf1b4de 100644 --- a/folly/io/async/AsyncSocket.h +++ b/folly/io/async/AsyncSocket.h @@ -320,7 +320,7 @@ class AsyncSocket : virtual public AsyncTransportWrapper { * This prevents callers from deleting a AsyncSocket while it is invoking a * callback. */ - virtual void destroy() override; + void destroy() override; /** * Get the EventBase used by this socket. @@ -886,7 +886,7 @@ class AsyncSocket : virtual public AsyncTransportWrapper { * destroy() instead. (See the documentation in DelayedDestruction.h for * more details.) */ - ~AsyncSocket(); + ~AsyncSocket() override; friend std::ostream& operator << (std::ostream& os, const StateEnum& state); @@ -919,7 +919,7 @@ class AsyncSocket : virtual public AsyncTransportWrapper { : AsyncTimeout(eventBase) , socket_(socket) {} - virtual void timeoutExpired() noexcept { + void timeoutExpired() noexcept override { socket_->timeoutExpired(); } @@ -936,7 +936,7 @@ class AsyncSocket : virtual public AsyncTransportWrapper { : EventHandler(eventBase, fd) , socket_(socket) {} - virtual void handlerReady(uint16_t events) noexcept { + void handlerReady(uint16_t events) noexcept override { socket_->ioReady(events); } diff --git a/folly/io/async/AsyncTimeout.h b/folly/io/async/AsyncTimeout.h index 21e7a299..2f626d84 100644 --- a/folly/io/async/AsyncTimeout.h +++ b/folly/io/async/AsyncTimeout.h @@ -248,7 +248,7 @@ struct async_timeout_wrapper: callback_(std::forward(callback)) {} - void timeoutExpired() noexcept { + void timeoutExpired() noexcept override { static_assert( noexcept(std::declval()()), "callback must be declared noexcept, e.g.: `[]() noexcept {}`" diff --git a/folly/io/async/AsyncTransport.h b/folly/io/async/AsyncTransport.h index 3d023c45..7af32f26 100644 --- a/folly/io/async/AsyncTransport.h +++ b/folly/io/async/AsyncTransport.h @@ -345,7 +345,7 @@ class AsyncTransport : public DelayedDestruction, public AsyncSocketBase { return addr; } - virtual void getAddress(SocketAddress* address) const { + void getAddress(SocketAddress* address) const override { getLocalAddress(address); } @@ -438,7 +438,7 @@ class AsyncTransport : public DelayedDestruction, public AsyncSocketBase { } protected: - virtual ~AsyncTransport() = default; + ~AsyncTransport() override = default; }; class AsyncReader { @@ -630,15 +630,22 @@ class AsyncTransportWrapper : virtual public AsyncTransport, // to keep compatibility. using ReadCallback = AsyncReader::ReadCallback; using WriteCallback = AsyncWriter::WriteCallback; - virtual void setReadCB(ReadCallback* callback) override = 0; - virtual ReadCallback* getReadCallback() const override = 0; - virtual void write(WriteCallback* callback, const void* buf, size_t bytes, - WriteFlags flags = WriteFlags::NONE) override = 0; - virtual void writev(WriteCallback* callback, const iovec* vec, size_t count, - WriteFlags flags = WriteFlags::NONE) override = 0; - virtual void writeChain(WriteCallback* callback, - std::unique_ptr&& buf, - WriteFlags flags = WriteFlags::NONE) override = 0; + void setReadCB(ReadCallback* callback) override = 0; + ReadCallback* getReadCallback() const override = 0; + void write( + WriteCallback* callback, + const void* buf, + size_t bytes, + WriteFlags flags = WriteFlags::NONE) override = 0; + void writev( + WriteCallback* callback, + const iovec* vec, + size_t count, + WriteFlags flags = WriteFlags::NONE) override = 0; + void writeChain( + WriteCallback* callback, + std::unique_ptr&& buf, + WriteFlags flags = WriteFlags::NONE) override = 0; /** * The transport wrapper may wrap another transport. This returns the * transport that is wrapped. It returns nullptr if there is no wrapped diff --git a/folly/io/async/AsyncUDPServerSocket.h b/folly/io/async/AsyncUDPServerSocket.h index 651eb1ca..86586580 100644 --- a/folly/io/async/AsyncUDPServerSocket.h +++ b/folly/io/async/AsyncUDPServerSocket.h @@ -77,7 +77,7 @@ class AsyncUDPServerSocket : private AsyncUDPSocket::ReadCallback nextListener_(0) { } - ~AsyncUDPServerSocket() { + ~AsyncUDPServerSocket() override { if (socket_) { close(); } @@ -100,7 +100,7 @@ class AsyncUDPServerSocket : private AsyncUDPSocket::ReadCallback return socket_->address(); } - void getAddress(SocketAddress* a) const { + void getAddress(SocketAddress* a) const override { *a = address(); } @@ -136,19 +136,20 @@ class AsyncUDPServerSocket : private AsyncUDPSocket::ReadCallback socket_.reset(); } - EventBase* getEventBase() const { + EventBase* getEventBase() const override { return evb_; } private: // AsyncUDPSocket::ReadCallback - void getReadBuffer(void** buf, size_t* len) noexcept { + void getReadBuffer(void** buf, size_t* len) noexcept override { std::tie(*buf, *len) = buf_.preallocate(packetSize_, packetSize_); } - void onDataAvailable(const folly::SocketAddress& clientAddress, - size_t len, - bool truncated) noexcept { + void onDataAvailable( + const folly::SocketAddress& clientAddress, + size_t len, + bool truncated) noexcept override { buf_.postallocate(len); auto data = buf_.split(len); @@ -182,14 +183,14 @@ class AsyncUDPServerSocket : private AsyncUDPSocket::ReadCallback ++nextListener_; } - void onReadError(const AsyncSocketException& ex) noexcept { + void onReadError(const AsyncSocketException& ex) noexcept override { LOG(ERROR) << ex.what(); // Lets register to continue listening for packets socket_->resumeRead(this); } - void onReadClosed() noexcept { + void onReadClosed() noexcept override { for (auto& listener: listeners_) { auto callback = listener.second; diff --git a/folly/io/async/AsyncUDPSocket.h b/folly/io/async/AsyncUDPSocket.h index 62a295d6..4a5a7382 100644 --- a/folly/io/async/AsyncUDPSocket.h +++ b/folly/io/async/AsyncUDPSocket.h @@ -82,7 +82,7 @@ class AsyncUDPSocket : public EventHandler { * given eventbase */ explicit AsyncUDPSocket(EventBase* evb); - ~AsyncUDPSocket(); + ~AsyncUDPSocket() override; /** * Returns the address server is listening on @@ -163,7 +163,7 @@ class AsyncUDPSocket : public EventHandler { AsyncUDPSocket& operator=(const AsyncUDPSocket&) = delete; // EventHandler - void handlerReady(uint16_t events) noexcept; + void handlerReady(uint16_t events) noexcept override; void handleRead() noexcept; bool updateRegistration() noexcept; diff --git a/folly/io/async/DecoratedAsyncTransportWrapper.h b/folly/io/async/DecoratedAsyncTransportWrapper.h index 20baf7bf..06dc4196 100644 --- a/folly/io/async/DecoratedAsyncTransportWrapper.h +++ b/folly/io/async/DecoratedAsyncTransportWrapper.h @@ -34,16 +34,16 @@ class DecoratedAsyncTransportWrapper : public folly::AsyncTransportWrapper { } // folly::AsyncTransportWrapper - virtual ReadCallback* getReadCallback() const override { + ReadCallback* getReadCallback() const override { return transport_->getReadCallback(); } - virtual void setReadCB( + void setReadCB( folly::AsyncTransportWrapper::ReadCallback* callback) override { transport_->setReadCB(callback); } - virtual void write( + void write( folly::AsyncTransportWrapper::WriteCallback* callback, const void* buf, size_t bytes, @@ -51,14 +51,14 @@ class DecoratedAsyncTransportWrapper : public folly::AsyncTransportWrapper { transport_->write(callback, buf, bytes, flags); } - virtual void writeChain( + void writeChain( folly::AsyncTransportWrapper::WriteCallback* callback, std::unique_ptr&& buf, folly::WriteFlags flags = folly::WriteFlags::NONE) override { transport_->writeChain(callback, std::move(buf), flags); } - virtual void writev( + void writev( folly::AsyncTransportWrapper::WriteCallback* callback, const iovec* vec, size_t bytes, @@ -67,24 +67,24 @@ class DecoratedAsyncTransportWrapper : public folly::AsyncTransportWrapper { } // folly::AsyncSocketBase - virtual folly::EventBase* getEventBase() const override { + folly::EventBase* getEventBase() const override { return transport_->getEventBase(); } // folly::AsyncTransport - virtual void attachEventBase(folly::EventBase* eventBase) override { + void attachEventBase(folly::EventBase* eventBase) override { transport_->attachEventBase(eventBase); } - virtual void close() override { + void close() override { transport_->close(); } - virtual void closeNow() override { + void closeNow() override { transport_->closeNow(); } - virtual void closeWithReset() override { + void closeWithReset() override { transport_->closeWithReset(); // This will likely result in 2 closeNow() calls on the decorated transport, @@ -92,105 +92,105 @@ class DecoratedAsyncTransportWrapper : public folly::AsyncTransportWrapper { closeNow(); } - virtual bool connecting() const override { + bool connecting() const override { return transport_->connecting(); } - virtual void detachEventBase() override { + void detachEventBase() override { transport_->detachEventBase(); } - virtual bool error() const override { + bool error() const override { return transport_->error(); } - virtual size_t getAppBytesReceived() const override { + size_t getAppBytesReceived() const override { return transport_->getAppBytesReceived(); } - virtual size_t getAppBytesWritten() const override { + size_t getAppBytesWritten() const override { return transport_->getAppBytesWritten(); } - virtual void getLocalAddress(folly::SocketAddress* address) const override { + void getLocalAddress(folly::SocketAddress* address) const override { return transport_->getLocalAddress(address); } - virtual void getPeerAddress(folly::SocketAddress* address) const override { + void getPeerAddress(folly::SocketAddress* address) const override { return transport_->getPeerAddress(address); } - virtual folly::ssl::X509UniquePtr getPeerCert() const override { + folly::ssl::X509UniquePtr getPeerCert() const override { return transport_->getPeerCert(); } - virtual size_t getRawBytesReceived() const override { + size_t getRawBytesReceived() const override { return transport_->getRawBytesReceived(); } - virtual size_t getRawBytesWritten() const override { + size_t getRawBytesWritten() const override { return transport_->getRawBytesWritten(); } - virtual uint32_t getSendTimeout() const override { + uint32_t getSendTimeout() const override { return transport_->getSendTimeout(); } - virtual bool good() const override { + bool good() const override { return transport_->good(); } - virtual bool isDetachable() const override { + bool isDetachable() const override { return transport_->isDetachable(); } - virtual bool isEorTrackingEnabled() const override { + bool isEorTrackingEnabled() const override { return transport_->isEorTrackingEnabled(); } - virtual bool readable() const override { + bool readable() const override { return transport_->readable(); } - virtual bool writable() const override { + bool writable() const override { return transport_->writable(); } - virtual void setEorTracking(bool track) override { + void setEorTracking(bool track) override { return transport_->setEorTracking(track); } - virtual void setSendTimeout(uint32_t timeoutInMs) override { + void setSendTimeout(uint32_t timeoutInMs) override { transport_->setSendTimeout(timeoutInMs); } - virtual void shutdownWrite() override { + void shutdownWrite() override { transport_->shutdownWrite(); } - virtual void shutdownWriteNow() override { + void shutdownWriteNow() override { transport_->shutdownWriteNow(); } - virtual std::string getApplicationProtocol() noexcept override { + std::string getApplicationProtocol() noexcept override { return transport_->getApplicationProtocol(); } - virtual std::string getSecurityProtocol() const override { + std::string getSecurityProtocol() const override { return transport_->getSecurityProtocol(); } - virtual bool isReplaySafe() const override { + bool isReplaySafe() const override { return transport_->isReplaySafe(); } - virtual void setReplaySafetyCallback( + void setReplaySafetyCallback( folly::AsyncTransport::ReplaySafetyCallback* callback) override { transport_->setReplaySafetyCallback(callback); } protected: - virtual ~DecoratedAsyncTransportWrapper() {} + ~DecoratedAsyncTransportWrapper() override {} typename T::UniquePtr transport_; }; diff --git a/folly/io/async/DelayedDestruction.h b/folly/io/async/DelayedDestruction.h index cb00899e..c46b8ff0 100644 --- a/folly/io/async/DelayedDestruction.h +++ b/folly/io/async/DelayedDestruction.h @@ -94,7 +94,7 @@ class DelayedDestruction : public DelayedDestructionBase { * shared_ptr using a DelayedDestruction::Destructor as the second argument * to the shared_ptr constructor. */ - virtual ~DelayedDestruction() = default; + ~DelayedDestruction() override = default; DelayedDestruction() : destroyPending_(false) { diff --git a/folly/io/async/EventBase.h b/folly/io/async/EventBase.h index 487af054..81fda805 100644 --- a/folly/io/async/EventBase.h +++ b/folly/io/async/EventBase.h @@ -221,7 +221,7 @@ class EventBase : private boost::noncopyable, * observer, max latency and avg loop time. */ explicit EventBase(event_base* evb, bool enableTimeMeasurement = true); - ~EventBase(); + ~EventBase() override; /** * Runs the event loop. @@ -515,7 +515,7 @@ class EventBase : private boost::noncopyable, * first handler fired within that cycle. * */ - void bumpHandlingTime() override final; + void bumpHandlingTime() final; class SmoothLoopTime { public: @@ -617,16 +617,16 @@ class EventBase : private boost::noncopyable, // TimeoutManager void attachTimeoutManager( AsyncTimeout* obj, - TimeoutManager::InternalEnum internal) override final; + TimeoutManager::InternalEnum internal) final; - void detachTimeoutManager(AsyncTimeout* obj) override final; + void detachTimeoutManager(AsyncTimeout* obj) final; bool scheduleTimeout(AsyncTimeout* obj, TimeoutManager::timeout_type timeout) - override final; + final; - void cancelTimeout(AsyncTimeout* obj) override final; + void cancelTimeout(AsyncTimeout* obj) final; - bool isInTimeoutManagerThread() override final { + bool isInTimeoutManagerThread() final { return isInEventBaseThread(); } diff --git a/folly/io/async/EventBaseLocal.h b/folly/io/async/EventBaseLocal.h index 5b627f0f..b7d106a7 100644 --- a/folly/io/async/EventBaseLocal.h +++ b/folly/io/async/EventBaseLocal.h @@ -31,7 +31,7 @@ namespace detail { class EventBaseLocalBase : public EventBaseLocalBaseBase, boost::noncopyable { public: EventBaseLocalBase() {} - virtual ~EventBaseLocalBase(); + ~EventBaseLocalBase() override; void erase(EventBase& evb); void onEventBaseDestruction(EventBase& evb) override; diff --git a/folly/io/async/HHWheelTimer.h b/folly/io/async/HHWheelTimer.h index 844ff906..89cf1f17 100644 --- a/folly/io/async/HHWheelTimer.h +++ b/folly/io/async/HHWheelTimer.h @@ -254,7 +254,7 @@ class HHWheelTimer : private folly::AsyncTimeout, * Use destroy() instead. See the comments in DelayedDestruction for more * details. */ - virtual ~HHWheelTimer(); + ~HHWheelTimer() override; private: // Forbidden copy constructor and assignment operator @@ -262,7 +262,7 @@ class HHWheelTimer : private folly::AsyncTimeout, HHWheelTimer& operator=(HHWheelTimer const &) = delete; // Methods inherited from AsyncTimeout - virtual void timeoutExpired() noexcept; + void timeoutExpired() noexcept override; std::chrono::milliseconds interval_; std::chrono::milliseconds defaultTimeout_; diff --git a/folly/io/async/NotificationQueue.h b/folly/io/async/NotificationQueue.h index 3018a5d9..3b7d56d9 100644 --- a/folly/io/async/NotificationQueue.h +++ b/folly/io/async/NotificationQueue.h @@ -172,7 +172,7 @@ class NotificationQueue { void destroy() override; - virtual ~Consumer() {} + ~Consumer() override {} private: /** diff --git a/folly/io/async/VirtualEventBase.h b/folly/io/async/VirtualEventBase.h index 4719fdea..d02fd0e5 100644 --- a/folly/io/async/VirtualEventBase.h +++ b/folly/io/async/VirtualEventBase.h @@ -43,7 +43,7 @@ class VirtualEventBase : public folly::Executor, public folly::TimeoutManager { VirtualEventBase(const VirtualEventBase&) = delete; VirtualEventBase& operator=(const VirtualEventBase&) = delete; - ~VirtualEventBase(); + ~VirtualEventBase() override; EventBase& getEventBase() { return evb_; diff --git a/folly/io/async/WriteChainAsyncTransportWrapper.h b/folly/io/async/WriteChainAsyncTransportWrapper.h index cd147a45..db08daab 100644 --- a/folly/io/async/WriteChainAsyncTransportWrapper.h +++ b/folly/io/async/WriteChainAsyncTransportWrapper.h @@ -30,7 +30,7 @@ class WriteChainAsyncTransportWrapper : public: using DecoratedAsyncTransportWrapper::DecoratedAsyncTransportWrapper; - virtual void write( + void write( folly::AsyncTransportWrapper::WriteCallback* callback, const void* buf, size_t bytes, @@ -39,7 +39,7 @@ class WriteChainAsyncTransportWrapper : writeChain(callback, std::move(ioBuf), flags); } - virtual void writev( + void writev( folly::AsyncTransportWrapper::WriteCallback* callback, const iovec* vec, size_t count, @@ -65,7 +65,7 @@ class WriteChainAsyncTransportWrapper : * It only makes sense to use this class if you override writeChain, so force * derived classes to do that. */ - virtual void writeChain( + void writeChain( folly::AsyncTransportWrapper::WriteCallback* callback, std::unique_ptr&& buf, folly::WriteFlags flags = folly::WriteFlags::NONE) override = 0; diff --git a/folly/io/async/test/AsyncSSLSocketTest.cpp b/folly/io/async/test/AsyncSSLSocketTest.cpp index 3874f578..36a68027 100644 --- a/folly/io/async/test/AsyncSSLSocketTest.cpp +++ b/folly/io/async/test/AsyncSSLSocketTest.cpp @@ -1779,11 +1779,11 @@ TEST(AsyncSSLSocketTest, ConnectWriteReadCloseTFOWithTFOServerDisabled) { class ConnCallback : public AsyncSocket::ConnectCallback { public: - virtual void connectSuccess() noexcept override { + void connectSuccess() noexcept override { state = State::SUCCESS; } - virtual void connectErr(const AsyncSocketException& ex) noexcept override { + void connectErr(const AsyncSocketException& ex) noexcept override { state = State::ERROR; error = ex.what(); } diff --git a/folly/io/async/test/AsyncSSLSocketTest.h b/folly/io/async/test/AsyncSSLSocketTest.h index e4a73c19..d2acbf43 100644 --- a/folly/io/async/test/AsyncSSLSocketTest.h +++ b/folly/io/async/test/AsyncSSLSocketTest.h @@ -133,7 +133,7 @@ public: , exception(AsyncSocketException::UNKNOWN, "none") , mcb_(mcb) {} - ~WriteCallbackBase() { + ~WriteCallbackBase() override { EXPECT_EQ(STATE_SUCCEEDED, state); } @@ -145,7 +145,7 @@ public: } } - virtual void writeSuccess() noexcept override { + void writeSuccess() noexcept override { std::cerr << "writeSuccess" << std::endl; state = STATE_SUCCEEDED; } @@ -175,7 +175,7 @@ public: explicit ExpectWriteErrorCallback(SendMsgParamsCallbackBase* mcb = nullptr) : WriteCallbackBase(mcb) {} - ~ExpectWriteErrorCallback() { + ~ExpectWriteErrorCallback() override { EXPECT_EQ(STATE_FAILED, state); EXPECT_EQ(exception.type_, AsyncSocketException::AsyncSocketExceptionType::NETWORK_ERROR); @@ -203,7 +203,7 @@ public: explicit WriteCheckTimestampCallback(SendMsgParamsCallbackBase* mcb = nullptr) : WriteCallbackBase(mcb) {} - ~WriteCheckTimestampCallback() { + ~WriteCheckTimestampCallback() override { EXPECT_EQ(STATE_SUCCEEDED, state); EXPECT_TRUE(gotTimestamp_); EXPECT_TRUE(gotByteSeq_); @@ -283,7 +283,7 @@ public AsyncTransportWrapper::ReadCallback { explicit ReadCallbackBase(WriteCallbackBase* wcb) : wcb_(wcb), state(STATE_WAITING) {} - ~ReadCallbackBase() { + ~ReadCallbackBase() override { EXPECT_EQ(STATE_SUCCEEDED, state); } @@ -323,7 +323,7 @@ public: : ReadCallbackBase(wcb) , buffers() {} - ~ReadCallback() { + ~ReadCallback() override { for (std::vector::iterator it = buffers.begin(); it != buffers.end(); ++it) { @@ -539,7 +539,7 @@ public: cv_.wait(lock, [this] { return state != STATE_WAITING; }); } - ~HandshakeCallback() { + ~HandshakeCallback() override { EXPECT_EQ(STATE_SUCCEEDED, state); } @@ -570,7 +570,7 @@ public: SSLServerAcceptCallbackBase(hcb), timeout_(timeout) {} - virtual ~SSLServerAcceptCallback() { + ~SSLServerAcceptCallback() override { if (timeout_ > 0) { // if we set a timeout, we expect failure EXPECT_EQ(hcb_->state, STATE_FAILED); @@ -1038,7 +1038,7 @@ class RenegotiatingServer : public AsyncSSLSocket::HandshakeCB, socket_->sslAccept(this); } - ~RenegotiatingServer() { + ~RenegotiatingServer() override { socket_->setReadCB(nullptr); } @@ -1216,7 +1216,7 @@ class SSLClient : public AsyncSocket::ConnectCallback, memset(buf_, 'a', sizeof(buf_)); } - ~SSLClient() { + ~SSLClient() override { if (session_) { SSL_SESSION_free(session_); } diff --git a/folly/io/async/test/AsyncSocketTest.h b/folly/io/async/test/AsyncSocketTest.h index f6abde8b..b84251f7 100644 --- a/folly/io/async/test/AsyncSocketTest.h +++ b/folly/io/async/test/AsyncSocketTest.h @@ -96,7 +96,7 @@ class ReadCallback : public folly::AsyncTransportWrapper::ReadCallback { buffers(), maxBufferSz(_maxBufferSz) {} - ~ReadCallback() { + ~ReadCallback() override { for (std::vector::iterator it = buffers.begin(); it != buffers.end(); ++it) { diff --git a/folly/io/async/test/AsyncSocketTest2.h b/folly/io/async/test/AsyncSocketTest2.h index dacb8e54..407552ac 100644 --- a/folly/io/async/test/AsyncSocketTest2.h +++ b/folly/io/async/test/AsyncSocketTest2.h @@ -34,50 +34,50 @@ namespace test { class TestConnectionEventCallback : public AsyncServerSocket::ConnectionEventCallback { public: - virtual void onConnectionAccepted( + void onConnectionAccepted( const int /* socket */, const SocketAddress& /* addr */) noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); connectionAccepted_++; } - virtual void onConnectionAcceptError(const int /* err */) noexcept override { + void onConnectionAcceptError(const int /* err */) noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); connectionAcceptedError_++; } - virtual void onConnectionDropped( + void onConnectionDropped( const int /* socket */, const SocketAddress& /* addr */) noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); connectionDropped_++; } - virtual void onConnectionEnqueuedForAcceptorCallback( + void onConnectionEnqueuedForAcceptorCallback( const int /* socket */, const SocketAddress& /* addr */) noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); connectionEnqueuedForAcceptCallback_++; } - virtual void onConnectionDequeuedByAcceptorCallback( + void onConnectionDequeuedByAcceptorCallback( const int /* socket */, const SocketAddress& /* addr */) noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); connectionDequeuedByAcceptCallback_++; } - virtual void onBackoffStarted() noexcept override { + void onBackoffStarted() noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); backoffStarted_++; } - virtual void onBackoffEnded() noexcept override { + void onBackoffEnded() noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); backoffEnded_++; } - virtual void onBackoffError() noexcept override { + void onBackoffError() noexcept override { folly::RWSpinLock::WriteHolder holder(spinLock_); backoffError_++; } diff --git a/folly/io/async/test/DelayedDestructionTest.cpp b/folly/io/async/test/DelayedDestructionTest.cpp index 1f0c9597..7f05f5b6 100644 --- a/folly/io/async/test/DelayedDestructionTest.cpp +++ b/folly/io/async/test/DelayedDestructionTest.cpp @@ -20,8 +20,7 @@ using namespace folly; class DeleteGuarder : public DelayedDestruction { - - ~DeleteGuarder() { + ~DeleteGuarder() override { doFoo(); } diff --git a/folly/io/async/test/NotificationQueueTest.cpp b/folly/io/async/test/NotificationQueueTest.cpp index 7e5d9827..614f2303 100644 --- a/folly/io/async/test/NotificationQueueTest.cpp +++ b/folly/io/async/test/NotificationQueueTest.cpp @@ -369,7 +369,7 @@ void QueueTest::destroyCallback() { std::function *fn; protected: - virtual ~DestroyTestConsumer() = default; + ~DestroyTestConsumer() override = default; }; EventBase eventBase; diff --git a/folly/io/async/test/RequestContextTest.cpp b/folly/io/async/test/RequestContextTest.cpp index 2ec6bfed..750ff7fa 100644 --- a/folly/io/async/test/RequestContextTest.cpp +++ b/folly/io/async/test/RequestContextTest.cpp @@ -131,7 +131,7 @@ TEST(RequestContext, deadlockTest) { public: explicit DeadlockTestData(const std::string& val) : val_(val) {} - virtual ~DeadlockTestData() { + ~DeadlockTestData() override { RequestContext::get()->setContextData( val_, std::make_unique(1)); } diff --git a/folly/io/async/test/TestSSLServer.h b/folly/io/async/test/TestSSLServer.h index cc83a4b2..a25bbb89 100644 --- a/folly/io/async/test/TestSSLServer.h +++ b/folly/io/async/test/TestSSLServer.h @@ -47,7 +47,7 @@ class SSLServerAcceptCallbackBase : public AsyncServerSocket::AcceptCallback { explicit SSLServerAcceptCallbackBase(HandshakeCallback* hcb) : state(STATE_WAITING), hcb_(hcb) {} - ~SSLServerAcceptCallbackBase() { + ~SSLServerAcceptCallbackBase() override { EXPECT_EQ(STATE_SUCCEEDED, state); } diff --git a/folly/io/async/test/UndelayedDestruction.h b/folly/io/async/test/UndelayedDestruction.h index 28a7a85d..055fffe2 100644 --- a/folly/io/async/test/UndelayedDestruction.h +++ b/folly/io/async/test/UndelayedDestruction.h @@ -69,7 +69,7 @@ class UndelayedDestruction : public TDD { * the object directly from the event loop (e.g., directly from a * EventBase::LoopCallback), or when the event loop is stopped. */ - virtual ~UndelayedDestruction() { + ~UndelayedDestruction() override { // Crash if the caller is destroying us with outstanding destructor guards. if (this->getDestructorGuardCount() != 0) { abort(); diff --git a/folly/io/async/test/WriteChainAsyncTransportWrapperTest.cpp b/folly/io/async/test/WriteChainAsyncTransportWrapperTest.cpp index 7c1b803f..10cf02cc 100644 --- a/folly/io/async/test/WriteChainAsyncTransportWrapperTest.cpp +++ b/folly/io/async/test/WriteChainAsyncTransportWrapperTest.cpp @@ -44,8 +44,7 @@ class TestWriteChainAsyncTransportWrapper : } // Allow this to be constructed on the stack for easier testing. - virtual ~TestWriteChainAsyncTransportWrapper() { - } + ~TestWriteChainAsyncTransportWrapper() override {} }; MATCHER_P(BufMatches, expected, "") { diff --git a/folly/test/SingletonTest.cpp b/folly/test/SingletonTest.cpp index 7ed6f107..be95ea4d 100644 --- a/folly/test/SingletonTest.cpp +++ b/folly/test/SingletonTest.cpp @@ -499,7 +499,7 @@ class TestEagerInitParallelExecutor : public folly::Executor { } } - virtual ~TestEagerInitParallelExecutor() override { + ~TestEagerInitParallelExecutor() override { for (auto eb : eventBases_) { eb->runInEventBaseThread([eb] { eb->terminateLoopSoon(); }); } @@ -508,7 +508,7 @@ class TestEagerInitParallelExecutor : public folly::Executor { } } - virtual void add(folly::Func func) override { + void add(folly::Func func) override { const auto index = (counter_ ++) % eventBases_.size(); eventBases_[index]->add(std::move(func)); } diff --git a/folly/test/SmallLocksBenchmark.cpp b/folly/test/SmallLocksBenchmark.cpp index 28ecaeec..8a1d6a35 100644 --- a/folly/test/SmallLocksBenchmark.cpp +++ b/folly/test/SmallLocksBenchmark.cpp @@ -274,7 +274,7 @@ struct VirtualBase { struct VirtualImpl : VirtualBase { void foo() override { /* noop */ } - virtual ~VirtualImpl() {} + ~VirtualImpl() override {} }; #ifndef __clang__ diff --git a/folly/test/SubprocessTest.cpp b/folly/test/SubprocessTest.cpp index 74a822e3..70656954 100644 --- a/folly/test/SubprocessTest.cpp +++ b/folly/test/SubprocessTest.cpp @@ -281,7 +281,7 @@ struct WriteFileAfterFork : public Subprocess::DangerousPostForkPreExecCallback { explicit WriteFileAfterFork(std::string filename) : filename_(std::move(filename)) {} - virtual ~WriteFileAfterFork() {} + ~WriteFileAfterFork() override {} int operator()() override { return writeFile(std::string("ok"), filename_.c_str()) ? 0 : errno; } -- 2.34.1