код такой
val v = array[0].takeif { it > -1} ?: return
Ну проблема не меняется, для оптимизации должен сгенериться не тот код, который написан, а тот, который оптимальнее (чтобы takeIf с элвисом оптимально соединялись)
Иначе мы в любом случае имеем то, что takeIf возвращает nullable тип, который точно будет Integer с точки зрения джавы