From 78fe3e05a9ea1fc670e5cb0bc54f54e064595e2c Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Mon, 20 Aug 2012 17:37:52 +0000 Subject: [PATCH] PR13619: Make sure we're not at EOF before looking at NextToken(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162212 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Parse/ParseExprCXX.cpp | 9 +++++---- test/Parser/cxx-casting.cpp | 3 +++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp index f2ba4c6e11..baad166814 100644 --- a/lib/Parse/ParseExprCXX.cpp +++ b/lib/Parse/ParseExprCXX.cpp @@ -926,10 +926,11 @@ ExprResult Parser::ParseCXXCasts() { // Check for "<::" which is parsed as "[:". If found, fix token stream, // diagnose error, suggest fix, and recover parsing. - Token Next = NextToken(); - if (Tok.is(tok::l_square) && Tok.getLength() == 2 && Next.is(tok::colon) && - areTokensAdjacent(Tok, Next)) - FixDigraph(*this, PP, Tok, Next, Kind, /*AtDigraph*/true); + if (Tok.is(tok::l_square) && Tok.getLength() == 2) { + Token Next = NextToken(); + if (Next.is(tok::colon) && areTokensAdjacent(Tok, Next)) + FixDigraph(*this, PP, Tok, Next, Kind, /*AtDigraph*/true); + } if (ExpectAndConsume(tok::less, diag::err_expected_less_after, CastName)) return ExprError(); diff --git a/test/Parser/cxx-casting.cpp b/test/Parser/cxx-casting.cpp index e7d05b4047..01980d3341 100644 --- a/test/Parser/cxx-casting.cpp +++ b/test/Parser/cxx-casting.cpp @@ -89,3 +89,6 @@ void test3() { // expected-error {{expected expression}} \ // expected-error {{expected unqualified-id}} } + +// PR13619. Must be at end of file. +int n = reinterpret_cast // expected-error {{expected '<'}} expected-error {{expected ';'}} -- 2.40.0