This change updates Clang to check for an llvm::Expected<llvm::Regex>, instead
of constructing an invalid Regex and checking .isValid().
Since most of the uses already (silently) ignore invalid llvm::Regex objects,
I've not tried too hard to propagate construction-time errors.
If there *is* an error here, then implicitly converting the Expected instance to a bool doesn't mark the error as checked. I.e in asserts mode, you'll abort before you make it out of this if body. If that's really what you want, I think an assert would be a clearer / more lightweight way of doing it. This applies elsewhere in your patch: I think it makes sense to use Expected as a kind of exception mechanism, and not as a heavyweight assert.