Need to suppress compiler warnings in generated code from clang on macOS
ryanofsky opened this issue · comments
Ryan Ofsky commented
Reported bitcoin/bitcoin#10102 (review) by @Sjors
When building on macOS, using capnp 0.9.1 via homebrew and chaincodelabs/libmultiprocess@34ce921, I get flooded with warnings like this:
./interfaces/chain.h:227:18: note: overridden virtual function is here virtual void initWarning(const bilingual_str& message) = 0; ^ In file included from ipc/capnp/node.cpp:9: In file included from ./ipc/capnp/node-types.h:11: In file included from ./ipc/capnp/wallet.capnp.proxy-types.h:6: In file included from ./ipc/capnp/wallet.capnp.proxy.h:7: In file included from ./ipc/capnp/wallet.h:9: ./ipc/capnp/chain.capnp.proxy.h:1414:26: warning: 'initError' overrides a member function but is not marked 'override' [-Wsuggest-override] typename M35::Result initError(M35::Param<0> message);
Also a bunch of these:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/memory:2644:9: warning: destructor called on non-final 'mp::ProxyClient<ipc::capnp::messages::NotifyHeaderTipCallback>' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor] __get_elem()->~_Tp();
Ryan Ofsky commented
I'm not sure about the virtual destructor warnings. That seems bad and potentially there is a real bug or leak there.
The override warnings probably need a fix like #40 that was made to fix the same issue in GCC
Ryan Ofsky commented
I was able to reproduce basically the same warnings with clang 13.0.0 on linux and added fixes in #62. Thanks for reporting!