In particular, I reliably get an error here when I have a discrete vector parameter, since val is a list and setdiff(val.names, val) can make val.names empty even when it was length(par$values) > 1L before.
Should I, in general, assume that mlrMBO wasn't designed to handle vector parameters and give up right now, or is this worth a fix?