You're probably just running into a precedence issue. Parentheses will help unless it's also a pugs bug.
In any case, you can't do does directly after the assignment because it would apply to 1..5, not the entire declaration, unless the declaration slurps the pseudo-assignment up at a higher precedence than it ought.
Arguably we shouldn't be using = for pseudoassignment, but it's pretty engrained in the culture by now.
Comment on Re: [Perl 6] Initialization within complex declarations
Arguably, we shouldn't be using = for mutating assignment (set), only for functional assignment (let). We can use <- or := or ! for mutation. It's pretty engrained in the culture by now though, because of FORTRAN and C.