You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@avro.apache.org by "Mikhail Koviazin (Jira)" <ji...@apache.org> on 2024/02/19 14:38:00 UTC
[jira] [Updated] (AVRO-3942) MemoryOutputStream yields a compiler warning
[ https://issues.apache.org/jira/browse/AVRO-3942?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mikhail Koviazin updated AVRO-3942:
-----------------------------------
Description:
Upon building with clang, MemoryOutputStream raises a compilation warning:
{code:java}
/home/parallels/workspace/avro/lang/c++/impl/Stream.cc:129:27: warning: class with destructor marked 'final' cannot be inherited from [-Wfinal-dtor-non-final-class]
120 | class MemoryOutputStream : public OutputStream {
| final
121 | public:
122 | const size_t chunkSize_;
123 | std::vector<uint8_t *> data_;
124 | size_t available_;
125 | size_t byteCount_;
126 |
127 | explicit MemoryOutputStream(size_t chunkSize) : chunkSize_(chunkSize),
128 | available_(0), byteCount_(0) {}
129 | ~MemoryOutputStream() final {
| ^
/home/parallels/workspace/avro/lang/c++/impl/Stream.cc:120:7: note: mark 'avro::MemoryOutputStream' as 'final' to silence this warning
120 | class MemoryOutputStream : public OutputStream {
| ^
{code}
It should be fixed by either marking the class as `final` or removing `final` keyword from destructor. I think the most logical one is the former. I can do this if there're no objections.
was:
Upon building with clang, MemoryOutputStream raises a compilation warning:
/home/parallels/workspace/avro/lang/c++/impl/Stream.cc:129:27: warning: class with destructor marked 'final' cannot be inherited from [-Wfinal-dtor-non-final-class]
120 | class MemoryOutputStream : public OutputStream {
| final
121 | public:
122 | const size_t chunkSize_;
123 | std::vector<uint8_t *> data_;
124 | size_t available_;
125 | size_t byteCount_;
126 |
127 | explicit MemoryOutputStream(size_t chunkSize) : chunkSize_(chunkSize),
128 | available_(0), byteCount_(0) {}
129 | ~MemoryOutputStream() final {
| ^
/home/parallels/workspace/avro/lang/c++/impl/Stream.cc:120:7: note: mark 'avro::MemoryOutputStream' as 'final' to silence this warning
120 | class MemoryOutputStream : public OutputStream {
| ^
It should be fixed by either marking the class as `final` or removing `final` keyword from destructor. I think the most logical one is the former. I can do this if there're no objections.
> MemoryOutputStream yields a compiler warning
> --------------------------------------------
>
> Key: AVRO-3942
> URL: https://issues.apache.org/jira/browse/AVRO-3942
> Project: Apache Avro
> Issue Type: Improvement
> Components: c++
> Reporter: Mikhail Koviazin
> Priority: Minor
>
> Upon building with clang, MemoryOutputStream raises a compilation warning:
>
>
> {code:java}
> /home/parallels/workspace/avro/lang/c++/impl/Stream.cc:129:27: warning: class with destructor marked 'final' cannot be inherited from [-Wfinal-dtor-non-final-class]
> 120 | class MemoryOutputStream : public OutputStream {
> | final
> 121 | public:
> 122 | const size_t chunkSize_;
> 123 | std::vector<uint8_t *> data_;
> 124 | size_t available_;
> 125 | size_t byteCount_;
> 126 |
> 127 | explicit MemoryOutputStream(size_t chunkSize) : chunkSize_(chunkSize),
> 128 | available_(0), byteCount_(0) {}
> 129 | ~MemoryOutputStream() final {
> | ^
> /home/parallels/workspace/avro/lang/c++/impl/Stream.cc:120:7: note: mark 'avro::MemoryOutputStream' as 'final' to silence this warning
> 120 | class MemoryOutputStream : public OutputStream {
> | ^
>
> {code}
>
> It should be fixed by either marking the class as `final` or removing `final` keyword from destructor. I think the most logical one is the former. I can do this if there're no objections.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)