From c4e67e29edeb60c195726812a8317707b45ab258 Mon Sep 17 00:00:00 2001 From: Owen Voorhees Date: Sun, 19 Apr 2020 07:59:25 -0700 Subject: [PATCH] [Diagnostics] Add -diagnostic-style=(llvm|swift) to control printed output This default formatting style remains the same "LLVM style". "Swift style" is what was previously enabled via -enable-experimental-diagnostic-formatting --- include/swift/Basic/DiagnosticOptions.h | 4 +++- .../Frontend/PrintingDiagnosticConsumer.h | 10 +++++++--- include/swift/Option/FrontendOptions.td | 4 ---- include/swift/Option/Options.td | 7 +++++++ lib/Driver/ToolChains.cpp | 1 + lib/Frontend/CompilerInvocation.cpp | 18 ++++++++++++++++-- lib/Frontend/PrintingDiagnosticConsumer.cpp | 8 ++++++-- lib/FrontendTool/FrontendTool.cpp | 6 ++---- test/Driver/color-diagnostics.swift | 2 +- test/diagnostics/educational-notes.swift | 4 ++-- .../pretty-printed-diagnostics.swift | 2 +- .../pretty-printed-diags-in-clang-buffer.swift | 2 +- ...ty-printed-source-loc-directive-diags.swift | 2 +- 13 files changed, 48 insertions(+), 22 deletions(-) diff --git a/include/swift/Basic/DiagnosticOptions.h b/include/swift/Basic/DiagnosticOptions.h index 58531d5908641..31e6149412692 100644 --- a/include/swift/Basic/DiagnosticOptions.h +++ b/include/swift/Basic/DiagnosticOptions.h @@ -32,6 +32,8 @@ class DiagnosticOptions { VerifyAndApplyFixes } VerifyMode = NoVerify; + enum FormattingStyle { LLVM, Swift }; + /// Indicates whether to allow diagnostics for \c locations if /// \c VerifyMode is not \c NoVerify. bool VerifyIgnoreUnknown = false; @@ -61,7 +63,7 @@ class DiagnosticOptions { // If set to true, use the more descriptive experimental formatting style for // diagnostics. - bool EnableExperimentalFormatting = false; + FormattingStyle PrintedFormattingStyle = FormattingStyle::LLVM; std::string DiagnosticDocumentationPath = ""; diff --git a/include/swift/Frontend/PrintingDiagnosticConsumer.h b/include/swift/Frontend/PrintingDiagnosticConsumer.h index a4720ce5c6f51..cbbca307f6297 100644 --- a/include/swift/Frontend/PrintingDiagnosticConsumer.h +++ b/include/swift/Frontend/PrintingDiagnosticConsumer.h @@ -18,8 +18,9 @@ #ifndef SWIFT_PRINTINGDIAGNOSTICCONSUMER_H #define SWIFT_PRINTINGDIAGNOSTICCONSUMER_H -#include "swift/Basic/LLVM.h" #include "swift/AST/DiagnosticConsumer.h" +#include "swift/Basic/DiagnosticOptions.h" +#include "swift/Basic/LLVM.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Support/Process.h" @@ -33,7 +34,8 @@ class PrintingDiagnosticConsumer : public DiagnosticConsumer { bool ForceColors = false; bool PrintEducationalNotes = false; bool DidErrorOccur = false; - bool ExperimentalFormattingEnabled = false; + DiagnosticOptions::FormattingStyle FormattingStyle = + DiagnosticOptions::FormattingStyle::LLVM; // The current snippet used to display an error/warning/remark and the notes // implicitly associated with it. Uses `std::unique_ptr` so that // `AnnotatedSourceSnippet` can be forward declared. @@ -65,7 +67,9 @@ class PrintingDiagnosticConsumer : public DiagnosticConsumer { PrintEducationalNotes = ShouldPrint; } - void enableExperimentalFormatting() { ExperimentalFormattingEnabled = true; } + void setFormattingStyle(DiagnosticOptions::FormattingStyle style) { + FormattingStyle = style; + } bool didErrorOccur() { return DidErrorOccur; diff --git a/include/swift/Option/FrontendOptions.td b/include/swift/Option/FrontendOptions.td index c8168fde7d545..5d640b7588c11 100644 --- a/include/swift/Option/FrontendOptions.td +++ b/include/swift/Option/FrontendOptions.td @@ -131,10 +131,6 @@ def enable_cross_import_overlays : Flag<["-"], "enable-cross-import-overlays">, def disable_cross_import_overlays : Flag<["-"], "disable-cross-import-overlays">, HelpText<"Do not automatically import declared cross-import overlays.">; -def enable_experimental_diagnostic_formatting : - Flag<["-"], "enable-experimental-diagnostic-formatting">, - HelpText<"Enable experimental diagnostic formatting features.">; - def diagnostic_documentation_path : Separate<["-"], "diagnostic-documentation-path">, MetaVarName<"">, HelpText<"Path to diagnostic documentation resources">; diff --git a/include/swift/Option/Options.td b/include/swift/Option/Options.td index a430124cc7f27..b771b48b3895d 100644 --- a/include/swift/Option/Options.td +++ b/include/swift/Option/Options.td @@ -370,6 +370,13 @@ def debug_diagnostic_names : Flag<["-"], "debug-diagnostic-names">, def print_educational_notes : Flag<["-"], "print-educational-notes">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Include educational notes in printed diagnostic output, if available">; +def diagnostic_style : Separate<["-"], "diagnostic-style">, + Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, + MetaVarName<"