Comment #0 by ellery-newcomer — 2009-09-16T20:12:35Z
test.d:
debug pragma(msg,"hi!");
void main() {}
$ dmd2 test
(no output)
$ dmd2 -debug test
hi!
$ dmd2 -debug=1 test
hi!
$ dmd2 -debug=ellery test
(no output) WHAT???????
Comment #1 by ellery-newcomer — 2009-09-16T20:23:48Z
a quick peek in the source shows that debug <=> debug(1)
is this sane behavior?
Comment #2 by ary — 2009-09-17T04:18:53Z
Yes, that's normal behaviour. And:
$ dmd2 -debug=ellery test
will print "hi!" if the code is:
debug(ellery) pragma(msg,"hi!");
void main() {}
I won't close this as invalid because the specification doesn't say exactly this. It says:
---
The debug condition is satisfied when the -debug switch is thrown on the compiler.
The debug ( Integer ) condition is satisfied when the debug level is >= Integer.
The debug ( Identifier ) condition is satisfied when the debug identifier matches Identifier.
---
It should say:
The debug condition is satisfied when the -debug switch is thrown on the compiler or when a debug level >= 1 is indicated.
(or something like that)
Comment #3 by ellery-newcomer — 2009-09-17T07:44:38Z
(In reply to comment #2)
> Yes, that's normal behaviour.
According to whom? The C preprocessor?
When I read the spec, I came away with the impression that debug should work like so:
debug { stuff } should get compiled if the compiler is given -debug or -debug={something}. Basically, I see it as a boolean. Are we in a debug compile?
debug(number) { stuff } should get compiled if the compiler is given -debug=n, where n >= number (and there's nothing that says debug(0) { stuff } will always get compiled)
wait, I'm seeing a pattern here 1 -> true, 0 -> false. That sorta makes sense.
debug(id) { stuff } should get compiled if the compiler is given -debug=id
Yeah, spec needs to be more precise. I would like to see -debug=id => debug_level=1, though.
Comment #4 by yebblies — 2011-06-12T22:11:46Z
*** Issue 3721 has been marked as a duplicate of this issue. ***
Comment #5 by andrej.mitrovich — 2013-02-06T17:25:47Z