This patch extends libclang by allowing it to record parsing operations to a temporary JSON file. The file is deleted after parsing succeeds. When a crash happens during parsing, the file is preserved and the client will be able to use it to generate a reproducer for the crash.
These files are not emitted by default, and the client has to specify the invocation emission path first.
rdar://35322543
I am just wondering - since we anticipate multi-threaded usage, shouldn't we synchronize access to all member variables mutable via public class interface?
Specifically - shouldn't we use one mutex per every mutating/reading method group?