1// run-rustfix
2
3// Regression test for changes introduced while fixing #54505
4
5// This test uses non-literals for Ranges
6// (expecting no parens with borrow suggestion)
7
8use std::ops::RangeBounds;
9
10
11// take a reference to any built-in range
12fn take_range(_r: &impl RangeBounds<i8>) {}
13
14
15fn main() {
16    take_range(&std::ops::Range { start: 0, end: 1 });
17    //~^ ERROR mismatched types [E0308]
18    //~| HELP consider borrowing here
19    //~| SUGGESTION &std::ops::Range { start: 0, end: 1 }
20
21    take_range(&::std::ops::Range { start: 0, end: 1 });
22    //~^ ERROR mismatched types [E0308]
23    //~| HELP consider borrowing here
24    //~| SUGGESTION &::std::ops::Range { start: 0, end: 1 }
25
26    take_range(&std::ops::RangeFrom { start: 1 });
27    //~^ ERROR mismatched types [E0308]
28    //~| HELP consider borrowing here
29    //~| SUGGESTION &std::ops::RangeFrom { start: 1 }
30
31    take_range(&::std::ops::RangeFrom { start: 1 });
32    //~^ ERROR mismatched types [E0308]
33    //~| HELP consider borrowing here
34    //~| SUGGESTION &::std::ops::RangeFrom { start: 1 }
35
36    take_range(&std::ops::RangeFull {});
37    //~^ ERROR mismatched types [E0308]
38    //~| HELP consider borrowing here
39    //~| SUGGESTION &std::ops::RangeFull {}
40
41    take_range(&::std::ops::RangeFull {});
42    //~^ ERROR mismatched types [E0308]
43    //~| HELP consider borrowing here
44    //~| SUGGESTION &::std::ops::RangeFull {}
45
46    take_range(&std::ops::RangeInclusive::new(0, 1));
47    //~^ ERROR mismatched types [E0308]
48    //~| HELP consider borrowing here
49    //~| SUGGESTION &std::ops::RangeInclusive::new(0, 1)
50
51    take_range(&::std::ops::RangeInclusive::new(0, 1));
52    //~^ ERROR mismatched types [E0308]
53    //~| HELP consider borrowing here
54    //~| SUGGESTION &::std::ops::RangeInclusive::new(0, 1)
55
56    take_range(&std::ops::RangeTo { end: 5 });
57    //~^ ERROR mismatched types [E0308]
58    //~| HELP consider borrowing here
59    //~| SUGGESTION &std::ops::RangeTo { end: 5 }
60
61    take_range(&::std::ops::RangeTo { end: 5 });
62    //~^ ERROR mismatched types [E0308]
63    //~| HELP consider borrowing here
64    //~| SUGGESTION &::std::ops::RangeTo { end: 5 }
65
66    take_range(&std::ops::RangeToInclusive { end: 5 });
67    //~^ ERROR mismatched types [E0308]
68    //~| HELP consider borrowing here
69    //~| SUGGESTION &std::ops::RangeToInclusive { end: 5 }
70
71    take_range(&::std::ops::RangeToInclusive { end: 5 });
72    //~^ ERROR mismatched types [E0308]
73    //~| HELP consider borrowing here
74    //~| SUGGESTION &::std::ops::RangeToInclusive { end: 5 }
75}
76