On Fri, 18 Jun 2021 09:08:04 GMT, Jan Lahoda <[email protected]> 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