Re: [RFA] Add inclusive range support for Rust

Tom Tromey
2018-04-26T19:51:28Z

>>>>> "Joel" == Joel Brobecker <brobecker@adacore.com> writes:

>> BOTH_BOUND_DEFAULT, /* "(:)" */
>> LOW_BOUND_DEFAULT, /* "(:high)" */
>> HIGH_BOUND_DEFAULT, /* "(low:)" */
>> - NONE_BOUND_DEFAULT /* "(low:high)" */
>> + NONE_BOUND_DEFAULT, /* "(low:high)" */
>> + NONE_BOUND_DEFAULT_INCLUSIVE, /* Rust "low..=high" */
>> + LOW_BOUND_DEFAULT_INCLUSIVE, /* Rust "..=high" */
>> };

Joel> Where the bounds exclusive before? The comments and the samples
Joel> of code I have been finding seem to indicate that the bounds
Joel> were already considered inclusive. But I can see how this is
Joel> not all that clear.

Yes, I think you are right -- they were inclusive for Fortran.
From value_f90_subarray:

return value_slice (array, low_bound, high_bound - low_bound + 1);

What was weird then was that Rust treated them as exclusive, because at
the time Rust only had exclusive ranges.

I can change this and rename the new constants *_EXCLUSIVE.

Joel> Perhaps one way to clarify that is to use language-agnostic mathematical
Joel> notations for the ranges? Eg, using square brackets such as "[1:3[" or
Joel> perhaps "[1:3)" as I have sometimes seen?

I think it's simple to just write out some text explaining the meanings.
Then we won't need to worry whether someone knows the notation.

Tom