diff options
Diffstat (limited to 'lib/Lex')
-rw-r--r-- | lib/Lex/PPMacroExpansion.cpp | 3 | ||||
-rw-r--r-- | lib/Lex/Pragma.cpp | 7 | ||||
-rw-r--r-- | lib/Lex/Preprocessor.cpp | 7 |
3 files changed, 12 insertions, 5 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; } |