Fix viable-source-types-for-generator-real looping thinko.
The loop over 'source-types' was meant to terminate if we ever get
'*'. However, it was for loop, and assinging empty list to
source-types had no effect. As result, the function would
sometimes return a list containing '*' and other types, which
other code did not expect and mishandled.