//===--- Options.td - Options for swift driver ----------------------------===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2020 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// // // This file defines the options accepted by the swift driver. // //===----------------------------------------------------------------------===// // Include the common option parsing interfaces. include "llvm/Option/OptParser.td" ///////// // Flags // The option should be accepted by swift -frontend. def FrontendOption : OptionFlag; // The option should be accepted by swift-autolink-extract def AutolinkExtractOption : OptionFlag; // The option should be accepted by swift -modulewrap def ModuleWrapOption : OptionFlag; // The option should not be accepted by the driver. def NoDriverOption : OptionFlag; // Some options should not be available depending on whether this is the // interactive driver 'swift', or the aot compiler 'swiftc'. def NoInteractiveOption : OptionFlag; def NoBatchOption : OptionFlag; // The option should not force a full rebuild if added, changed, or removed. def DoesNotAffectIncrementalBuild : OptionFlag; // The option's argument is a file-system path that may be affected by the // current working directory. def ArgumentIsPath : OptionFlag; // The option should be written into a .swiftinterface module interface file, // and read/parsed from there when reconstituting a .swiftmodule from it. def ModuleInterfaceOption : OptionFlag; // The option should be written into a .swiftinterface module interface file, // and read/parsed from there when reconstituting a .swiftmodule from it. // The option can be safely ignored by the older compiler. def ModuleInterfaceOptionIgnorable : OptionFlag; // The option causes the output of a supplementary output, or is the path option // for a supplementary output. E.g., `-emit-module` and `-emit-module-path`. def SupplementaryOutput : OptionFlag; // The option should be accepted by swift-symbolgraph-extract. def SwiftSymbolGraphExtractOption : OptionFlag; // The option should be accepted by swift-synthesize-interface. def SwiftSynthesizeInterfaceOption : OptionFlag; // The option should be accepted by swift-api-digester. def SwiftAPIDigesterOption : OptionFlag; // The option only functions in the new driver. def NewDriverOnlyOption : OptionFlag; // The option's argument is a path to a file that contains a list of files. def ArgumentIsFileList : OptionFlag; // The option that is cache invariant. Change this option doesn't affect the // content of any output file. The candidates are options like: `-o` which only // affects the location of the output file, or `-emit-module` which defines // which action is performed. def CacheInvariant : OptionFlag; ///////// // Options // The internal option ID must be a valid C++ identifier and results in a // swift::driver::options::OPT_XX enum constant for XX. // // We want to unambiguously be able to refer to options from the driver source // code, for this reason the option name is mangled into an ID. This mangling // isn't guaranteed to have an inverse, but for practical purposes it does. // // The mangling scheme is to ignore the leading '-', and perform the following // substitutions: // _ => __ // - => _ // / => _SLASH // # => _HASH // ? => _QUESTION // , => _COMMA // = => _EQ // C++ => CXX // . => _ def internal_Group : OptionGroup<"">; def internal_debug_Group : OptionGroup<"">, Group, HelpText<"DEBUG/DEVELOPMENT OPTIONS">; class InternalDebugOpt : Group, Flags<[HelpHidden, DoesNotAffectIncrementalBuild]>; def driver_print_actions : Flag<["-"], "driver-print-actions">, InternalDebugOpt, HelpText<"Dump list of actions to perform">; def driver_print_output_file_map : Flag<["-"], "driver-print-output-file-map">, InternalDebugOpt, HelpText<"Dump the contents of the output file map">; def driver_print_derived_output_file_map : Flag<["-"], "driver-print-derived-output-file-map">, InternalDebugOpt, HelpText<"Dump the contents of the derived output file map">; def driver_print_bindings : Flag<["-"], "driver-print-bindings">, InternalDebugOpt, HelpText<"Dump list of job inputs and outputs">; def driver_print_jobs : Flag<["-"], "driver-print-jobs">, InternalDebugOpt, HelpText<"Dump list of jobs to execute">; def _HASH_HASH_HASH : Flag<["-"], "###">, Alias; def driver_skip_execution : Flag<["-"], "driver-skip-execution">, InternalDebugOpt, HelpText<"Skip execution of subtasks when performing compilation">; def driver_use_frontend_path : Separate<["-"], "driver-use-frontend-path">, InternalDebugOpt, HelpText<"Use the given executable to perform compilations. Arguments can be passed as a ';' separated list">; def driver_show_incremental : Flag<["-"], "driver-show-incremental">, InternalDebugOpt, HelpText<"With -v, dump information about why files are being rebuilt">; def driver_show_job_lifecycle : Flag<["-"], "driver-show-job-lifecycle">, InternalDebugOpt, HelpText<"Show every step in the lifecycle of driver jobs">; def driver_use_filelists : Flag<["-"], "driver-use-filelists">, InternalDebugOpt, HelpText<"Pass input files as filelists whenever possible">; def driver_filelist_threshold : Separate<["-"], "driver-filelist-threshold">, InternalDebugOpt, HelpText<"Pass input or output file names as filelists if there are more than ">, MetaVarName<"">; def driver_filelist_threshold_EQ : Joined<["-"], "driver-filelist-threshold=">, Alias; def driver_batch_seed : Separate<["-"], "driver-batch-seed">, InternalDebugOpt, HelpText<"Use the given seed value to randomize batch-mode partitions">; def driver_batch_count : Separate<["-"], "driver-batch-count">, InternalDebugOpt, HelpText<"Use the given number of batch-mode partitions, rather than partitioning dynamically">; def driver_batch_size_limit : Separate<["-"], "driver-batch-size-limit">, InternalDebugOpt, HelpText<"Use the given number as the upper limit on dynamic batch-mode partition size">; def driver_force_response_files : Flag<["-"], "driver-force-response-files">, InternalDebugOpt, HelpText<"Force the use of response files for testing">; def driver_always_rebuild_dependents : Flag<["-"], "driver-always-rebuild-dependents">, InternalDebugOpt, HelpText<"Always rebuild dependents of files that have been modified">; def enable_only_one_dependency_file : Flag<["-"], "enable-only-one-dependency-file">, Flags<[DoesNotAffectIncrementalBuild]>, HelpText<"Enables incremental build optimization that only produces one dependencies file">; def disable_only_one_dependency_file : Flag<["-"], "disable-only-one-dependency-file">, Flags<[DoesNotAffectIncrementalBuild]>, HelpText<"Disables incremental build optimization that only produces one dependencies file">; def driver_verify_fine_grained_dependency_graph_after_every_import : Flag<["-"], "driver-verify-fine-grained-dependency-graph-after-every-import">, InternalDebugOpt, HelpText<"Debug DriverGraph by verifying it after every import">; def verify_incremental_dependencies : Flag<["-"], "verify-incremental-dependencies">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Enable the dependency verifier for each frontend job">; def strict_implicit_module_context : Flag<["-"], "strict-implicit-module-context">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Enable the strict forwarding of compilation context to downstream implicit module dependencies">; def no_strict_implicit_module_context : Flag<["-"], "no-strict-implicit-module-context">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Disable the strict forwarding of compilation context to downstream implicit module dependencies">; def compiler_assertions : Flag<["-"], "compiler-assertions">, Group, Flags<[FrontendOption, DoesNotAffectIncrementalBuild, CacheInvariant]>, HelpText<"Enable internal self-checks while compiling">; def validate_clang_modules_once : Flag<["-"], "validate-clang-modules-once">, Flags<[FrontendOption]>, HelpText<"Don't verify input files for Clang modules if the module has been successfully validated or loaded during this build session">; def clang_build_session_file : Separate<["-"], "clang-build-session-file">, Flags<[FrontendOption, ArgumentIsPath]>, HelpText<"Use the last modification time of as the underlying Clang build session timestamp">; def disallow_forwarding_driver : Flag<["-"], "disallow-use-new-driver">, Flags<[]>, HelpText<"Disable using new swift-driver">; def driver_emit_fine_grained_dependency_dot_file_after_every_import : Flag<["-"], "driver-emit-fine-grained-dependency-dot-file-after-every-import">, InternalDebugOpt, HelpText<"Emit dot files every time driver imports an fine-grained swiftdeps file.">; def emit_fine_grained_dependency_sourcefile_dot_files : Flag<["-"], "emit-fine-grained-dependency-sourcefile-dot-files">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Emit dot files for every source file.">; def driver_mode : Joined<["--"], "driver-mode=">, Flags<[HelpHidden]>, HelpText<"Set the driver mode to either 'swift' or 'swiftc'">; def help : Flag<["-", "--"], "help">, Flags<[FrontendOption, AutolinkExtractOption, ModuleWrapOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Display available options">; def h : Flag<["-"], "h">, Alias; def help_hidden : Flag<["-", "--"], "help-hidden">, Flags<[HelpHidden, FrontendOption]>, HelpText<"Display available options, including hidden options">; def v : Flag<["-"], "v">, Flags<[DoesNotAffectIncrementalBuild, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Show commands to run and use verbose output">; def version : Flag<["-", "--"], "version">, Flags<[FrontendOption]>, HelpText<"Print version information and exit">; def parseable_output : Flag<["-"], "parseable-output">, Flags<[NoInteractiveOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit textual output in a parseable format">; // Windows Options def windows_sdk_root : Separate<["-"], "windows-sdk-root">, Flags<[ArgumentIsPath, FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Windows SDK Root">, MetaVarName<"">; def windows_sdk_version : Separate<["-"], "windows-sdk-version">, Flags<[FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Windows SDK Version">, MetaVarName<"">; def visualc_tools_root : Separate<["-"], "visualc-tools-root">, Flags<[ArgumentIsPath, FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"VisualC++ Tools Root">, MetaVarName<"">; def visualc_tools_version : Separate<["-"], "visualc-tools-version">, Flags<[FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"VisualC++ ToolSet Version">, MetaVarName<"">; // Android Options def sysroot : Separate<["-"], "sysroot">, Flags<[ArgumentIsPath, FrontendOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Native Platform sysroot">, MetaVarName<"">; // Standard Options def _DASH_DASH : Option<["--"], "", KIND_REMAINING_ARGS>, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>; def o : JoinedOrSeparate<["-"], "o">, Flags<[FrontendOption, AutolinkExtractOption, ModuleWrapOption, NoInteractiveOption, ArgumentIsPath, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption, CacheInvariant]>, HelpText<"Write output to ">, MetaVarName<"">; def j : JoinedOrSeparate<["-"], "j">, Flags<[DoesNotAffectIncrementalBuild]>, HelpText<"Number of commands to execute in parallel">, MetaVarName<"">; def sdk : Separate<["-"], "sdk">, Flags<[FrontendOption, ArgumentIsPath, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Compile against ">, MetaVarName<"">; def swift_version : Separate<["-"], "swift-version">, Flags<[FrontendOption, ModuleInterfaceOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Interpret input according to a specific Swift language version number">, MetaVarName<"">; def language_mode : Separate<["-"], "language-mode">, Flags<[FrontendOption, ModuleInterfaceOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Interpret input according to a specific Swift language mode">, MetaVarName<"">, Alias; def min_swift_runtime_version : Separate<["-"], "min-swift-runtime-version">, Flags<[FrontendOption, ModuleInterfaceOptionIgnorable]>, HelpText<"The minimum Swift runtime version " "that will be available at runtime">, MetaVarName<"">; def package_description_version: Separate<["-"], "package-description-version">, Flags<[FrontendOption, HelpHidden, ModuleInterfaceOption]>, HelpText<"The version number to be applied on the input for the PackageDescription availability kind">, MetaVarName<"">; def swiftinterface_compiler_version : Separate<["-"], "interface-compiler-version">, Flags<[FrontendOption, HelpHidden]>, HelpText<"The version of the Swift compiler used to generate a .swiftinterface file">, MetaVarName<"">; def tools_directory : Separate<["-"], "tools-directory">, Flags<[FrontendOption, NoInteractiveOption, DoesNotAffectIncrementalBuild, ArgumentIsPath]>, HelpText<"Look for external executables (ld, clang, binutils) in ">, MetaVarName<"">; def D : JoinedOrSeparate<["-"], "D">, Flags<[FrontendOption]>, HelpText<"Marks a conditional compilation flag as true">; def e : Separate<["-"], "e">, Flags<[NewDriverOnlyOption]>, HelpText<"Executes a line of code provided on the command line">; def F : JoinedOrSeparate<["-"], "F">, Flags<[FrontendOption, ArgumentIsPath, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Add directory to framework search path">; def F_EQ : Joined<["-"], "F=">, Flags<[FrontendOption, ArgumentIsPath]>, Alias; def Fsystem : Separate<["-"], "Fsystem">, Flags<[FrontendOption, ArgumentIsPath, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Add directory to system framework search path">; def I : JoinedOrSeparate<["-"], "I">, Flags<[FrontendOption, ArgumentIsPath, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Add directory to the import search path">; def I_EQ : Joined<["-"], "I=">, Flags<[FrontendOption, ArgumentIsPath]>, Alias; def Isystem : Separate<["-"], "Isystem">, Flags<[FrontendOption, ArgumentIsPath, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, SwiftSynthesizeInterfaceOption]>, HelpText<"Add directory to the system import search path">; def import_underlying_module : Flag<["-"], "import-underlying-module">, Flags<[FrontendOption, NoInteractiveOption]>, HelpText<"Implicitly imports the Objective-C half of a module">; def import_bridging_header : Separate<["-"], "import-bridging-header">, Flags<[FrontendOption, ArgumentIsPath]>, HelpText<"Implicitly imports a C header file">; def import_objc_header : Separate<["-"], "import-objc-header">, Flags<[FrontendOption, HelpHidden, ArgumentIsPath]>, Alias; def internal_import_bridging_header : Separate<["-"], "internal-import-bridging-header">, Flags<[FrontendOption, ArgumentIsPath]>, HelpText<"Implicitly imports a C header file as an internal import">; def import_pch : Separate<["-"], "import-pch">, Flags<[FrontendOption, HelpHidden, ArgumentIsPath]>, HelpText<"Import bridging header PCH file">; def internal_import_pch : Separate<["-"], "internal-import-pch">, Flags<[FrontendOption, HelpHidden, ArgumentIsPath]>, HelpText<"Import bridging header PCH file as internal">; def pch_output_dir: Separate<["-"], "pch-output-dir">, Flags<[FrontendOption, HelpHidden, ArgumentIsPath]>, HelpText<"Directory to persist automatically created precompiled bridging headers">; def auto_bridging_header_chaining: Flag<["-"], "auto-bridging-header-chaining">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Automatically chaining all the bridging headers">; def no_auto_bridging_header_chaining: Flag<["-"], "no-auto-bridging-header-chaining">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Do not automatically chaining all the bridging headers">; // FIXME: Unhide this once it doesn't depend on an output file map. def incremental : Flag<["-"], "incremental">, Flags<[NoInteractiveOption, HelpHidden, DoesNotAffectIncrementalBuild]>, HelpText<"Perform an incremental build if possible">; def nostdimport : Flag<["-"], "nostdimport">, Flags<[FrontendOption]>, HelpText<"Don't search the standard library or toolchain import paths for modules">; def nostdlibimport : Flag<["-"], "nostdlibimport">, Flags<[FrontendOption]>, HelpText<"Don't search the standard library import path for modules">; def output_file_map : Separate<["-"], "output-file-map">, Flags<[NoInteractiveOption, ArgumentIsPath]>, HelpText<"A file which specifies the location of outputs">, MetaVarName<"">; def output_file_map_EQ : Joined<["-"], "output-file-map=">, Flags<[NoInteractiveOption, ArgumentIsPath]>, Alias; def save_temps : Flag<["-"], "save-temps">, Flags<[NoInteractiveOption,DoesNotAffectIncrementalBuild]>, HelpText<"Save intermediate compilation results">; def driver_time_compilation : Flag<["-"], "driver-time-compilation">, Flags<[NoInteractiveOption,DoesNotAffectIncrementalBuild]>, HelpText<"Prints the total time it took to execute all compilation tasks">; def stats_output_dir: Separate<["-"], "stats-output-dir">, Flags<[FrontendOption, HelpHidden, ArgumentIsPath]>, HelpText<"Directory to write unified compilation-statistics files to">; def print_zero_stats: Flag<["-"], "print-zero-stats">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Prints all stats even if they are zero">; def fine_grained_timers: Flag<["-"], "fine-grained-timers">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Enable per-request timers">; def trace_stats_events: Flag<["-"], "trace-stats-events">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Trace changes to stats in -stats-output-dir">; def experimental_skip_non_inlinable_function_bodies: Flag<["-"], "experimental-skip-non-inlinable-function-bodies">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Skip type-checking and SIL generation for non-inlinable function bodies">; def experimental_skip_non_inlinable_function_bodies_without_types: Flag<["-"], "experimental-skip-non-inlinable-function-bodies-without-types">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Skip work on non-inlinable function bodies that do not declare nested types">; def profile_stats_events: Flag<["-"], "profile-stats-events">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Profile changes to stats in -stats-output-dir">; def profile_stats_entities: Flag<["-"], "profile-stats-entities">, Flags<[FrontendOption, HelpHidden]>, HelpText<"Profile changes to stats in -stats-output-dir, subdivided by source entity">; def emit_dependencies : Flag<["-"], "emit-dependencies">, Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput]>, HelpText<"Emit basic Make-compatible dependencies files">; def track_system_dependencies : Flag<["-"], "track-system-dependencies">, Flags<[FrontendOption, NoInteractiveOption, DoesNotAffectIncrementalBuild]>, HelpText<"Track system dependencies while emitting Make-style dependencies">; def emit_loaded_module_trace : Flag<["-"], "emit-loaded-module-trace">, Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput]>, HelpText<"Emit a JSON file containing information about what modules were loaded">; def emit_loaded_module_trace_path : Separate<["-"], "emit-loaded-module-trace-path">, Flags<[FrontendOption, NoInteractiveOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, HelpText<"Emit the loaded module trace JSON to ">, MetaVarName<"">; def emit_loaded_module_trace_path_EQ : Joined<["-"], "emit-loaded-module-trace-path=">, Flags<[FrontendOption, NoInteractiveOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, Alias; def emit_cross_import_remarks : Flag<["-"], "Rcross-import">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit a remark if a cross-import of a module is triggered.">; def remark_loading_module : Flag<["-"], "Rmodule-loading">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit remarks about loaded module">; def remark_module_recovery : Flag<["-"], "Rmodule-recovery">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit remarks about contextual inconsistencies in loaded modules">; def remark_module_api_import : Flag<["-"], "Rmodule-api-import">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit remarks about the import bridging in each element composing the API">; def remark_macro_loading : Flag<["-"], "Rmacro-loading">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit remarks about loaded macro implementations">; def remark_indexing_system_module : Flag<["-"], "Rindexing-system-module">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit a remark when indexing a system module">; def remark_skip_explicit_interface_build : Flag<["-"], "Rskip-explicit-interface-build">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit a remark if an explicit module interface invocation has an early exit because the expected output is up-to-date">; def remark_module_serialization : Flag<["-"], "Rmodule-serialization">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Emit remarks about module serialization">; def emit_tbd : Flag<["-"], "emit-tbd">, HelpText<"Emit a TBD file">, Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput]>; def emit_tbd_path : Separate<["-"], "emit-tbd-path">, Flags<[FrontendOption, NoInteractiveOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, HelpText<"Emit the TBD file to ">, MetaVarName<"">; def emit_tbd_path_EQ : Joined<["-"], "emit-tbd-path=">, Flags<[FrontendOption, NoInteractiveOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, Alias; def embed_tbd_for_module : Separate<["-"], "embed-tbd-for-module">, Flags<[FrontendOption]>, HelpText<"Embed symbols from the module in the emitted tbd file">; def serialize_diagnostics : Flag<["-"], "serialize-diagnostics">, Flags<[FrontendOption, NoInteractiveOption, SupplementaryOutput, CacheInvariant]>, HelpText<"Serialize diagnostics in a binary format">; def serialize_diagnostics_path : Separate<["-"], "serialize-diagnostics-path">, Flags<[FrontendOption, SwiftAPIDigesterOption, NoBatchOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, HelpText<"Emit a serialized diagnostics file to ">, MetaVarName<"">; def serialize_diagnostics_path_EQ: Joined<["-"], "serialize-diagnostics-path=">, Flags<[FrontendOption, SwiftAPIDigesterOption, NoBatchOption, ArgumentIsPath, SupplementaryOutput, CacheInvariant]>, Alias; def color_diagnostics : Flag<["-"], "color-diagnostics">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Print diagnostics in color">; def no_color_diagnostics : Flag<["-"], "no-color-diagnostics">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild]>, HelpText<"Do not print diagnostics in color">; def debug_diagnostic_names : Flag<["-"], "debug-diagnostic-names">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild, HelpHidden]>, HelpText<"Include diagnostic names when printing">; def print_diagnostic_groups : Flag<["-"], "print-diagnostic-groups">, Flags<[FrontendOption, DoesNotAffectIncrementalBuild, HelpHidden]>, HelpText<"Include diagnostic groups in printed diagnostic output, if available">; 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<"