From aa5bf2e8dc01f9835efef76222dc440a5c18b160 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 19 Apr 2009 07:44:08 +0000 Subject: [PATCH] implement compiler support for -fno-diagnostics-fixit-info, rdar://6805442 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69525 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Frontend/TextDiagnosticPrinter.h | 7 +++++-- lib/Frontend/TextDiagnosticPrinter.cpp | 5 ++--- tools/clang-cc/clang-cc.cpp | 11 +++++++++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/include/clang/Frontend/TextDiagnosticPrinter.h b/include/clang/Frontend/TextDiagnosticPrinter.h index afdafb2b34..ef8dae5e35 100644 --- a/include/clang/Frontend/TextDiagnosticPrinter.h +++ b/include/clang/Frontend/TextDiagnosticPrinter.h @@ -38,17 +38,20 @@ class TextDiagnosticPrinter : public DiagnosticClient { bool ShowLocation; bool PrintRangeInfo; bool PrintDiagnosticOption; + bool PrintFixItInfo; public: TextDiagnosticPrinter(llvm::raw_ostream &os, bool showColumn = true, bool caretDiagnistics = true, bool showLocation = true, bool printRangeInfo = true, - bool printDiagnosticOption = true) + bool printDiagnosticOption = true, + bool printFixItInfo = true) : OS(os), LangOpts(0), LastCaretDiagnosticWasNote(false), ShowColumn(showColumn), CaretDiagnostics(caretDiagnistics), ShowLocation(showLocation), PrintRangeInfo(printRangeInfo), - PrintDiagnosticOption(printDiagnosticOption) {} + PrintDiagnosticOption(printDiagnosticOption), + PrintFixItInfo(printFixItInfo) {} void setLangOptions(const LangOptions *LO) { LangOpts = LO; diff --git a/lib/Frontend/TextDiagnosticPrinter.cpp b/lib/Frontend/TextDiagnosticPrinter.cpp index 9583780870..7d3c4c23ff 100644 --- a/lib/Frontend/TextDiagnosticPrinter.cpp +++ b/lib/Frontend/TextDiagnosticPrinter.cpp @@ -207,10 +207,9 @@ void TextDiagnosticPrinter::EmitCaretDiagnostic(SourceLocation Loc, OS << SourceLine << '\n'; OS << CaretLine << '\n'; - if (NumHints) { + if (NumHints && PrintFixItInfo) { std::string InsertionLine; - for (const CodeModificationHint *Hint = Hints, - *LastHint = Hints + NumHints; + for (const CodeModificationHint *Hint = Hints, *LastHint = Hints + NumHints; Hint != LastHint; ++Hint) { if (Hint->InsertionLoc.isValid()) { // We have an insertion hint. Determine whether the inserted diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index 4e5ff5d259..e69c62bb39 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -299,6 +299,11 @@ NoCaretDiagnostics("fno-caret-diagnostics", llvm::cl::desc("Do not include source line and caret with" " diagnostics")); +static llvm::cl::opt +NoDiagnosticsFixIt("fno-diagnostics-fixit-info", + llvm::cl::desc("Do not include fixit information in" + " diagnostics")); + static llvm::cl::opt PrintSourceRangeInfo("fprint-source-range-info", llvm::cl::desc("Print source range spans in numeric form")); @@ -1873,7 +1878,8 @@ public: !NoCaretDiagnostics, !NoShowLocation, PrintSourceRangeInfo, - PrintDiagnosticOption)); + PrintDiagnosticOption, + !NoDiagnosticsFixIt)); } virtual void setLangOptions(const LangOptions *LO) { @@ -2329,7 +2335,8 @@ int main(int argc, char **argv) { !NoCaretDiagnostics, !NoShowLocation, PrintSourceRangeInfo, - PrintDiagnosticOption)); + PrintDiagnosticOption, + !NoDiagnosticsFixIt)); } else { DiagClient.reset(CreateHTMLDiagnosticClient(HTMLDiag)); } -- 2.40.0