class SourceRange;
class DiagnosticBuilder;
class IdentifierInfo;
+ class LangOptions;
// Import the diagnostic enums themselves.
namespace diag {
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
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);
// 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);
// Process the source file.
ProcessInputFile(*PP, PPFactory, InFile, ProgAction);
- HeaderInfo.ClearFileInfo();
+ HeaderInfo.ClearFileInfo();
+ TextDiagClient->setLangOptions(0);
}
if (Verbose)