Code change:
<ins> error[E0689]: can't call method `rev` on type `usize` --> $DIR/issue-90315.rs:4:28 | LL |     for _i in 0..arr.len().rev() { |                            ^^^ can't call method `rev` on type `usize` | help: you must surround the range in parentheses to call its `rev` function | LL |     for _i in (0..arr.len()).rev() { |               +            + error[E0689]: can't call method `rev` on type `{integer}` --> $DIR/issue-90315.rs:12:20 | LL |     for i in 1..11.rev() { |                    ^^^ can't call method `rev` on type `{integer}` | help: you must surround the range in parentheses to call its `rev` function | LL |     for i in (1..11).rev() { |              +     + error[E0689]: can't call method `rev` on type `usize` --> $DIR/issue-90315.rs:18:21 | LL |     for i in 1..end.rev() { |                     ^^^ can't call method `rev` on type `usize` | help: you must surround the range in parentheses to call its `rev` function | LL |     for i in (1..end).rev() { |              +      + error[E0689]: can't call method `rev` on type `usize` --> $DIR/issue-90315.rs:23:27 | LL |     for i in 1..(end + 1).rev() { |                           ^^^ can't call method `rev` on type `usize` | help: you must surround the range in parentheses to call its `rev` function | LL |     for i in (1..(end + 1)).rev() { |              +            + error[E0689]: can't call method `is_empty` on type `usize` --> $DIR/issue-90315.rs:28:21 | LL |     if 1..(end + 1).is_empty() { |                     ^^^^^^^^ can't call method `is_empty` on type `usize` | help: you must surround the range in parentheses to call its `is_empty` function | LL |     if (1..(end + 1)).is_empty() { |        +            + error[E0308]: mismatched types --> $DIR/issue-90315.rs:28:8 | LL |     if 1..(end + 1).is_empty() { |        ^^^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found struct `std::ops::Range` | = note: expected type `bool` found struct `std::ops::Range<{integer}>` error[E0689]: can't call method `is_sorted` on type `usize` --> $DIR/issue-90315.rs:34:21 | LL |     if 1..(end + 1).is_sorted() { |                     ^^^^^^^^^ can't call method `is_sorted` on type `usize` | help: you must surround the range in parentheses to call its `is_sorted` function | LL |     if (1..(end + 1)).is_sorted() { |        +            + error[E0308]: mismatched types --> $DIR/issue-90315.rs:34:8 | LL |     if 1..(end + 1).is_sorted() { |        ^^^^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found struct `std::ops::Range` | = note: expected type `bool` found struct `std::ops::Range<{integer}>` error[E0689]: can't call method `take` on type `{integer}` --> $DIR/issue-90315.rs:40:26 | LL |     let _res: i32 = 3..6.take(2).sum(); |                          ^^^^ can't call method `take` on type `{integer}` | help: you must surround the range in parentheses to call its `take` function | LL |     let _res: i32 = (3..6).take(2).sum(); |                     +    + error[E0308]: mismatched types --> $DIR/issue-90315.rs:40:21 | LL |     let _res: i32 = 3..6.take(2).sum(); |               ---   ^^^^^^^^^^^^^^^^^^ expected `i32`, found struct `std::ops::Range` |               | |               expected due to this | = note: expected type `i32` found struct `std::ops::Range<{integer}>` error[E0689]: can't call method `sum` on type `{integer}` --> $DIR/issue-90315.rs:45:26 | LL |     let _sum: i32 = 3..6.sum(); |                          ^^^ can't call method `sum` on type `{integer}` | help: you must surround the range in parentheses to call its `sum` function | LL |     let _sum: i32 = (3..6).sum(); |                     +    + error[E0308]: mismatched types --> $DIR/issue-90315.rs:45:21 | LL |     let _sum: i32 = 3..6.sum(); |               ---   ^^^^^^^^^^ expected `i32`, found struct `std::ops::Range` |               | |               expected due to this | = note: expected type `i32` found struct `std::ops::Range<{integer}>` error[E0689]: can't call method `rev` on type `usize` --> $DIR/issue-90315.rs:53:21 | LL |     for _a in a..=b.rev() { |                     ^^^ can't call method `rev` on type `usize` | help: you must surround the range in parentheses to call its `rev` function | LL |     for _a in (a..=b).rev() { |               +     + error[E0689]: can't call method `contains` on type `{integer}` --> $DIR/issue-90315.rs:58:21 | LL |     let _res = ..10.contains(3); |                     ^^^^^^^^ can't call method `contains` on type `{integer}` | help: you must surround the range in parentheses to call its `contains` function | LL |     let _res = (..10).contains(3); |                +    + error[E0599]: no method named `error_method` found for type `usize` in the current scope --> $DIR/issue-90315.rs:62:15 | LL |     if 1..end.error_method() { |               ^^^^^^^^^^^^ method not found in `usize` error[E0308]: mismatched types --> $DIR/issue-90315.rs:62:8 | LL |     if 1..end.error_method() { |        ^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found struct `std::ops::Range` | = note: expected type `bool` found struct `std::ops::Range<{integer}>` </ins> error[E0599]: `usize` is not an iterator <del> --> $DIR/issue-90315.rs:3:26 </del> <ins> --> $DIR/issue-90315.rs:68:18 </ins> | <del> LL |   for _i in 0..arr.len().rev() { |                          ^^^ `usize` is not an iterator </del> <ins> LL |     let _res = b.take(1)..a; |                  ^^^^ `usize` is not an iterator </ins> | = note: the following trait bounds were not satisfied: `usize: Iterator` which is required by `&mut usize: Iterator` <del> error: aborting due to previous error </del> <ins> error[E0689]: can't call method `take` on ambiguous numeric type `{integer}` --> $DIR/issue-90315.rs:71:25 | LL |     let _res: i32 = ..6.take(2).sum(); |                         ^^^^ | help: you must specify a concrete type for this numeric value, like `i32` | LL |     let _res: i32 = ..6_i32.take(2).sum(); |                       ~~~~~ error[E0308]: mismatched types --> $DIR/issue-90315.rs:71:21 | LL |     let _res: i32 = ..6.take(2).sum(); |               ---   ^^^^^^^^^^^^^^^^^ expected `i32`, found struct `RangeTo` |               | |               expected due to this | = note: expected type `i32` found struct `RangeTo<_>` error: aborting due to 19 previous errors </ins> <del> For more information about this error, try `rustc --explain E0599`. </del> <ins> Some errors have detailed explanations: E0308, E0599, E0689. For more information about an error, try `rustc --explain E0308`. </ins>

Related discussion:
text: <!-- Thank you for filing a bug report! Please provide a short summary of the bug, along with any information you feel relevant to replicating the bug. If you cannot produce a minimal reproduction case (something that would work in isolation), please provide the steps or even link to a repository that causes the problematic output to occur. --Given the following code: The current output is: <!-- The following is not always necessary. --Ideally the output should something like this: label +D-confusing +D-invalid-suggestion <!-- If the problem is not self-explanatory, please provide a rationale for the change. --<!-- If dramatically different output is caused by small changes, consider also adding them here. If you're using the stable version of the compiler, you should also check if the bug also exists in the beta or nightly versions. The output might also be different depending on the Edition. --<!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
claim