diff options
author | Alp Toker <alp@nuanti.com> | 2014-01-07 02:35:33 +0000 |
---|---|---|
committer | Alp Toker <alp@nuanti.com> | 2014-01-07 02:35:33 +0000 |
commit | f990cefc7ee2b4946caf659c1b4cb474a97e8681 (patch) | |
tree | b4a71d7495c8ac58f44a0a5b4bbf7d047b50840e /clang/lib/Parse | |
parent | 4cb063cbf058bc6af596efdc78bc36160dc19654 (diff) | |
download | bcm5719-llvm-f990cefc7ee2b4946caf659c1b4cb474a97e8681.tar.gz bcm5719-llvm-f990cefc7ee2b4946caf659c1b4cb474a97e8681.zip |
Bring back magic constants in the digraph diagnostic
This backs out changes in commit r198605 and part of r198604, replacing the
original tok::kw_template with a slightly more obvious placeholder
tok::unknown.
llvm-svn: 198666
Diffstat (limited to 'clang/lib/Parse')
-rw-r--r-- | clang/lib/Parse/ParseExprCXX.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/clang/lib/Parse/ParseExprCXX.cpp b/clang/lib/Parse/ParseExprCXX.cpp index f5d545466af..9fd6d2afbc7 100644 --- a/clang/lib/Parse/ParseExprCXX.cpp +++ b/clang/lib/Parse/ParseExprCXX.cpp @@ -24,6 +24,20 @@ using namespace clang; +static int SelectDigraphErrorMessage(tok::TokenKind Kind) { + switch (Kind) { + // template name + case tok::unknown: return 0; + // casts + case tok::kw_const_cast: return 1; + case tok::kw_dynamic_cast: return 2; + case tok::kw_reinterpret_cast: return 3; + case tok::kw_static_cast: return 4; + default: + llvm_unreachable("Unknown type for digraph error message."); + } +} + // Are the two tokens adjacent in the same source file? bool Parser::areTokensAdjacent(const Token &First, const Token &Second) { SourceManager &SM = PP.getSourceManager(); @@ -44,7 +58,8 @@ static void FixDigraph(Parser &P, Preprocessor &PP, Token &DigraphToken, Range.setBegin(DigraphToken.getLocation()); Range.setEnd(ColonToken.getLocation()); P.Diag(DigraphToken.getLocation(), diag::err_missing_whitespace_digraph) - << Kind << FixItHint::CreateReplacement(Range, "< ::"); + << SelectDigraphErrorMessage(Kind) + << FixItHint::CreateReplacement(Range, "< ::"); // Update token information to reflect their change in token type. ColonToken.setKind(tok::coloncolon); @@ -80,8 +95,8 @@ void Parser::CheckForTemplateAndDigraph(Token &Next, ParsedType ObjectType, Template, MemberOfUnknownSpecialization)) return; - FixDigraph(*this, PP, Next, SecondToken, tok::annot_template_id, - /*AtDigraph*/ false); + FixDigraph(*this, PP, Next, SecondToken, tok::unknown, + /*AtDigraph*/false); } /// \brief Emits an error for a left parentheses after a double colon. |