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.rs28
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())
}