diff --git a/src/librustc_errors/diagnostic.rs b/src/librustc_errors/diagnostic.rs index 825e31539c8..aebfce0bf2d 100644 --- a/src/librustc_errors/diagnostic.rs +++ b/src/librustc_errors/diagnostic.rs @@ -278,10 +278,11 @@ impl Diagnostic { self } - pub fn multipart_suggestion( + pub fn multipart_suggestion_with_applicability( &mut self, msg: &str, suggestion: Vec<(Span, String)>, + applicability: Applicability, ) -> &mut Self { self.suggestions.push(CodeSuggestion { substitutions: vec![Substitution { @@ -292,11 +293,23 @@ impl Diagnostic { }], msg: msg.to_owned(), show_code_when_inline: true, - applicability: Applicability::Unspecified, + applicability, }); self } + pub fn multipart_suggestion( + &mut self, + msg: &str, + suggestion: Vec<(Span, String)>, + ) -> &mut Self { + self.multipart_suggestion_with_applicability( + msg, + suggestion, + Applicability::Unspecified + ) + } + /// Prints out a message with multiple suggested edits of the code. pub fn span_suggestions(&mut self, sp: Span, msg: &str, suggestions: Vec) -> &mut Self { self.suggestions.push(CodeSuggestion { diff --git a/src/librustc_errors/diagnostic_builder.rs b/src/librustc_errors/diagnostic_builder.rs index 1b34898b990..79acf468916 100644 --- a/src/librustc_errors/diagnostic_builder.rs +++ b/src/librustc_errors/diagnostic_builder.rs @@ -187,6 +187,23 @@ impl<'a> DiagnosticBuilder<'a> { msg: &str, suggestions: Vec) -> &mut Self); + + pub fn multipart_suggestion_with_applicability(&mut self, + msg: &str, + suggestion: Vec<(Span, String)>, + applicability: Applicability) + -> &mut Self { + if !self.allow_suggestions { + return self + } + self.diagnostic.multipart_suggestion_with_applicability( + msg, + suggestion, + applicability, + ); + self + } + pub fn span_suggestion_with_applicability(&mut self, sp: Span, msg: &str,