We already discussed those rules when we discuss instanceof,  it means that "x instanceof primitive" has different meaning depending on the type of x

No, it does not.  It means "does x match the pattern P" everywhere. It is pattern P is that has different meanings depending on type. This may sound like a silly distinction, but it is not!  Pattern matching is inherently polymorphic -- it is all about reflecting dynamic conversions statically -- and exhibits the *same* polymorphism regardless of where it occurs.

  Object x = ...
  if (x instanceof short) { ... }   // <=> instanceof Short + unboxing

Where x is a reference type, yes.  How is that not a reasonable question to ask?   And, why would we not want duality with:

    record R(short s) { }
    ...
    new R(x)

Asking `r instanceof R(short s)` is akin to asking "could this R have come from passing some x to the R constructor".   And that would work if x were byte, or x were a long literal in the value range of short, or a Short, or....

It's also another creative way to have an action at distance,

More like *the same* way.

Anyway, your opposition to the entirety of this sub-feature is noted.

Reply via email to