It would be more consistent with our coding style to have braces round the if's body.
Conversely, if you don't care about coding style within a macro, the braces between do and while are also not really needed: `do if (!(condition)) ProgrammingError(__VA_ARGS__); while (false)`
If `ProgrammingError` were ever changed to a macro that expands to more than one statement, the if-body's (missing) braces might actually matter, though.  So, of the two pairs of braces the coding style asks for, the one you've omitted has more scope for ending up necessary than the one you've included.