summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/Diagnostic.h8
-rw-r--r--clang/include/clang/Frontend/TextDiagnosticPrinter.h4
-rw-r--r--clang/tools/clang-cc/clang-cc.cpp9
3 files changed, 13 insertions, 8 deletions
diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h
index 87489257cc5..9c0a02ca878 100644
--- a/clang/include/clang/Basic/Diagnostic.h
+++ b/clang/include/clang/Basic/Diagnostic.h
@@ -27,6 +27,7 @@ namespace clang {
class SourceRange;
class DiagnosticBuilder;
class IdentifierInfo;
+ class LangOptions;
// Import the diagnostic enums themselves.
namespace diag {
@@ -667,6 +668,13 @@ class DiagnosticClient {
public:
virtual ~DiagnosticClient();
+ /// setLangOptions - This is set by clients of diagnostics when they know the
+ /// language parameters of the diagnostics that may be sent through. Note
+ /// that this can change over time if a DiagClient has multiple languages sent
+ /// through it. It may also be set to null (e.g. when processing command line
+ /// options).
+ virtual void setLangOptions(const LangOptions *LO) {}
+
/// IncludeInDiagnosticCounts - This method (whose default implementation
/// returns true) indicates whether the diagnostics handled by this
/// DiagnosticClient should be included in the number of diagnostics
diff --git a/clang/include/clang/Frontend/TextDiagnosticPrinter.h b/clang/include/clang/Frontend/TextDiagnosticPrinter.h
index 9341b89f56a..afdafb2b34a 100644
--- a/clang/include/clang/Frontend/TextDiagnosticPrinter.h
+++ b/clang/include/clang/Frontend/TextDiagnosticPrinter.h
@@ -50,8 +50,8 @@ public:
PrintRangeInfo(printRangeInfo),
PrintDiagnosticOption(printDiagnosticOption) {}
- void SetLangOpts(const LangOptions &LO) {
- LangOpts = &LO;
+ void setLangOptions(const LangOptions *LO) {
+ LangOpts = LO;
}
void PrintIncludeStack(SourceLocation Loc, const SourceManager &SM);
diff --git a/clang/tools/clang-cc/clang-cc.cpp b/clang/tools/clang-cc/clang-cc.cpp
index e9e5c3744a9..81d1e397904 100644
--- a/clang/tools/clang-cc/clang-cc.cpp
+++ b/clang/tools/clang-cc/clang-cc.cpp
@@ -2301,11 +2301,7 @@ int main(int argc, char **argv) {
// Initialize language options, inferring file types from input filenames.
LangOptions LangInfo;
-
- if (!VerifyDiagnostics)
- static_cast<TextDiagnosticPrinter*>(TextDiagClient)
- ->SetLangOpts(LangInfo);
-
+ TextDiagClient->setLangOptions(&LangInfo);
InitializeBaseLanguage();
LangKind LK = GetLanguage(InFile);
@@ -2346,7 +2342,8 @@ int main(int argc, char **argv) {
// Process the source file.
ProcessInputFile(*PP, PPFactory, InFile, ProgAction);
- HeaderInfo.ClearFileInfo();
+ HeaderInfo.ClearFileInfo();
+ TextDiagClient->setLangOptions(0);
}
if (Verbose)
OpenPOWER on IntegriCloud