forked from OSchip/llvm-project
[clang-cl] Implement /diagnostic: flag
This flag has three possible values: caret, column, and classic. "caret" corresponds to clang's default mode, "column" removes the caret and code snippet, and "classic" emits nothing. Documentation is here: https://docs.microsoft.com/en-us/cpp/build/reference/diagnostics-compiler-diagnostic-options Implements the last part of PR33237 llvm-svn: 304316
This commit is contained in:
parent
777bb90bdc
commit
ca77dd591e
|
@ -63,6 +63,12 @@ def _SLASH_C : CLFlag<"C">,
|
|||
def _SLASH_c : CLFlag<"c">, HelpText<"Compile only">, Alias<c>;
|
||||
def _SLASH_d1reportAllClassLayout : CLFlag<"d1reportAllClassLayout">,
|
||||
HelpText<"Dump record layout information">, Alias<fdump_record_layouts>;
|
||||
def _SLASH_diagnostics_caret : CLFlag<"diagnostics:caret">,
|
||||
HelpText<"Enable caret and column diagnostics (on by default)">;
|
||||
def _SLASH_diagnostics_column : CLFlag<"diagnostics:column">,
|
||||
HelpText<"Disable caret diagnostics but keep column info">;
|
||||
def _SLASH_diagnostics_classic : CLFlag<"diagnostics:classic">,
|
||||
HelpText<"Disable column and caret diagnostics">;
|
||||
def _SLASH_D : CLJoinedOrSeparate<"D">, HelpText<"Define macro">,
|
||||
MetaVarName<"<macro[=value]>">, Alias<D>;
|
||||
def _SLASH_E : CLFlag<"E">, HelpText<"Preprocess to stdout">, Alias<E>;
|
||||
|
|
|
@ -3985,9 +3985,30 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
<< value;
|
||||
}
|
||||
|
||||
bool CaretDefault = true;
|
||||
bool ColumnDefault = true;
|
||||
if (Arg *DiagArg = Args.getLastArg(options::OPT__SLASH_diagnostics_classic,
|
||||
options::OPT__SLASH_diagnostics_column,
|
||||
options::OPT__SLASH_diagnostics_caret)) {
|
||||
switch (DiagArg->getOption().getID()) {
|
||||
case options::OPT__SLASH_diagnostics_caret:
|
||||
CaretDefault = true;
|
||||
ColumnDefault = true;
|
||||
break;
|
||||
case options::OPT__SLASH_diagnostics_column:
|
||||
CaretDefault = false;
|
||||
ColumnDefault = true;
|
||||
break;
|
||||
case options::OPT__SLASH_diagnostics_classic:
|
||||
CaretDefault = false;
|
||||
ColumnDefault = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// -fcaret-diagnostics is default.
|
||||
if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
|
||||
options::OPT_fno_caret_diagnostics, true))
|
||||
options::OPT_fno_caret_diagnostics, CaretDefault))
|
||||
CmdArgs.push_back("-fno-caret-diagnostics");
|
||||
|
||||
// -fdiagnostics-fixit-info is default, only pass non-default.
|
||||
|
@ -4059,7 +4080,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
CmdArgs.push_back("-fdiagnostics-absolute-paths");
|
||||
|
||||
if (!Args.hasFlag(options::OPT_fshow_column, options::OPT_fno_show_column,
|
||||
true))
|
||||
ColumnDefault))
|
||||
CmdArgs.push_back("-fno-show-column");
|
||||
|
||||
if (!Args.hasFlag(options::OPT_fspell_checking,
|
||||
|
|
Loading…
Reference in New Issue