// See KT-969 fun f() { var s: String? s = "a" var s1 = "" // String � ? if (s != null) { // Redundant s1.length // We can do smartcast here and below s1 = s.toString() // return String? s1.length s1 = s s1.length // It's just an assignment without smartcast val s2 = s // But smartcast can be done here s2.length // And also here val s3 = s.toString() s3.length } }