Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer/expr.rs')
| -rw-r--r-- | crates/hir-ty/src/infer/expr.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/crates/hir-ty/src/infer/expr.rs b/crates/hir-ty/src/infer/expr.rs index 75e6440334..5f752da3d0 100644 --- a/crates/hir-ty/src/infer/expr.rs +++ b/crates/hir-ty/src/infer/expr.rs @@ -269,7 +269,8 @@ impl<'db> InferenceContext<'_, 'db> { | Expr::Box { .. } | Expr::RecordLit { .. } | Expr::Yeet { .. } - | Expr::Missing => false, + | Expr::Missing + | Expr::IncludeBytes => false, } } @@ -893,6 +894,11 @@ impl<'db> InferenceContext<'_, 'db> { self.types.types.unit } } + Expr::IncludeBytes => { + let len = self.table.next_const_var(Span::Dummy); + let arr = Ty::new_array_with_const_len(self.interner(), self.types.types.u8, len); + Ty::new_ref(self.interner(), self.types.regions.statik, arr, Mutability::Not) + } }; let ty = self.insert_type_vars_shallow(ty); self.write_expr_ty(tgt_expr, ty); @@ -1055,14 +1061,14 @@ impl<'db> InferenceContext<'_, 'db> { }); } - variant_field_tys[i].get().instantiate(interner, args).skip_norm_wip() + variant_field_tys[i].ty().instantiate(interner, args).skip_norm_wip() } else { if let Some(field_idx) = seen_fields.get(&name) { self.push_diagnostic(InferenceDiagnostic::DuplicateField { field: field.expr.into(), variant, }); - variant_field_tys[*field_idx].get().instantiate(interner, args).skip_norm_wip() + variant_field_tys[*field_idx].ty().instantiate(interner, args).skip_norm_wip() } else { self.push_diagnostic(InferenceDiagnostic::NoSuchField { field: field.expr.into(), @@ -1118,12 +1124,12 @@ impl<'db> InferenceContext<'_, 'db> { // type we expect from the expectation value. for (field_idx, field) in variant_fields.fields().iter() { let fru_ty = variant_field_tys[field_idx] - .get() + .ty() .instantiate(interner, fresh_args) .skip_norm_wip(); if remaining_fields.remove(&field.name).is_some() { let target_ty = variant_field_tys[field_idx] - .get() + .ty() .instantiate(interner, args) .skip_norm_wip(); let cause = ObligationCause::new(expr); @@ -1678,7 +1684,7 @@ impl<'db> InferenceContext<'_, 'db> { return None; } let ty = self.db.field_types(field_id.parent)[field_id.local_id] - .get() + .ty() .instantiate(interner, parameters) .skip_norm_wip(); Some((Either::Left(field_id), ty)) @@ -1697,7 +1703,7 @@ impl<'db> InferenceContext<'_, 'db> { let adjustments = self.table.register_infer_ok(autoderef.adjust_steps_as_infer_ok()); let ty = self.db.field_types(field_id.parent)[field_id.local_id] - .get() + .ty() .instantiate(self.interner(), subst) .skip_norm_wip(); let ty = self.process_remote_user_written_ty(ty); |