<div class="gmail_quote">On Wed, Jun 29, 2011 at 8:19 PM, Richard Trieu <span dir="ltr"><<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
The recovery consumes the right parenthesis too early leading to Clang thinking there is a parenthesis imbalance when there isn't one.  This patch should fix this issue.</blockquote></div><br><div class="vimiumHUD" style="right: 150px; zoom: 100%; opacity: 0; display: none; ">
</div><div>I'm not sure this is the correct fix.</div><div><br></div><div>Above you change, when ParseExpressionList fails, we 'SkipUntil(tok::r_paren)', and then mark LHS as an error. Then fall through, and because LHS is now invalid, we 'SkipUntil(tok::r_paren)' a second time. I think the repeated calls are the problem here.</div>
<div><br></div><div>Because we skip to the r_paren on an invalid LHS, I think we can change the code to not skip any tokens when ParseExpressionList fails, and just mark LHS as an error. Falling through, we'll skip to r_paren in the common location.</div>
<div><br></div><div>Essentially, I'm suggesting we delete line 1263.</div><div><br></div><div>If Doug agrees (he's the one who I think understands this part of the parser the best, and he added that second skip) I've got your test case patched in, and have made that deletion with some spring cleaning around it.</div>