Support for primitive types in instanceof and type patterns
Brian Goetz
brian.goetz at oracle.com
Wed Nov 16 16:59:47 UTC 2022
I agree and disagree.
I agree that range checking of other ranges is useful and something that
belongs on the "candidate features" list. In fact, it's been on my list
for a while.
But I disagree that this is the time or place for it, or the best way to
do it. Range checking may be one way to view "instanceof byte", but a
more general way is that is the precondition for safely casting to
byte. And the language defines casting rules not only from other
integral types, but from floating point types as well.
That said, we've been keeping our eye on ranges in general, since they
are useful in lots of places besides patterns, such as:
// loops
for (int i : 1..10) // we can argue over inclusive vs exclusive
for (int i : array.range()) // range returns a Range<int>, which
is Iterable<int>
// case labels
case 1..10: ...
We could do this today, but we could do better tomorrow with features
coming from Valhalla. This is how I'm thinking we'll get there.
On 11/16/2022 11:50 AM, Tagir Valeev wrote:
> Hello!
>
> From what I see, `instanceof byte`, `instanceof short`, `instanceof
> char` and `instanceof int` applied to a wider integral value are four
> range-checking conditions. In many cases, people may want to check
> against different (but compile-time constant) range. It looks too
> restrictive to support only four specific ranges. I understand the
> rationale about symmetry between primitive and reference types but the
> usefulness looks very limited to me. Supporting custom ranges, like
> `instanceof int(>0) x` or `instanceof byte(0..100) b` or something
> like this (with dominance and exhaustiveness checks in switch) would
> be much more useful. I agree that this would also require much more
> work, but at least it would be nice to take this in mind as a possible
> future improvement.
>
> With best regards,
> Tagir Valeev.
>
> On Tue, Nov 15, 2022 at 12:20 AM Angelos Bimpoudis
> <angelos.bimpoudis at oracle.com> wrote:
>> Dear experts,
>>
>> The draft JEP for adding support for primitive types in instanceof and type patterns, that has been previously discussed on this list, is available at:
>>
>> https://bugs.openjdk.org/browse/JDK-8288476
>>
>> Suggestions are welcomed!
>> Angelos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-spec-observers/attachments/20221116/f8a7e314/attachment.htm>
More information about the amber-spec-observers
mailing list