Jelajahi Sumber

Everywhere: Write dtors for types with incomplete members out-of-line

These are rejected by Clang (19) trunk as a result of
https://github.com/llvm/llvm-project/pull/77753.
Daniel Bertalan 1 tahun lalu
induk
melakukan
bf1f631f25
26 mengubah file dengan 42 tambahan dan 9 penghapusan
  1. 2 0
      Userland/Libraries/LibCore/NetworkJob.cpp
  2. 1 1
      Userland/Libraries/LibCore/NetworkJob.h
  3. 2 0
      Userland/Libraries/LibGfx/ImageFormats/JBIG2Loader.cpp
  4. 1 1
      Userland/Libraries/LibGfx/ImageFormats/JBIG2Loader.h
  5. 2 0
      Userland/Libraries/LibGfx/ImageFormats/JPEG2000Loader.cpp
  6. 1 1
      Userland/Libraries/LibGfx/ImageFormats/JPEG2000Loader.h
  7. 2 0
      Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp
  8. 1 1
      Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.h
  9. 2 0
      Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.cpp
  10. 1 1
      Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h
  11. 2 0
      Userland/Libraries/LibJS/CyclicModule.cpp
  12. 2 0
      Userland/Libraries/LibJS/CyclicModule.h
  13. 2 0
      Userland/Libraries/LibJS/Runtime/AsyncGenerator.cpp
  14. 1 1
      Userland/Libraries/LibJS/Runtime/AsyncGenerator.h
  15. 2 0
      Userland/Libraries/LibJS/SourceTextModule.cpp
  16. 2 0
      Userland/Libraries/LibJS/SourceTextModule.h
  17. 2 0
      Userland/Libraries/LibProtocol/RequestClient.cpp
  18. 1 0
      Userland/Libraries/LibProtocol/RequestClient.h
  19. 2 0
      Userland/Libraries/LibWeb/CSS/FontFace.cpp
  20. 1 1
      Userland/Libraries/LibWeb/CSS/FontFace.h
  21. 2 0
      Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp
  22. 1 1
      Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h
  23. 2 0
      Userland/Services/WebContent/ConnectionFromClient.cpp
  24. 1 1
      Userland/Services/WebContent/ConnectionFromClient.h
  25. 2 0
      Userland/Services/WebContent/PageClient.cpp
  26. 2 0
      Userland/Services/WebContent/PageClient.h

+ 2 - 0
Userland/Libraries/LibCore/NetworkJob.cpp

@@ -16,6 +16,8 @@ NetworkJob::NetworkJob(Stream& output_stream)
 {
 {
 }
 }
 
 
+NetworkJob::~NetworkJob() = default;
+
 void NetworkJob::did_finish(NonnullRefPtr<NetworkResponse>&& response)
 void NetworkJob::did_finish(NonnullRefPtr<NetworkResponse>&& response)
 {
 {
     if (is_cancelled())
     if (is_cancelled())

+ 1 - 1
Userland/Libraries/LibCore/NetworkJob.h

@@ -25,7 +25,7 @@ public:
         ProtocolFailed,
         ProtocolFailed,
         Cancelled,
         Cancelled,
     };
     };
-    virtual ~NetworkJob() override = default;
+    virtual ~NetworkJob() override;
 
 
     // Could fire twice, after Headers and after Trailers!
     // Could fire twice, after Headers and after Trailers!
     Function<void(HTTP::HeaderMap const& response_headers, Optional<u32> response_code)> on_headers_received;
     Function<void(HTTP::HeaderMap const& response_headers, Optional<u32> response_code)> on_headers_received;

+ 2 - 0
Userland/Libraries/LibGfx/ImageFormats/JBIG2Loader.cpp

@@ -2627,6 +2627,8 @@ JBIG2ImageDecoderPlugin::JBIG2ImageDecoderPlugin()
     m_context = make<JBIG2LoadingContext>();
     m_context = make<JBIG2LoadingContext>();
 }
 }
 
 
