From: Alp Toker Date: Mon, 6 Jan 2014 12:54:32 +0000 (+0000) Subject: Don't use magic constants in the digraph diagnostic X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=600d282cf74f13f56389122e1ece07ed24b6c153;p=clang Don't use magic constants in the digraph diagnostic git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198605 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 48446771ed..7e9272945c 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -641,9 +641,7 @@ def err_ctor_init_missing_comma : Error< def err_friend_decl_defines_type : Error< "cannot define a type in a friend declaration">; def err_missing_whitespace_digraph : Error< - "found '<::' after a " - "%select{template name|const_cast|dynamic_cast|reinterpret_cast|static_cast}0" - " which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?">; + "found '<::' after a %0 which forms the digraph '<:' (aka '[') and a ':', did you mean '< ::'?">; def ext_deleted_function : ExtWarn< "deleted function definitions are a C++11 extension">, InGroup; diff --git a/lib/Parse/ParseExprCXX.cpp b/lib/Parse/ParseExprCXX.cpp index 42e737004b..f5d545466a 100644 --- a/lib/Parse/ParseExprCXX.cpp +++ b/lib/Parse/ParseExprCXX.cpp @@ -24,18 +24,6 @@ using namespace clang; -static int SelectDigraphErrorMessage(tok::TokenKind Kind) { - switch (Kind) { - case tok::kw_template: return 0; - 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(); @@ -56,8 +44,7 @@ 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) - << SelectDigraphErrorMessage(Kind) - << FixItHint::CreateReplacement(Range, "< ::"); + << Kind << FixItHint::CreateReplacement(Range, "< ::"); // Update token information to reflect their change in token type. ColonToken.setKind(tok::coloncolon); @@ -93,8 +80,8 @@ void Parser::CheckForTemplateAndDigraph(Token &Next, ParsedType ObjectType, Template, MemberOfUnknownSpecialization)) return; - FixDigraph(*this, PP, Next, SecondToken, tok::kw_template, - /*AtDigraph*/false); + FixDigraph(*this, PP, Next, SecondToken, tok::annot_template_id, + /*AtDigraph*/ false); } /// \brief Emits an error for a left parentheses after a double colon.