They need to take balanced braces/parens/brackets (i.e. only escaped if they are possibly unbalanced), so that Rust source can still be parsed without having to run the macro expander concurrently.
And, it looks like do is no longer a keyword at all, I must've missed that part of the do-removal patch! So it is possible to call that macro do.
Like range! takes range!('[' 0 , Inf ')' )?
Is 'do' still a keyword? I remember it being removed, pretty much everywhere. I just assumed it was thrown away.