On Fri, 18 Jun 2021 09:08:04 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java line 222:
>> 
>>> 220:                                       String invocationName,
>>> 221:                                       MethodType invocationType,
>>> 222:                                       Object... labels) throws 
>>> Throwable {
>> 
>> Is it not better to take a Class and a String... as separated parameters 
>> instead of taking Object... and doing the conversion to a Class and an array 
>> of String later in Java
>
> This is to represent cases like:
> 
>          E sel = null;
>          switch (sel) {
>              case A -> {}
>              case E e && "B".equals(e.name()) -> {}
>              case C -> {}
>              case E e -> {}
>          }
> 
> 
> The method needs to know which cases represent constants and which represent 
> patterns (even though the primary type of all the patterns will be the enum 
> type), so we cannot easily put the `Class` first (or elide it), and then a 
> `String...`, unless we represent the patterns in the `String...` array 
> somehow.

Ok got it,
At some point, we will have to represent patterns either as String and parse 
them or as Condy of condy if we want a more structured recursive way.

-------------

PR: https://git.openjdk.java.net/jdk17/pull/81

Reply via email to