The type inference algorithm will now consider core predicates when inferring the types of locals used in conditional expressions. In situations where a value could potentially be nil (represented by the symbol clj-nil in type tags), if a simple symbol referring to such a value is used as the test in a conditional, the type inference algorithm will infer that the value cannot be nil in the then branch. The following function, which uses f and would previously be inferred as returning #{number clj-nil} , is now inferred as returning number :