From eda5c4b5b8fa390b39199e7240d2f3a797c655bc Mon Sep 17 00:00:00 2001 From: Rainer Schuetze Date: Sat, 15 Apr 2017 09:20:30 +0200 Subject: [PATCH] fix issues 14591, 17310: change mangling of extern(Pascal) to "Np" and extern(Objective-C) to "No" --- src/ddmd/dmangle.d | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/ddmd/dmangle.d b/src/ddmd/dmangle.d index 97b2084fbe91..de7fe43bd414 100644 --- a/src/ddmd/dmangle.d +++ b/src/ddmd/dmangle.d @@ -75,7 +75,7 @@ private immutable char[TMAX] mangleChar = // K // ref // L // lazy // M // has this, or scope - // N // Nh:vector Ng:wild + // N // Nh:vector Ng:wild, No:Objective-C function, Np:Pascal function // O // shared Tpointer : 'P', // Q @@ -83,7 +83,6 @@ private immutable char[TMAX] mangleChar = Tstruct : 'S', // T // Ttypedef // U // C function - // V // Pascal function // W // Windows function // X // variadic T t...) // Y // variadic T t,...) @@ -247,31 +246,29 @@ public: t.inuse++; if (modMask != t.mod) MODtoDecoBuffer(buf, t.mod); - ubyte mc; switch (t.linkage) { case LINKd: - mc = 'F'; + buf.writeByte('F'); break; case LINKc: - mc = 'U'; + buf.writeByte('U'); break; case LINKwindows: - mc = 'W'; + buf.writeByte('W'); break; case LINKpascal: - mc = 'V'; + buf.writestring("Np"); break; case LINKcpp: - mc = 'R'; + buf.writeByte('R'); break; case LINKobjc: - mc = 'Y'; + buf.writestring("No"); break; default: assert(0); } - buf.writeByte(mc); if (ta.purity || ta.isnothrow || ta.isnogc || ta.isproperty || ta.isref || ta.trust || ta.isreturn || ta.isscope) { if (ta.purity)