@@ -284,9 +284,6 @@ impl<'hir> LoweringContext<'_, 'hir> {
284
284
ExprKind :: Index ( el, er, brackets_span) => {
285
285
hir:: ExprKind :: Index ( self . lower_expr ( el) , self . lower_expr ( er) , * brackets_span)
286
286
}
287
- ExprKind :: Range ( Some ( e1) , Some ( e2) , RangeLimits :: Closed ) => {
288
- self . lower_expr_range_closed ( e. span , e1, e2)
289
- }
290
287
ExprKind :: Range ( e1, e2, lims) => {
291
288
self . lower_expr_range ( e. span , e1. as_deref ( ) , e2. as_deref ( ) , * lims)
292
289
}
@@ -1512,15 +1509,39 @@ impl<'hir> LoweringContext<'_, 'hir> {
1512
1509
1513
1510
let lang_item = match ( e1, e2, lims) {
1514
1511
( None , None , HalfOpen ) => hir:: LangItem :: RangeFull ,
1515
- ( Some ( ..) , None , HalfOpen ) => hir:: LangItem :: RangeFrom ,
1512
+ ( Some ( ..) , None , HalfOpen ) => {
1513
+ if self . tcx . features ( ) . new_range ( ) {
1514
+ hir:: LangItem :: RangeFromCopy
1515
+ } else {
1516
+ hir:: LangItem :: RangeFrom
1517
+ }
1518
+ }
1516
1519
( None , Some ( ..) , HalfOpen ) => hir:: LangItem :: RangeTo ,
1517
- ( Some ( ..) , Some ( ..) , HalfOpen ) => hir:: LangItem :: Range ,
1520
+ ( Some ( ..) , Some ( ..) , HalfOpen ) => {
1521
+ if self . tcx . features ( ) . new_range ( ) {
1522
+ hir:: LangItem :: RangeCopy
1523
+ } else {
1524
+ hir:: LangItem :: Range
1525
+ }
1526
+ }
1518
1527
( None , Some ( ..) , Closed ) => hir:: LangItem :: RangeToInclusive ,
1519
- ( Some ( ..) , Some ( ..) , Closed ) => unreachable ! ( ) ,
1528
+ ( Some ( e1) , Some ( e2) , Closed ) => {
1529
+ if self . tcx . features ( ) . new_range ( ) {
1530
+ hir:: LangItem :: RangeInclusiveCopy
1531
+ } else {
1532
+ return self . lower_expr_range_closed ( span, e1, e2) ;
1533
+ }
1534
+ }
1520
1535
( start, None , Closed ) => {
1521
1536
self . dcx ( ) . emit_err ( InclusiveRangeWithNoEnd { span } ) ;
1522
1537
match start {
1523
- Some ( ..) => hir:: LangItem :: RangeFrom ,
1538
+ Some ( ..) => {
1539
+ if self . tcx . features ( ) . new_range ( ) {
1540
+ hir:: LangItem :: RangeFromCopy
1541
+ } else {
1542
+ hir:: LangItem :: RangeFrom
1543
+ }
1544
+ }
1524
1545
None => hir:: LangItem :: RangeFull ,
1525
1546
}
1526
1547
}
0 commit comments