I'm almost done, but some tests are failing because the call to D.isFunctionDeclarator() is not in the outside 'if'. It doesn't filter out pointers to member functions, functions with no parameters and a reference return type (these can't be variable declarations), the last one I don't even understand.<div>

<br></div><div><div>struct S {</div><div>    int n;</div><div>};</div><div><br></div><div>void test() {</div><div>  </div><div> S &foor();</div><div>  </div><div> int (S::*memberFunction)();</div><div> </div><div> int a;</div>

<div> S(a)()->n;</div><div> auto(a)()->n;</div><div>}</div></div>