Handle correctly shorthand assignment ops

The have slightly different semantics that were not originally accounted
for. This fixes #266.