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

Reply via email to