| package nullness.generics; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.Set; |
| import org.checkerframework.checker.nullness.qual.*; |
| |
| // test related to issue 429: https://github.com/typetools/checker-framework/issues/429 |
| public class KeyForPolyKeyFor { |
| // TODO: Figure out why diamond operator does not work: |
| // Map<@KeyFor("dict") String, String> dict = new HashMap<>(); |
| Map<@KeyFor("dict") String, String> dict = new HashMap<@KeyFor("dict") String, String>(); |
| |
| void m() { |
| Set<@KeyFor("dict") String> s = nounSubset(dict.keySet()); |
| |
| for (@KeyFor("dict") String noun : nounSubset(dict.keySet())) {} |
| } |
| |
| // This method's declaration uses no @KeyFor annotations because in addition to being used by the |
| // dictionary feature, it is also used by a spell checker that only stores sets of words and does |
| // not use the notions of dictionaries, maps or keys. |
| Set<@PolyKeyFor String> nounSubset(Set<@PolyKeyFor String> words) { |
| return words; |
| } |
| } |