Fix incorrect use of .join on list causing a traceback

tmpcond is a list, so .join won't work.

While investigating this behavior I also noticed that a role is evaluated several times (and so its `when' condition added to tmpcond several times) during parsing - is this ok?