Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/infer.rs')
| -rw-r--r-- | crates/hir-ty/src/infer.rs | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/crates/hir-ty/src/infer.rs b/crates/hir-ty/src/infer.rs index d527a4ae29..35d744e7d1 100644 --- a/crates/hir-ty/src/infer.rs +++ b/crates/hir-ty/src/infer.rs @@ -1815,18 +1815,34 @@ impl<'body, 'db> InferenceContext<'body, 'db> { Some(struct_.into()) } + fn has_new_range_feature(&self) -> bool { + self.resolver.top_level_def_map().is_unstable_feature_enabled(&sym::new_range) + } + fn resolve_range(&self) -> Option<AdtId> { - let struct_ = self.lang_items.Range?; + let struct_ = if self.has_new_range_feature() { + self.lang_items.RangeCopy? + } else { + self.lang_items.Range? + }; Some(struct_.into()) } fn resolve_range_inclusive(&self) -> Option<AdtId> { - let struct_ = self.lang_items.RangeInclusiveStruct?; + let struct_ = if self.has_new_range_feature() { + self.lang_items.RangeInclusiveCopy? + } else { + self.lang_items.RangeInclusiveStruct? + }; Some(struct_.into()) } fn resolve_range_from(&self) -> Option<AdtId> { - let struct_ = self.lang_items.RangeFrom?; + let struct_ = if self.has_new_range_feature() { + self.lang_items.RangeFromCopy? + } else { + self.lang_items.RangeFrom? + }; Some(struct_.into()) } @@ -1836,7 +1852,11 @@ impl<'body, 'db> InferenceContext<'body, 'db> { } fn resolve_range_to_inclusive(&self) -> Option<AdtId> { - let struct_ = self.lang_items.RangeToInclusive?; + let struct_ = if self.has_new_range_feature() { + self.lang_items.RangeToInclusiveCopy? + } else { + self.lang_items.RangeToInclusive? + }; Some(struct_.into()) } |