Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/closure.rs')
-rw-r--r--crates/hir-ty/src/infer/closure.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/crates/hir-ty/src/infer/closure.rs b/crates/hir-ty/src/infer/closure.rs
index 1f040393f1..9431599ac7 100644
--- a/crates/hir-ty/src/infer/closure.rs
+++ b/crates/hir-ty/src/infer/closure.rs
@@ -9,7 +9,10 @@ use chalk_ir::{
};
use hir_def::{
data::adt::VariantData,
- hir::{Array, BinaryOp, BindingId, CaptureBy, Expr, ExprId, Pat, PatId, Statement, UnaryOp},
+ hir::{
+ format_args::FormatArgumentKind, Array, BinaryOp, BindingId, CaptureBy, Expr, ExprId, Pat,
+ PatId, Statement, UnaryOp,
+ },
lang_item::LangItem,
resolver::{resolver_for_expr, ResolveValueResult, ValueNs},
DefWithBodyId, FieldId, HasModule, VariantId,
@@ -453,6 +456,14 @@ impl InferenceContext<'_> {
fn walk_expr_without_adjust(&mut self, tgt_expr: ExprId) {
match &self.body[tgt_expr] {
Expr::OffsetOf(_) => (),
+ Expr::FormatArgs(fa) => {
+ self.walk_expr_without_adjust(fa.template_expr);
+ fa.arguments
+ .arguments
+ .iter()
+ .filter(|it| !matches!(it.kind, FormatArgumentKind::Captured(_)))
+ .for_each(|it| self.walk_expr_without_adjust(it.expr));
+ }
Expr::InlineAsm(e) => self.walk_expr_without_adjust(e.e),
Expr::If { condition, then_branch, else_branch } => {
self.consume_expr(*condition);