Thread overview
Why does the following program write the message 'Foo' twice?
Mar 19, 2014
Gary Willoughby
Mar 19, 2014
Vladimir Panteleev
Mar 19, 2014
Gary Willoughby
Mar 19, 2014
Dicebot
Mar 19, 2014
Dicebot
March 19, 2014
Why does the following program write the message 'Foo' twice?

void main(string[] args)
{
	pragma(msg, "Foo");
}
March 19, 2014
On Wednesday, 19 March 2014 at 10:08:50 UTC, Gary Willoughby wrote:
> Why does the following program write the message 'Foo' twice?
>
> void main(string[] args)
> {
> 	pragma(msg, "Foo");
> }

The message is not printed by the program, but by the compiler.

If you build the program via dmd, the message is only printed once.

If you use rdmd, it will be printed twice, because rdmd invokes dmd once to gather the program's dependencies, and a second time to actually build the program.
March 19, 2014
On Wednesday, 19 March 2014 at 10:08:50 UTC, Gary Willoughby
wrote:
> Why does the following program write the message 'Foo' twice?
>
> void main(string[] args)
> {
> 	pragma(msg, "Foo");
> }

Once upon compilation and once upon run-time. I don't know if it
is intended design but this is how `pragma(msg)` works if put
into function body.
March 19, 2014
Disregard my comment, Vladimir is right :)
March 19, 2014
On Wednesday, 19 March 2014 at 10:10:18 UTC, Vladimir Panteleev wrote:
> If you use rdmd, it will be printed twice, because rdmd invokes dmd once to gather the program's dependencies, and a second time to actually build the program.

Yes i'm using rdmd. Thanks.