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???????
a quick peek in the source shows that debug <=> debug(1) is this sane behavior?
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)
(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.
*** Issue 3721 has been marked as a duplicate of this issue. ***
https://github.com/D-Programming-Language/d-programming-language.org/pull/256
Commits pushed to master at https://github.com/D-Programming-Language/d-programming-language.org https://github.com/D-Programming-Language/d-programming-language.org/commit/74ab0d4e6ba28611ebcf2b58187b9a5527f2370b Fixes Issue 3321 - Debug switch is underdocumented. https://github.com/D-Programming-Language/d-programming-language.org/commit/7c316bbe55c6d932b63efafc133f1477cf718edc Merge pull request #256 from AndrejMitrovic/Fix3321 Issue 3321 - Debug switch is underdocumented.