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)