<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">(copying to list with compressed patches, because the series of patches resulted in a 400kb message)</div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br></div><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">All right, I think this ready to be merged into trunk!<div><br></div><div>Since there's really way too much here, I'll try to condense the important things:</div><div>- CallEvent is a wrapper around some part of the source that triggers a call to something (function, constructor, method, etc.)</div><div>- CallEvent is path-sensitive; it captures the state and location context where the call happens.</div><div>- CallEvent and its subclasses replace CallOrObjCMessage everywhere possible.</div><div>- CallEvent subclass ObjCMethodCall and <i>its</i> subclasses replace ObjCMessage everywhere possible.</div><div>- Inlining for C++ constructors is now totally feasible, but still disabled because we don't track destructors yet.</div><div>- New checker callbacks check::preCall and check::postCall should be called any time ExprEngine processes something that could call outside code.</div><div>- Calls.h attached for your convenience; everything else is in the ten patch files. (Sorry! If you'd prefer per-patch review or something, we can do that too.)</div><div><div><br></div><div>% git log1</div><div><div>5ed29a5 [analyzer] Convert existing checkers to use check::preCall and check::postCall.</div><div>a1940c6 [analyzer] Add generic preCall and postCall checks.</div><div>ef97dfa [analyzer] Convert CXXConstructExpr over to use CallEvent for evaluation.</div><div>ebf2c52 [analyzer] Use CallEvent for inlining and call default-evaluation.</div><div>94dde7d [analyzer] Finish replacing ObjCMessage with ObjCMethodDecl and friends.</div><div>7afaef7 [analyzer] Begin replacing ObjCMessage with ObjCMethodCall and friends.</div><div>ba3cb76 [analyzer] Move the last bits of CallOrObjCMessage over to CallEvent.</div><div>321bb87 [analyzer] Convert CallAndMessageChecker and ObjCSelfInitChecker to CallEvent.</div><div>30502d6 [analyzer] Convert RetainCountChecker to use CallEvent as much as possible.</div><div>bc61f9d [analyzer] Add a new abstraction over all types of calls: CallEvent</div></div><div><br></div><div></div></div></div></div></div></body></html>