// Test case for issue #595: // https://github.com/typetools/checker-framework/issues/595 // @skip-test until the issue is fixed import java.util.Map; public abstract class KeyForAutoboxing { public void working1(Object key, Map<Object, Object> m) { if (!m.containsKey(key)) { m.put(key, new Object()); } m.get(key).toString(); } public void working2(Integer key, Map<Integer, Object> m) { if (!m.containsKey(key)) { m.put(key, new Object()); } m.get(key).toString(); } public void working3(Double key, Map<Double, Object> m) { if (!m.containsKey(key)) { m.put(key, new Object()); } m.get(key).toString(); } public void notWorking1(int key, Map<Integer, Object> m) { if (!m.containsKey(key)) { m.put(key, new Object()); } m.get(key).toString(); // Should not generate error but does } public void notWorking2(double key, Map<Double, Object> m) { if (!m.containsKey(key)) { m.put(key, new Object()); } m.get(key).toString(); // Should not generate error but does } public void notWorking3(double key, Map<Double, Object> m) { if (m.containsKey(key)) { m.get(key).toString(); // Should not generate error but does } } public void notWorking4(double key, Map<Double, Object> m) { if (m.get(key) != null) { m.get(key).toString(); // Should not generate error but does } } public void notWorking5(double key, Map<Double, Object> m) { if (m.get(Double.valueOf(key)) != null) { m.get(Double.valueOf(key)).toString(); // Should not generate error but does } } }