<div dir="ltr">Sam, any ideas whether this might be a dynamic matcher problem?<br><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 8, 2016 at 7:48 AM Aaron Ballman <<a href="mailto:aaron@aaronballman.com">aaron@aaronballman.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, Nov 8, 2016 at 5:28 AM, Malcolm Parsons<br class="gmail_msg">
<<a href="mailto:malcolm.parsons@gmail.com" class="gmail_msg" target="_blank">malcolm.parsons@gmail.com</a>> wrote:<br class="gmail_msg">
> On 7 November 2016 at 21:11, Aaron Ballman via cfe-dev<br class="gmail_msg">
> <<a href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br class="gmail_msg">
>> ifStmt( allOf( hasDescendant(ifStmt()), hasElse(anything()),<br class="gmail_msg">
>> unless(hasAncestor(ifStmt())) ) )<br class="gmail_msg">
>><br class="gmail_msg">
>> I think that this does not match the top-level if statement because<br class="gmail_msg">
>> hasDescendant(ifStmt()) will not be satisfied -- the top-level if<br class="gmail_msg">
>> statement has no sub statements that are also an if statement.<br class="gmail_msg">
><br class="gmail_msg">
> hasDescendant != hasChild.<br class="gmail_msg">
><br class="gmail_msg">
> It's the hasAncestor that is behaving strangely:<br class="gmail_msg">
><br class="gmail_msg">
> clang-query> match ifStmt(hasDescendant(ifStmt()), hasAncestor(ifStmt()))<br class="gmail_msg">
><br class="gmail_msg">
> Match #1:<br class="gmail_msg">
><br class="gmail_msg">
> ifstmt.c:5:3: note: "root" binds here<br class="gmail_msg">
>   if (a == b) {<br class="gmail_msg">
>   ^~~~~~~~~~~~~<br class="gmail_msg">
> 1 match.<br class="gmail_msg">
> clang-query> match ifStmt(hasDescendant(ifStmt()),<br class="gmail_msg">
> hasAncestor(ifStmt().bind("ancestor")))<br class="gmail_msg">
> 0 matches.<br class="gmail_msg">
<br class="gmail_msg">
Okay, that is really strange. Adding a .bind() should not alter the<br class="gmail_msg">
matches, as far as I'm aware. Manuel or Samuel, can you shed some<br class="gmail_msg">
light on this? I think it's a bug.<br class="gmail_msg">
<br class="gmail_msg">
~Aaron<br class="gmail_msg">
<br class="gmail_msg">
><br class="gmail_msg">
> --<br class="gmail_msg">
> Malcolm Parsons<br class="gmail_msg">
</blockquote></div></div>