about summary refs log tree commit diff
path: root/compiler/rustc_infer/src/errors
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-07-12 16:18:51 -0400
committerMichael Goulet <michael@errs.io>2024-07-17 10:52:13 -0400
commit1d40d4c4f496ce26d2cbf268b2f415e1f3bd5616 (patch)
tree3718158d1e2df3eb6c360ea8a1701cb083ade3d7 /compiler/rustc_infer/src/errors
parent3de0a7c716daab58bdb6551b0d0af6a466486639 (diff)
downloadrust-1d40d4c4f496ce26d2cbf268b2f415e1f3bd5616.tar.gz
rust-1d40d4c4f496ce26d2cbf268b2f415e1f3bd5616.zip
Fix precise capturing suggestion for hidden type when APITs are involved
Diffstat (limited to 'compiler/rustc_infer/src/errors')
-rw-r--r--compiler/rustc_infer/src/errors/mod.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/compiler/rustc_infer/src/errors/mod.rs b/compiler/rustc_infer/src/errors/mod.rs
index f849a1a7322..2ce712e0bff 100644
--- a/compiler/rustc_infer/src/errors/mod.rs
+++ b/compiler/rustc_infer/src/errors/mod.rs
@@ -1609,3 +1609,25 @@ pub enum AddPreciseCapturing {
         post: &'static str,
     },
 }
+
+pub struct AddPreciseCapturingAndParams {
+    pub suggs: Vec<(Span, String)>,
+    pub new_lifetime: Symbol,
+    pub apit_spans: Vec<Span>,
+}
+
+impl Subdiagnostic for AddPreciseCapturingAndParams {
+    fn add_to_diag_with<G: EmissionGuarantee, F: SubdiagMessageOp<G>>(
+        self,
+        diag: &mut Diag<'_, G>,
+        _f: &F,
+    ) {
+        diag.arg("new_lifetime", self.new_lifetime);
+        diag.multipart_suggestion_verbose(
+            fluent::infer_precise_capturing_new_but_apit,
+            self.suggs,
+            Applicability::MaybeIncorrect,
+        );
+        diag.span_note(self.apit_spans, fluent::infer_warn_removing_apit_params);
+    }
+}