@@ -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
}
@@ -1508,15 +1505,39 @@ impl<'hir> LoweringContext<'_, 'hir> {
1508
1505
1509
1506
let lang_item = match ( e1, e2, lims) {
1510
1507
( None , None , HalfOpen ) => hir:: LangItem :: RangeFull ,
1511
- ( Some ( ..) , None , HalfOpen ) => hir:: LangItem :: RangeFrom ,
1508
+ ( Some ( ..) , None , HalfOpen ) => {
1509
+ if self . tcx . features ( ) . new_range ( ) {
1510
+ hir:: LangItem :: RangeFromCopy
1511
+ } else {
1512
+ hir:: LangItem :: RangeFrom
1513
+ }
1514
+ }
1512
1515
( None , Some ( ..) , HalfOpen ) => hir:: LangItem :: RangeTo ,
1513
- ( Some ( ..) , Some ( ..) , HalfOpen ) => hir:: LangItem :: Range ,
1516
+ ( Some ( ..) , Some ( ..) , HalfOpen ) => {
1517
+ if self . tcx . features ( ) . new_range ( ) {
1518
+ hir:: LangItem :: RangeCopy
1519
+ } else {
1520
+ hir:: LangItem :: Range
1521
+ }
1522
+ }
1514
1523
( None , Some ( ..) , Closed ) => hir:: LangItem :: RangeToInclusive ,
1515
- ( Some ( ..) , Some ( ..) , Closed ) => unreachable ! ( ) ,
1524
+ ( Some ( e1) , Some ( e2) , Closed ) => {
1525
+ if self . tcx . features ( ) . new_range ( ) {
1526
+ hir:: LangItem :: RangeInclusiveCopy
1527
+ } else {
1528
+ return self . lower_expr_range_closed ( span, e1, e2) ;
1529
+ }
1530
+ }
1516
1531
( start, None , Closed ) => {
1517
1532
self . dcx ( ) . emit_err ( InclusiveRangeWithNoEnd { span } ) ;
1518
1533
match start {
1519
- Some ( ..) => hir:: LangItem :: RangeFrom ,
1534
+ Some ( ..) => {
1535
+ if self . tcx . features ( ) . new_range ( ) {
1536
+ hir:: LangItem :: RangeFromCopy
1537
+ } else {
1538
+ hir:: LangItem :: RangeFrom
1539
+ }
1540
+ }
1520
1541
None => hir:: LangItem :: RangeFull ,
1521
1542
}
1522
1543
}
0 commit comments