Allow `do while` to take a guard, fixes #263