Add -Zapproximate-suggestions
This commit is contained in:
parent
937bc2e04a
commit
a53bdc6212
3 changed files with 24 additions and 6 deletions
|
@ -1288,6 +1288,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
|||
dep_info_omit_d_target: bool = (false, parse_bool, [TRACKED],
|
||||
"in dep-info output, omit targets for tracking dependencies of the dep-info files \
|
||||
themselves"),
|
||||
approximate_suggestions: bool = (false, parse_bool, [UNTRACKED],
|
||||
"include machine-applicability of suggestions in JSON output"),
|
||||
unpretty: Option<String> = (None, parse_unpretty, [UNTRACKED],
|
||||
"Present the input source, unstable (and less-pretty) variants;
|
||||
valid types are any of the types for `--pretty`, as well as:
|
||||
|
|
|
@ -910,10 +910,12 @@ pub fn build_session_with_codemap(sopts: config::Options,
|
|||
Box::new(EmitterWriter::new(dst, Some(codemap.clone()), false))
|
||||
}
|
||||
(config::ErrorOutputType::Json(pretty), None) => {
|
||||
Box::new(JsonEmitter::stderr(Some(registry), codemap.clone(), pretty))
|
||||
Box::new(JsonEmitter::stderr(Some(registry), codemap.clone(),
|
||||
pretty, sopts.debugging_opts.approximate_suggestions))
|
||||
}
|
||||
(config::ErrorOutputType::Json(pretty), Some(dst)) => {
|
||||
Box::new(JsonEmitter::new(dst, Some(registry), codemap.clone(), pretty))
|
||||
Box::new(JsonEmitter::new(dst, Some(registry), codemap.clone(),
|
||||
pretty, sopts.debugging_opts.approximate_suggestions))
|
||||
}
|
||||
(config::ErrorOutputType::Short(color_config), None) => {
|
||||
Box::new(EmitterWriter::stderr(color_config, Some(codemap.clone()), true))
|
||||
|
|
|
@ -38,34 +38,41 @@ pub struct JsonEmitter {
|
|||
registry: Option<Registry>,
|
||||
cm: Rc<CodeMapper + 'static>,
|
||||
pretty: bool,
|
||||
/// Whether "approximate suggestions" are enabled in the config
|
||||
approximate_suggestions: bool,
|
||||
}
|
||||
|
||||
impl JsonEmitter {
|
||||
pub fn stderr(registry: Option<Registry>,
|
||||
code_map: Rc<CodeMap>,
|
||||
pretty: bool) -> JsonEmitter {
|
||||
pretty: bool,
|
||||
approximate_suggestions: bool) -> JsonEmitter {
|
||||
JsonEmitter {
|
||||
dst: Box::new(io::stderr()),
|
||||
registry,
|
||||
cm: code_map,
|
||||
pretty,
|
||||
approximate_suggestions,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn basic(pretty: bool) -> JsonEmitter {
|
||||
let file_path_mapping = FilePathMapping::empty();
|
||||
JsonEmitter::stderr(None, Rc::new(CodeMap::new(file_path_mapping)), pretty)
|
||||
JsonEmitter::stderr(None, Rc::new(CodeMap::new(file_path_mapping)),
|
||||
pretty, false)
|
||||
}
|
||||
|
||||
pub fn new(dst: Box<Write + Send>,
|
||||
registry: Option<Registry>,
|
||||
code_map: Rc<CodeMap>,
|
||||
pretty: bool) -> JsonEmitter {
|
||||
pretty: bool,
|
||||
approximate_suggestions: bool) -> JsonEmitter {
|
||||
JsonEmitter {
|
||||
dst,
|
||||
registry,
|
||||
cm: code_map,
|
||||
pretty,
|
||||
approximate_suggestions,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -283,6 +290,13 @@ impl DiagnosticSpan {
|
|||
def_site_span,
|
||||
})
|
||||
});
|
||||
|
||||
let suggestion_approximate = if je.approximate_suggestions {
|
||||
suggestion.map(|x| x.1)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
DiagnosticSpan {
|
||||
file_name: start.file.name.to_string(),
|
||||
byte_start: span.lo().0 - start.file.start_pos.0,
|
||||
|
@ -294,7 +308,7 @@ impl DiagnosticSpan {
|
|||
is_primary,
|
||||
text: DiagnosticSpanLine::from_span(span, je),
|
||||
suggested_replacement: suggestion.map(|x| x.0.clone()),
|
||||
suggestion_approximate: suggestion.map(|x| x.1),
|
||||
suggestion_approximate,
|
||||
expansion: backtrace_step,
|
||||
label,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue