[External] : Re: Nullity (was: Pattern features for next iteration)

Remi Forax forax at univ-mlv.fr
Fri Jan 22 17:20:02 UTC 2021


[...]

>> Also, what about several type patterns, like `case null, Integer _,
>> String _ -> ... // nulls, integers, and strings but no other types go
>> here`? What about `case Integer _, null, String _ ->...`?
> 
> Right now, you can't say that, so it's not a problem :)
> 
> I think what this speaks to is that the notion of "patterns with binding
> variables" is a little fuzzy, and needs to be tightened up a bit.
> Conceptually, what you write is reasonable and seems useful, so we
> wouldn't want to foreclose on that.
> 
> Given that "case a, b, c" and "case a: case b: case c:" have no semantic
> difference now, I think we should continue with that, which suggests
> that forcing the null to come first is an arbitrary choice.  Also, I
> don't see a problem with even nontrivial fallthrough here:
> 
>      case null:
>          System.out.println("nulls are annoying");
>           // fallthrough
>      case Object o:
> 
> I don't see any reason to outlaw this, so defining in terms of
> fallthrough is reasonable.  The weird new rule is that "if a case null
> falls into a `case T t`, t is bound to null and considered DA".

It's a kind of slippery slope, null is the only possible value of the null type, so

  case String:
    ...
    // fallthrough
  case Object o:

can also be seen as something reasonable.

Where should we stop ?

Rémi


More information about the amber-spec-experts mailing list