Skip to content

Commit 8a75cee

Browse files
committed
Generate valid C++ for pure implemented dtors
Signed-off-by: Dimitar Dobrev <[email protected]>
1 parent 50feab0 commit 8a75cee

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/Generator/Passes/SymbolsCodeGenerator.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,10 @@ private void ImplementIfAbstract(Class @class)
401401
WriteLine(" };");
402402
if (abstractDtor != null && !implementedDtors.Contains(abstractDtor))
403403
{
404-
WriteLine($"{abstractDtor.Namespace.Name}::{abstractDtor.Name}() {{}}");
404+
if (string.IsNullOrEmpty(abstractDtor.Body))
405+
{
406+
WriteLine($"{abstractDtor.Namespace.Name}::{abstractDtor.Name}() {{}}");
407+
}
405408
implementedDtors.Add(abstractDtor);
406409
}
407410
}

tests/Common/Common.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,16 @@ class PureDtor
785785
virtual ~PureDtor() = 0;
786786
};
787787

788+
class PureImplementedDtor
789+
{
790+
public:
791+
virtual ~PureImplementedDtor() = 0;
792+
};
793+
794+
PureImplementedDtor::~PureImplementedDtor()
795+
{
796+
}
797+
788798
DLL_API void va_listFunction(va_list v);
789799

790800
struct DLL_API TestNestedTypes

0 commit comments

Comments
 (0)