3 // Regression test for changes introduced while fixing #54505
5 // This test uses non-literals for Ranges
6 // (expecting no parens with borrow suggestion)
8 use std::ops::RangeBounds;
11 // take a reference to any built-in range
12 fn take_range(_r: &impl RangeBounds<i8>) {}
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 }
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 }
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 }
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 }
36 take_range(std::ops::RangeFull {});
37 //~^ ERROR mismatched types [E0308]
38 //~| HELP consider borrowing here
39 //~| SUGGESTION &std::ops::RangeFull {}
41 take_range(::std::ops::RangeFull {});
42 //~^ ERROR mismatched types [E0308]
43 //~| HELP consider borrowing here
44 //~| SUGGESTION &::std::ops::RangeFull {}
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)
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)
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 }
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 }
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 }
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 }