Hi Remi,
Thanks. I've filled:
https://bugs.openjdk.java.net/browse/JDK-8268320
FWIW, I think compiler-dev is a better place for reports like this.
Jan
On 07. 06. 21 11:03, Remi Forax wrote:
Hi all,
with this code
sealed interface Vehicle {}
record Car(String owner, String color) implements Vehicle {}
record Bus(String owner) implements Vehicle {}
public static void example3() {
var vehicles = List.of(
new Car("Bob", "red"),
new Bus("Ana")
);
var tax = vehicles.stream()
.mapToInt(v -> switch(v) {
case Car -> 100;
case Bus -> 200;
default -> throw new AssertionError();
}).sum();
System.out.println("tax " + tax);
}
If there is no binding name in the case,
case Car
instead of
case Car car
the error message is not very explicit
PatternMatching101.java:40: error: cannot find symbol
case Car -> 100;
^
symbol: variable Car
location: class PatternMatching101
I believe that in this case, it's possible to know that this is a switch on
types, so provide a better error message.
regards,
Rémi