<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Mon, 2 Jul 2018 at 11:09, George Karpenkov via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Quite a bit of code in the static analyzer is either duplicated or is using roundabout constructs<br>
to deal in the same way with calls of different type: CallExpr, CXXConstructExpr, ObjCMessageExpr.<br>
<br>
What would be the objections against introducing a very simple abstract superclass for those?<br>
Only a few methods would be required:<br>
<br>
 - arguments() and iterators over those<br>
 - return type<br>
 - source location<br></blockquote><div><br></div><div>That seems reasonable to me (though as Artem points out, only arguments() seems relevant). Maybe InvokeExpr? (That matches the terminology the C++ standard uses, at least.)</div><div><br></div><div>It'd probably be useful to have a getDirectCallee() member or similar too.</div></div></div>