package com.jetbrains.inspections; import com.jetbrains.CallMe; public class NullityInference { public void testAnnotationInference(Object nullityUnknown) { if (CallMe.neverReturnsNull() == null) { //Condition 'CallMe.neverReturnsNull() == null' is always 'false'. } if (CallMe.alwaysReturnsSame(new Object()) == null) { //Condition 'CallMe.alwaysReturnsSame(new Object()) == null' is always 'false'. } if (CallMe.alwaysReturnsSame(null) == null) { //Condition 'CallMe.alwaysReturnsSame(new Object()) == null' is always 'true'. } if (!CallMe.isNull(nullityUnknown)) { System.out.println(nullityUnknown.toString()); return; } System.out.println(nullityUnknown.toString()); //Method invocation 'nullityUnknown.toString()' may produce 'java.lang.NullPointerException' System.out.println(nullityUnknown.toString()); //These do not seem to work correctly: System.out.println(CallMe.alwaysReturnsNull().toString()); System.out.println(CallMe.sometimesReturnsNull().toString()); CallMe.alwaysExpectsNull(null); CallMe.neverExpectsNull(null); //Passing 'null' argument to parameter annotated as @NotNull (never explicitly annotated) } }