Ping. On Fri, Jun 29, 2012 at 12:49 PM, Richard Smith <[email protected]>wrote:
> On Fri, Jun 29, 2012 at 11:46 AM, Sean Silva <[email protected]> wrote: > >> + case ANK_TentativeDecl: >> + case ANK_TemplateName: >> + // These two shouldn't happen. >> + case ANK_Unresolved: >> break; >> >> assert? >> > > Sorry, I forgot to update that comment after some refactoring. The second > case is possible (but only for ill-formed code), and the first case is > completely harmless. I've updated and simplified this code to remove the > switch entirely: > > case tok::identifier: { > Token Next = NextToken(); > if (Next.is(tok::colon)) { // C99 6.8.1: labeled-statement > // identifier ':' statement > return ParseLabeledStatement(Attrs); > } > > // Look up the identifier, and typo-correct it to a keyword if it's not > // found. > if (Next.isNot(tok::coloncolon)) { > // CorrectionCandidateCallback by default allows typo-correction to > // anything which can appear at the start of a statement. > CorrectionCandidateCallback DefaultValidator; > if (TryAnnotateName(/*IsAddressOfOperand*/false, &DefaultValidator) > == ANK_Error) { > // Handle errors here by skipping up to the next semicolon or '}', > and > // eat the semicolon if that's what stopped us. > SkipUntil(tok::r_brace, /*StopAtSemi=*/true, /*DontConsume=*/true); > if (Tok.is(tok::semi)) > ConsumeToken(); > return StmtError(); > } > > // If the identifier was typo-corrected, try again. > if (Tok.isNot(tok::identifier)) > goto Retry; > } > > // Fall through > } > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
