[patterns] Unchecked cast warning is absent?

Tagir Valeev amaembo at gmail.com
Mon Oct 2 09:45:43 UTC 2017


Hello!

Just tried to play with pattern matching implementation. Seems that
the matching against a non-reifiable type is unsafe, which is
expected. Should the warning be displayed in this case?

E.g.:

import java.util.*;

public class ListTest {

  static void matches(Object obj) {
    if(obj __matches List<String> list) {
      System.out.println(list.get(0));
    }
  }

  public static void main(String[] args) {
    matches(Collections.singletonList(1));
  }
}

$ ~/j/bin/javac -Xlint:all ListTest.java
(compilation successful, no warning)
$ ~/j/bin/java ListTest
Exception in thread "main" java.lang.ClassCastException:
java.base/java.lang.Integer cannot be cast to
java.base/java.lang.String
at ListTest.matches(ListTest.java:7)
at ListTest.main(ListTest.java:12)

With best regards,
Tagir Valeev.


More information about the amber-dev mailing list