Re: pragma mangle on extern(C) in function body

2019-01-16 Thread Sebastiaan Koppe via Digitalmars-d-learn
On Wednesday, 16 January 2019 at 19:59:02 UTC, Steven 
Schveighoffer wrote:
I'm guessing it's a missed case in the compiler, and not 
intentionally omitted.


-Steve


The workaround is quite silly. Seems like a parser issue.

---
pragma(mangle, "Foo")
extern(C) void foo();

mixin template T()
{
pragma(mangle, "Bar")
extern(C) void bar();
}

void main() {
mixin T!();// Hurrah!
}
---



Re: pragma mangle on extern(C) in function body

2019-01-16 Thread Steven Schveighoffer via Digitalmars-d-learn

On 1/16/19 2:41 PM, Sebastiaan Koppe wrote:
While it is perfectly ok to define an extern(C) function in a function 
method, I can't seem to get pragma(mangle, "...") on it to work.


---
pragma(mangle, "Foo")    // Ok
extern(C) void foo();

void main() {
     pragma(mangle, "Bar")    // Error
     extern(C) void bar();
}
---

Any idea why?


I found the same error, not too long ago.

I would note also, the error is not very good:

Error: unrecognized pragma(mangle)

Which is the same error you get if you put any unknown pragma identifier 
in there.


I'm guessing it's a missed case in the compiler, and not intentionally 
omitted.


-Steve


Re: pragma mangle on extern(C) in function body

2019-01-16 Thread Sebastiaan Koppe via Digitalmars-d-learn
On Wednesday, 16 January 2019 at 19:41:04 UTC, Sebastiaan Koppe 
wrote:
While it is perfectly ok to define an extern(C) function in a 
function method, I can't seem to get pragma(mangle, "...") on 
it to work.


---
pragma(mangle, "Foo")// Ok
extern(C) void foo();

void main() {
pragma(mangle, "Bar")// Error
extern(C) void bar();
}
---

Any idea why?


See also:

https://issues.dlang.org/show_bug.cgi?id=15843
https://issues.dlang.org/show_bug.cgi?id=17638
https://issues.dlang.org/show_bug.cgi?id=19149


pragma mangle on extern(C) in function body

2019-01-16 Thread Sebastiaan Koppe via Digitalmars-d-learn
While it is perfectly ok to define an extern(C) function in a 
function method, I can't seem to get pragma(mangle, "...") on it 
to work.


---
pragma(mangle, "Foo")// Ok
extern(C) void foo();

void main() {
pragma(mangle, "Bar")// Error
extern(C) void bar();
}
---

Any idea why?