<div dir="ltr">Woops. Clearly didn't look closely enough at the AST.<br><br>CursorKind.MEMBER_REF_EXPR is what I'm looking for.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 3, 2017 at 5:42 PM, Vanush Vaswani <span dir="ltr"><<a href="mailto:vanush@gmail.com" target="_blank">vanush@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><span style="font-size:12.8px">Hi All</span><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I'm trying to find code matching the below pattern</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">====</div><div style="font-size:12.8px">...</div><div style="font-size:12.8px">if (foo->bar->data_x) {</div><div style="font-size:12.8px">...</div><div style="font-size:12.8px">====</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">I'm trying to find all references to the type of 'bar' appearing within an if statement, and with each reference, list the struct member being accessed within type 'bar' (be it data_x, or data_y or data_z). The dereference "hierarchy" may be variable (i.e to get to the type of 'bar'), but it should always contain the type of 'bar' before accessing the last member.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">After dumping an example AST and observing the structure of 'IfStmt', it looks like I need to finger on 'DeclRefExpr'. But when I check the type, it is always of the 'top' of the hierarchy (i.e the 'spelling' attribute will report 'foo').</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">My question is how do I get from here to the rest of the chain of struct dereferences, and finally to the member declaration of the struct of type 'bar'?</div></div>
</blockquote></div><br></div>