+JBIG2ImageDecoderPlugin::~JBIG2ImageDecoderPlugin() = default;
+
 IntSize JBIG2ImageDecoderPlugin::size()
 IntSize JBIG2ImageDecoderPlugin::size()
 {
 {
     return m_context->page.size;
     return m_context->page.size;

+ 1 - 1
Userland/Libraries/LibGfx/ImageFormats/JBIG2Loader.h

@@ -19,7 +19,7 @@ public:
     static bool sniff(ReadonlyBytes);
     static bool sniff(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
 
 
-    virtual ~JBIG2ImageDecoderPlugin() override = default;
+    virtual ~JBIG2ImageDecoderPlugin() override;
 
 
     virtual IntSize size() override;
     virtual IntSize size() override;
 
 

+ 2 - 0
Userland/Libraries/LibGfx/ImageFormats/JPEG2000Loader.cpp

@@ -988,6 +988,8 @@ JPEG2000ImageDecoderPlugin::JPEG2000ImageDecoderPlugin()
     m_context = make<JPEG2000LoadingContext>();
     m_context = make<JPEG2000LoadingContext>();
 }
 }
 
 
+JPEG2000ImageDecoderPlugin::~JPEG2000ImageDecoderPlugin() = default;
+
 IntSize JPEG2000ImageDecoderPlugin::size()
 IntSize JPEG2000ImageDecoderPlugin::size()
 {
 {
     return m_context->size;
     return m_context->size;

+ 1 - 1
Userland/Libraries/LibGfx/ImageFormats/JPEG2000Loader.h

@@ -37,7 +37,7 @@ public:
     static bool sniff(ReadonlyBytes);
     static bool sniff(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
 
 
-    virtual ~JPEG2000ImageDecoderPlugin() override = default;
+    virtual ~JPEG2000ImageDecoderPlugin() override;
 
 
     virtual IntSize size() override;
     virtual IntSize size() override;
 
 

+ 2 - 0
Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp

@@ -748,6 +748,8 @@ TIFFImageDecoderPlugin::TIFFImageDecoderPlugin(NonnullOwnPtr<FixedMemoryStream>
     m_context = make<TIFF::TIFFLoadingContext>(move(stream));
     m_context = make<TIFF::TIFFLoadingContext>(move(stream));
 }
 }
 
 
+TIFFImageDecoderPlugin::~TIFFImageDecoderPlugin() = default;
+
 bool TIFFImageDecoderPlugin::sniff(ReadonlyBytes bytes)
 bool TIFFImageDecoderPlugin::sniff(ReadonlyBytes bytes)
 {
 {
     if (bytes.size() < 4)
     if (bytes.size() < 4)

+ 1 - 1
Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.h

@@ -38,7 +38,7 @@ public:
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ExifMetadata>> read_exif_metadata(ReadonlyBytes);
     static ErrorOr<NonnullOwnPtr<ExifMetadata>> read_exif_metadata(ReadonlyBytes);
 
 
-    virtual ~TIFFImageDecoderPlugin() override = default;
+    virtual ~TIFFImageDecoderPlugin() override;
 
 
     virtual IntSize size() override;
     virtual IntSize size() override;
 
 

+ 2 - 0
Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.cpp

@@ -550,6 +550,8 @@ TinyVGImageDecoderPlugin::TinyVGImageDecoderPlugin(ReadonlyBytes bytes)
 {
 {
 }
 }
 
 
+TinyVGImageDecoderPlugin::~TinyVGImageDecoderPlugin() = default;
+
 ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> TinyVGImageDecoderPlugin::create(ReadonlyBytes bytes)
 ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> TinyVGImageDecoderPlugin::create(ReadonlyBytes bytes)
 {
 {
     auto plugin = TRY(adopt_nonnull_own_or_enomem(new (nothrow) TinyVGImageDecoderPlugin(bytes)));
     auto plugin = TRY(adopt_nonnull_own_or_enomem(new (nothrow) TinyVGImageDecoderPlugin(bytes)));

+ 1 - 1
Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h

@@ -86,7 +86,7 @@ public:
     virtual NaturalFrameFormat natural_frame_format() const override { return NaturalFrameFormat::Vector; }
     virtual NaturalFrameFormat natural_frame_format() const override { return NaturalFrameFormat::Vector; }
     virtual ErrorOr<VectorImageFrameDescriptor> vector_frame(size_t index) override;
     virtual ErrorOr<VectorImageFrameDescriptor> vector_frame(size_t index) override;
 
 
-    virtual ~TinyVGImageDecoderPlugin() override = default;
+    virtual ~TinyVGImageDecoderPlugin() override;
 
 
 private:
 private:
     TinyVGImageDecoderPlugin(ReadonlyBytes);
     TinyVGImageDecoderPlugin(ReadonlyBytes);

+ 2 - 0
Userland/Libraries/LibJS/CyclicModule.cpp

@@ -24,6 +24,8 @@ CyclicModule::CyclicModule(Realm& realm, StringView filename, bool has_top_level
 {
 {
 }
 }
 
 
+CyclicModule::~CyclicModule() = default;
+
 void CyclicModule::visit_edges(Cell::Visitor& visitor)
 void CyclicModule::visit_edges(Cell::Visitor& visitor)
 {
 {
     Base::visit_edges(visitor);
     Base::visit_edges(visitor);

+ 2 - 0
Userland/Libraries/LibJS/CyclicModule.h

@@ -28,6 +28,8 @@ class CyclicModule : public Module {
     JS_DECLARE_ALLOCATOR(CyclicModule);
     JS_DECLARE_ALLOCATOR(CyclicModule);
 
 
 public:
 public:
+    virtual ~CyclicModule() override;
+
     // Note: Do not call these methods directly unless you are HostResolveImportedModule.
     // Note: Do not call these methods directly unless you are HostResolveImportedModule.
     //       Badges cannot be used because other hosts must be able to call this (and it is called recursively)
     //       Badges cannot be used because other hosts must be able to call this (and it is called recursively)
     virtual ThrowCompletionOr<void> link(VM& vm) override final;
     virtual ThrowCompletionOr<void> link(VM& vm) override final;

+ 2 - 0
Userland/Libraries/LibJS/Runtime/AsyncGenerator.cpp

@@ -34,6 +34,8 @@ AsyncGenerator::AsyncGenerator(Realm&, Object& prototype, NonnullOwnPtr<Executio
 {
 {
 }
 }
 
 
+AsyncGenerator::~AsyncGenerator() = default;
+
 void AsyncGenerator::visit_edges(Cell::Visitor& visitor)
 void AsyncGenerator::visit_edges(Cell::Visitor& visitor)
 {
 {
     Base::visit_edges(visitor);
     Base::visit_edges(visitor);

+ 1 - 1
Userland/Libraries/LibJS/Runtime/AsyncGenerator.h

@@ -30,7 +30,7 @@ public:
 
 
     static ThrowCompletionOr<NonnullGCPtr<AsyncGenerator>> create(Realm&, Value, ECMAScriptFunctionObject*, NonnullOwnPtr<ExecutionContext>);
     static ThrowCompletionOr<NonnullGCPtr<AsyncGenerator>> create(Realm&, Value, ECMAScriptFunctionObject*, NonnullOwnPtr<ExecutionContext>);
 
 
-    virtual ~AsyncGenerator() override = default;
+    virtual ~AsyncGenerator() override;
 
 
     void async_generator_enqueue(Completion, NonnullGCPtr<PromiseCapability>);
     void async_generator_enqueue(Completion, NonnullGCPtr<PromiseCapability>);
     ThrowCompletionOr<void> resume(VM&, Completion completion);
     ThrowCompletionOr<void> resume(VM&, Completion completion);

+ 2 - 0
Userland/Libraries/LibJS/SourceTextModule.cpp

@@ -116,6 +116,8 @@ SourceTextModule::SourceTextModule(Realm& realm, StringView filename, Script::Ho
 {
 {
 }
 }
 
 
+SourceTextModule::~SourceTextModule() = default;
+
 void SourceTextModule::visit_edges(Cell::Visitor& visitor)
 void SourceTextModule::visit_edges(Cell::Visitor& visitor)
 {
 {
     Base::visit_edges(visitor);
     Base::visit_edges(visitor);

+ 2 - 0
Userland/Libraries/LibJS/SourceTextModule.h

@@ -19,6 +19,8 @@ class SourceTextModule final : public CyclicModule {
     JS_DECLARE_ALLOCATOR(SourceTextModule);
     JS_DECLARE_ALLOCATOR(SourceTextModule);
 
 
 public:
 public:
+    virtual ~SourceTextModule() override;
+
     static Result<NonnullGCPtr<SourceTextModule>, Vector<ParserError>> parse(StringView source_text, Realm&, StringView filename = {}, Script::HostDefined* host_defined = nullptr);
     static Result<NonnullGCPtr<SourceTextModule>, Vector<ParserError>> parse(StringView source_text, Realm&, StringView filename = {}, Script::HostDefined* host_defined = nullptr);
 
 
     Program const& parse_node() const { return *m_ecmascript_code; }
     Program const& parse_node() const { return *m_ecmascript_code; }

+ 2 - 0
Userland/Libraries/LibProtocol/RequestClient.cpp

@@ -14,6 +14,8 @@ RequestClient::RequestClient(NonnullOwnPtr<Core::LocalSocket> socket)
 {
 {
 }
 }
 
 
+RequestClient::~RequestClient() = default;
+
 void RequestClient::die()
 void RequestClient::die()
 {
 {
     // FIXME: Gracefully handle this, or relaunch and reconnect to RequestServer.
     // FIXME: Gracefully handle this, or relaunch and reconnect to RequestServer.

+ 1 - 0
Userland/Libraries/LibProtocol/RequestClient.h

@@ -25,6 +25,7 @@ class RequestClient final
 
 
 public:
 public:
     explicit RequestClient(NonnullOwnPtr<Core::LocalSocket>);
     explicit RequestClient(NonnullOwnPtr<Core::LocalSocket>);
+    virtual ~RequestClient() override;
 
 
     RefPtr<Request> start_request(ByteString const& method, URL::URL const&, HTTP::HeaderMap const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {});
     RefPtr<Request> start_request(ByteString const& method, URL::URL const&, HTTP::HeaderMap const& request_headers = {}, ReadonlyBytes request_body = {}, Core::ProxyData const& = {});
 
 

+ 2 - 0
Userland/Libraries/LibWeb/CSS/FontFace.cpp

@@ -198,6 +198,8 @@ FontFace::FontFace(JS::Realm& realm, JS::NonnullGCPtr<WebIDL::Promise> font_stat
         m_status = Bindings::FontFaceLoadStatus::Error;
         m_status = Bindings::FontFaceLoadStatus::Error;
 }
 }
 
 
+FontFace::~FontFace() = default;
+
 void FontFace::initialize(JS::Realm& realm)
 void FontFace::initialize(JS::Realm& realm)
 {
 {
     Base::initialize(realm);
     Base::initialize(realm);

+ 1 - 1
Userland/Libraries/LibWeb/CSS/FontFace.h

@@ -35,7 +35,7 @@ public:
     using FontFaceSource = Variant<String, JS::Handle<WebIDL::BufferSource>>;
     using FontFaceSource = Variant<String, JS::Handle<WebIDL::BufferSource>>;
 
 
     [[nodiscard]] static JS::NonnullGCPtr<FontFace> construct_impl(JS::Realm&, String family, FontFaceSource source, FontFaceDescriptors const& descriptors);
     [[nodiscard]] static JS::NonnullGCPtr<FontFace> construct_impl(JS::Realm&, String family, FontFaceSource source, FontFaceDescriptors const& descriptors);
-    virtual ~FontFace() override = default;
+    virtual ~FontFace() override;
 
 
     String family() const { return m_family; }
     String family() const { return m_family; }
     WebIDL::ExceptionOr<void> set_family(String const&);
     WebIDL::ExceptionOr<void> set_family(String const&);

+ 2 - 0
Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.cpp

@@ -26,6 +26,8 @@ ImageStyleValue::ImageStyleValue(URL::URL const& url)
 {
 {
 }
 }
 
 
+ImageStyleValue::~ImageStyleValue() = default;
+
 void ImageStyleValue::load_any_resources(DOM::Document& document)
 void ImageStyleValue::load_any_resources(DOM::Document& document)
 {
 {
     if (m_image_request)
     if (m_image_request)

+ 1 - 1
Userland/Libraries/LibWeb/CSS/StyleValues/ImageStyleValue.h

@@ -26,7 +26,7 @@ public:
     {
     {
         return adopt_ref(*new (nothrow) ImageStyleValue(url));
         return adopt_ref(*new (nothrow) ImageStyleValue(url));
     }
     }
-    virtual ~ImageStyleValue() override = default;
+    virtual ~ImageStyleValue() override;
 
 
     void visit_edges(JS::Cell::Visitor& visitor) const
     void visit_edges(JS::Cell::Visitor& visitor) const
     {
     {

+ 2 - 0
Userland/Services/WebContent/ConnectionFromClient.cpp

@@ -58,6 +58,8 @@ ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::LocalSocket> sock
     async_notify_process_information({ ::getpid() });
     async_notify_process_information({ ::getpid() });
 }
 }
 
 
+ConnectionFromClient::~ConnectionFromClient() = default;
+
 void ConnectionFromClient::die()
 void ConnectionFromClient::die()
 {
 {
     Web::Platform::EventLoopPlugin::the().quit();
     Web::Platform::EventLoopPlugin::the().quit();

+ 1 - 1
Userland/Services/WebContent/ConnectionFromClient.h

@@ -33,7 +33,7 @@ class ConnectionFromClient final
     C_OBJECT(ConnectionFromClient);
     C_OBJECT(ConnectionFromClient);
 
 
 public:
 public:
-    ~ConnectionFromClient() override = default;
+    ~ConnectionFromClient() override;
 
 
     virtual void die() override;
     virtual void die() override;
 
 

+ 2 - 0
Userland/Services/WebContent/PageClient.cpp

@@ -70,6 +70,8 @@ PageClient::PageClient(PageHost& owner, u64 id)
 #endif
 #endif
 }
 }
 
 
+PageClient::~PageClient() = default;
+
 void PageClient::schedule_repaint()
 void PageClient::schedule_repaint()
 {
 {
     if (m_paint_state != PaintState::Ready) {
     if (m_paint_state != PaintState::Ready) {

+ 2 - 0
Userland/Services/WebContent/PageClient.h

@@ -29,6 +29,8 @@ class PageClient final : public Web::PageClient {
 public:
 public:
     static JS::NonnullGCPtr<PageClient> create(JS::VM& vm, PageHost& page_host, u64 id);
     static JS::NonnullGCPtr<PageClient> create(JS::VM& vm, PageHost& page_host, u64 id);
 
 
+    virtual ~PageClient() override;
+
     static void set_use_gpu_painter();
     static void set_use_gpu_painter();
     static void set_use_experimental_cpu_transform_support();
     static void set_use_experimental_cpu_transform_support();