The patch aims to use CallEvents interface in a more principled manner, and also to highlight what this checker really does. It in fact checks for 5 different kinds of errors (from checkPreCall, that is):
- Invalid function pointer related errors
- Call of methods from an invalid C++ this object
- Function calls with incorrect amount of parameters
- Invalid arguments for operator delete
- Pass of uninitialized values to pass-by-value parameters
In a previous patch I complained that this checker is responsible for emitting a lot of different diagnostics all under core.CallAndMessage's name, and this patch shows where we could start to assign different diagnostics to different entities.