Leading to a corrupt C++ vtable, e.g.: extern(C++) class C { extern(D) void virtualFoo1() {} void virtualFoo2() {} } dmd -HC ... => class C { public: // ignoring extern () block because of linkage virtual void virtualFoo2(); }; Overridden virtual functions can probably be still ignored, but new virtual functions need a dummy declaration on the C++ side.
@MoonlightSentinel updated dlang/dmd pull request #11872 "dtoh: Emit placeholders for skipped virtual functions" fixing this issue: - Fix 21271: Emit placeholders for skipped virtual functions (dtoh) This ensures proper vtable layout for classes which have extern(D) functions https://github.com/dlang/dmd/pull/11872
dlang/dmd pull request #11872 "dtoh: Emit placeholders for skipped virtual functions" was merged into master: - 2e9015871a058a0b16ace6bc9e285d3de4027b46 by MoonlightSentinel: Fix 21271: Emit placeholders for skipped virtual functions (dtoh) This ensures proper vtable layout for classes which have extern(D) functions https://github.com/dlang/dmd/pull/11872