<div class="gmail_quote">On Mon, May 7, 2012 at 4:23 AM, Will Wilson <span dir="ltr"><<a href="mailto:will@indefiant.com" target="_blank">will@indefiant.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">> You should consume the 'typename' token, and try to recover as if the<br>
> 'typename' keyword were not present, following the logic present later on in<br>
> that function. As a special case, if that later logic were to find that the<br>
> tokens after the 'typename' keyword can't be annotated as a type name, you<br>
> should produce a hard error (even with MS extensions enabled).<br>
><br>
> (In particular, for 'typename identifier', it will be the identifier you<br>
> annotate, not the 'typename' keyword.)<br>
<br>
</div>Sorry for the delay! I've attached an updated patch (with test cases)<br>
that seems to do the job. I've also had to update two other tests to<br>
allow for the different code paths (and thus different errors)<br>
followed due to the attempt at recovering from the error.<br>
<br>
All tests pass locally. It'd be great if some other people could<br>
verify it as well.<br></blockquote></div><br><div>A few things: This is still only producing a warning if 'typename' is followed by something which isn't a type name in MS mode. That needs to be fixed to produce an error in that case. Also, it would be great to apply typo correction in this case, and to avoid duplicating the code from the second half of the function.</div>
<div><br></div><div>How about just recursively calling TryAnnotateTypeOrScopeToken after consuming the invald 'typename' token, then emitting the error diagnostic if it fails or we're not in MS mode, and the warning diagnostic otherwise?</div>