From 8a75cee99fb23f4e8a9a4f56821e8b68e2b482ff Mon Sep 17 00:00:00 2001 From: Dimitar Dobrev Date: Sun, 19 Sep 2021 02:00:08 +0300 Subject: [PATCH] Generate valid C++ for pure implemented dtors Signed-off-by: Dimitar Dobrev --- src/Generator/Passes/SymbolsCodeGenerator.cs | 5 ++++- tests/Common/Common.h | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Generator/Passes/SymbolsCodeGenerator.cs b/src/Generator/Passes/SymbolsCodeGenerator.cs index 6bdf2d79..dd9ad63d 100644 --- a/src/Generator/Passes/SymbolsCodeGenerator.cs +++ b/src/Generator/Passes/SymbolsCodeGenerator.cs @@ -401,7 +401,10 @@ namespace CppSharp.Passes WriteLine(" };"); if (abstractDtor != null && !implementedDtors.Contains(abstractDtor)) { - WriteLine($"{abstractDtor.Namespace.Name}::{abstractDtor.Name}() {{}}"); + if (string.IsNullOrEmpty(abstractDtor.Body)) + { + WriteLine($"{abstractDtor.Namespace.Name}::{abstractDtor.Name}() {{}}"); + } implementedDtors.Add(abstractDtor); } } diff --git a/tests/Common/Common.h b/tests/Common/Common.h index fae752a0..80f21d93 100644 --- a/tests/Common/Common.h +++ b/tests/Common/Common.h @@ -785,6 +785,16 @@ public: virtual ~PureDtor() = 0; }; +class PureImplementedDtor +{ +public: + virtual ~PureImplementedDtor() = 0; +}; + +PureImplementedDtor::~PureImplementedDtor() +{ +} + DLL_API void va_listFunction(va_list v); struct DLL_API TestNestedTypes