r373922 added checks for a few tokens that, following an ) make it
unlikely that the ) is the closing paren of a cast expression. The
specific check for tok::l_square there introduced a regression for
casts of Obj-C calls, like:
(cast)[func arg]
From the tests added in r373922, I believe the tok::l_square case is added to
capture the case where a non-cast ) is directly followed by an
attribute specifier, like:
int f(int x) [[noreturn]];
I've specialized the code to look for such attribute specifier instead
of tok::l_square in general. Also, I added a regression test and moved
the test cases added in r373922 to an already existing place documenting
other instances of historically misidentified casts.