fixed obscure but probably important bug

if (cond)
    object.method (args, ...)!

would fail, because we were generating the temp variable assignment
twice