Skip to content
This repository was archived by the owner on Oct 12, 2022. It is now read-only.

Commit 68f59ed

Browse files
committed
use __traits(externDmangle) if supported by compiler
1 parent f7378d4 commit 68f59ed

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/core/internal/traits.d

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,12 @@ private template substInoutForm(T)
8888
/// used to declare an extern(D) function that is defined in a different module
8989
template externDFunc(string fqn, T:FT*, FT) if(is(FT == function))
9090
{
91-
static if (is(FT RT == return) && is(FT Args == function))
91+
static if (__traits(compiles, __traits(foo, void function())))
92+
{
93+
alias _wrap(alias T) = T; // fool the parser
94+
alias externDFunc = _wrap!(__traits(externDmangle, fqn, FT));
95+
}
96+
else static if (is(FT RT == return) && is(FT Args == function))
9297
{
9398
import core.demangle : mangleFunc;
9499
enum decl = {

0 commit comments

Comments
 (0)