The grammar for ConditionalStatement, i.e. a conditional compilation block within a function, is defined as follows:
ConditionalStatement:
Condition Statement
Condition Statement else Statement
whereas on statement.html, we have
Statement:
;
NonEmptyStatement
ScopeBlockStatement
This is implying:
(a) that debug, version and static if create a scope, which is contrary to their design
(b) that a statement of the form
static if (...);
is valid, contrary to a design principle of D whereby ';' for an empty body of something is prevented to avoid a common typo.
It should be changed to
ConditionalStatement:
Condition NoScopeNonEmptyStatement
Condition NoScopeNonEmptyStatement else NoScopeNonEmptyStatement