Message() lambda uses Reason.Details as an input parameter for llvm::formatv(), but Reason in Message() is a local object.
Return value of llvm::formatv() contains references to its input arguments, thus Message() returns an object which contains a reference to Details field of the local object Reason.
This patch fixes this behavior by passing Reason as a reference to Message() to ensure that return value of Message() contains references to alive object and also prevents copying of InvalidName structure at passing it to makeError().
Provided test passes on Linux+GCC with or without this patch, but fails on Windows+VisualStudio without this patch.