| // The test cases GenericNull, FieldAccessTest, and InferTypeArgs often fail together. |
| // See the comments at GenericNull for some tips about what might be wrong. |
| |
| public class FieldAccessTest { |
| class MyClass { |
| |
| Object field = new Object(); |
| } |
| |
| class MyException extends RuntimeException { |
| Object field = new Object(); |
| } |
| |
| class MyExceptionA extends MyException {} |
| |
| class MyExceptionB extends MyException {} |
| |
| @SuppressWarnings("nullness") |
| class MyGen<T extends MyClass> { |
| T myClass = null; |
| } |
| |
| void test(Object o, MyGen raw) { |
| // Raw type field access: |
| raw.myClass.field = new Object(); |
| |
| // Intersection type field access |
| Object a = ((MyClass & Cloneable) o).field; |
| try { |
| } catch (MyExceptionA | MyExceptionB ex) { |
| // Union type field access |
| ex.field = new Object(); |
| } |
| } |
| |
| void classLiterals() { |
| Class<?> c = byte.class; |
| Class<?> d = void.class; |
| } |
| } |