The analyzer does not model C++ temporary destructors completely and so reports false alarms about leaks of memory allocated by the internals of shared_ptr:
std::shared_ptr<int> p(new int(1)); p = nullptr; // 'Potential leak of memory pointed to by field __cntrl_'
To avoid these spurious diagnostics, this patch suppresses all diagnostics where the end of the path is inside a method in std::shared_ptr.
It also reorganizes the tests for suppressions in the C++ standard library to use a separate simulated header for library functions with bugs that were deliberately inserted to test suppression. This will prevent other tests from using these as models.
rdar://problem/23652766
You mean std::shared_ptr here?
Also, perhaps it's better to move this example into separate fake method; if this header emulator is used in another test, wouldn't the author of that test be surprised to see that operator=() is modeled that way?