diff options
author | Andy Gibbs <andyg1001@hotmail.co.uk> | 2012-11-17 19:16:52 +0000 |
---|---|---|
committer | Andy Gibbs <andyg1001@hotmail.co.uk> | 2012-11-17 19:16:52 +0000 |
commit | 97f8461a2c553f68a258612d2322e4281c3f0915 (patch) | |
tree | 6b5036827ca26138a9cd9dd548c56c3246f1b3b6 /lib | |
parent | 02a176871d91bba3004e4f94b2d4d588ae4b2122 (diff) |
Made the "expected string literal" diagnostic more expressive
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168267 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Lex/PPMacroExpansion.cpp | 3 | ||||
-rw-r--r-- | lib/Lex/Pragma.cpp | 7 | ||||
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 7 | ||||
-rw-r--r-- | lib/Parse/ParseDecl.cpp | 3 | ||||
-rw-r--r-- | lib/Parse/ParseDeclCXX.cpp | 3 | ||||
-rw-r--r-- | lib/Parse/Parser.cpp | 3 |
6 files changed, 18 insertions, 8 deletions
diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index 9f962b027f..6baa593e78 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -1290,7 +1290,8 @@ void Preprocessor::ExpandBuiltinMacro(Token &Tok) { LexUnexpandedToken(Tok); std::string WarningName; SourceLocation StrStartLoc = Tok.getLocation(); - if (!FinishLexStringLiteral(Tok, WarningName, /*MacroExpansion=*/false)) { + if (!FinishLexStringLiteral(Tok, WarningName, "'__has_warning'", + /*MacroExpansion=*/false)) { // Eat tokens until ')'. while (Tok.isNot(tok::r_paren) && Tok.isNot(tok::eod) diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp index 0c1c9dbee5..783588e1f7 100644 --- a/lib/Lex/Pragma.cpp +++ b/lib/Lex/Pragma.cpp @@ -503,6 +503,7 @@ void Preprocessor::HandlePragmaComment(Token &Tok) { Lex(Tok); std::string ArgumentString; if (Tok.is(tok::comma) && !LexStringLiteral(Tok, ArgumentString, + "pragma comment", /*MacroExpansion=*/true)) return; @@ -559,7 +560,8 @@ void Preprocessor::HandlePragmaMessage(Token &Tok) { } std::string MessageString; - if (!FinishLexStringLiteral(Tok, MessageString, /*MacroExpansion=*/true)) + if (!FinishLexStringLiteral(Tok, MessageString, "pragma message", + /*MacroExpansion=*/true)) return; if (ExpectClosingParen) { @@ -1039,7 +1041,8 @@ public: SourceLocation StringLoc = Tok.getLocation(); std::string WarningName; - if (!PP.FinishLexStringLiteral(Tok, WarningName, /*MacroExpansion=*/false)) + if (!PP.FinishLexStringLiteral(Tok, WarningName, "pragma diagnostic", + /*MacroExpansion=*/false)) return; if (Tok.isNot(tok::eod)) { diff --git a/lib/Lex/Preprocessor.cpp b/lib/Lex/Preprocessor.cpp index 52d6bb6a83..9488584105 100644 --- a/lib/Lex/Preprocessor.cpp +++ b/lib/Lex/Preprocessor.cpp @@ -691,10 +691,12 @@ void Preprocessor::LexAfterModuleImport(Token &Result) { } bool Preprocessor::FinishLexStringLiteral(Token &Result, std::string &String, + const char *DiagnosticTag, bool AllowMacroExpansion) { // We need at least one string literal. if (Result.isNot(tok::string_literal)) { - Diag(Result, diag::err_expected_string_literal); + Diag(Result, diag::err_expected_string_literal) + << /*Source='in...'*/0 << DiagnosticTag; return false; } @@ -720,7 +722,8 @@ bool Preprocessor::FinishLexStringLiteral(Token &Result, std::string &String, return false; if (Literal.Pascal) { - Diag(StrToks[0].getLocation(), diag::err_expected_string_literal); + Diag(StrToks[0].getLocation(), diag::err_expected_string_literal) + << /*Source='in...'*/0 << DiagnosticTag; return false; } diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index d898447ab5..7c5b153140 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -735,7 +735,8 @@ void Parser::ParseAvailabilityAttribute(IdentifierInfo &Availability, ConsumeToken(); if (Keyword == Ident_message) { if (!isTokenStringLiteral()) { - Diag(Tok, diag::err_expected_string_literal); + Diag(Tok, diag::err_expected_string_literal) + << /*Source='availability attribute'*/2; SkipUntil(tok::r_paren); return; } diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 0d785af3ef..b8ebd9b6a7 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -637,7 +637,8 @@ Decl *Parser::ParseStaticAssertDeclaration(SourceLocation &DeclEnd){ return 0; if (!isTokenStringLiteral()) { - Diag(Tok, diag::err_expected_string_literal); + Diag(Tok, diag::err_expected_string_literal) + << /*Source='static_assert'*/1; SkipMalformedDecl(); return 0; } diff --git a/lib/Parse/Parser.cpp b/lib/Parse/Parser.cpp index f4cdd619ce..dfffe8150f 100644 --- a/lib/Parse/Parser.cpp +++ b/lib/Parse/Parser.cpp @@ -1263,7 +1263,8 @@ Parser::ExprResult Parser::ParseAsmStringLiteral() { return ExprError(); } default: - Diag(Tok, diag::err_expected_string_literal); + Diag(Tok, diag::err_expected_string_literal) + << /*Source='in...'*/0 << "'asm'"; return ExprError(); } |