allow macros and diagnostics inside a block
fix compound spanning over and over in certain conditions