Size: a a a

Kotlin Community

2020 January 29

AM

Andrew Mikhaylov in Kotlin Community
@ouril я не уверен, что вы планировали шарить свою локацию в чатик, на всякий случай снёс.
источник

A

Alex in Kotlin Community
Андрей Захаров
Серьезно?
я да, пришел за мнением экспертов
источник

АЗ

Андрей Захаров in Kotlin Community
Я вижу ошибку
источник

АЗ

Андрей Захаров in Kotlin Community
Тип возвращаемого значения не указан, значит Unit. Тут есть вероятность что последней строкой будет выполняться сравнение, а это даёт булево и т.к. это последняя строка то это и возвращаемое значение
источник

BP

Bogdan Panchenko in Kotlin Community
Alex
это баг или фича? 😄

fun main() {
   println("Hello, world")
   
   crashFun()
}

fun crashFun() {
      @Suppress("test")
      if (Math.random() > -1) {
           if (Math.random() < -1) {
               var x = 10
           } else {
               Math.random() > 0.1
           }
       }
}


https://pl.kotl.in/siCrRdx1G

Exception in thread "main" java.lang.ClassCastException: java.lang.Boolean cannot be cast to kotlin.Unit
at FileKt.crashFun (File.kt:15)
at FileKt.main (File.kt:9)
at FileKt.main (File.kt:-1)
bug
источник

АЗ

Андрей Захаров in Kotlin Community
Вот и получаете попытку преобразования булевого значения в Unit
источник

AM

Andrew Mikhaylov in Kotlin Community
У меня есть смутное предположение, что @Suppress превращает внешний if в выражение, из-за чего всё накрывается тазиком, но это ж по идее компайл-тайм ошибка тогда была бы.
источник

BP

Bogdan Panchenko in Kotlin Community
Alex
это баг или фича? 😄

fun main() {
   println("Hello, world")
   
   crashFun()
}

fun crashFun() {
      @Suppress("test")
      if (Math.random() > -1) {
           if (Math.random() < -1) {
               var x = 10
           } else {
               Math.random() > 0.1
           }
       }
}


https://pl.kotl.in/siCrRdx1G

Exception in thread "main" java.lang.ClassCastException: java.lang.Boolean cannot be cast to kotlin.Unit
at FileKt.crashFun (File.kt:15)
at FileKt.main (File.kt:9)
at FileKt.main (File.kt:-1)
у меня начало компилися
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
У меня есть смутное предположение, что @Suppress превращает внешний if в выражение, из-за чего всё накрывается тазиком, но это ж по идее компайл-тайм ошибка тогда была бы.
Так и есть!
источник

A

Alex in Kotlin Community
Андрей Захаров
Тип возвращаемого значения не указан, значит Unit. Тут есть вероятность что последней строкой будет выполняться сравнение, а это даёт булево и т.к. это последняя строка то это и возвращаемое значение
тип возвращаемого значение чего? извиняюсь за вопрос
источник

AM

Andrew Mikhaylov in Kotlin Community
При этом на JS-ном бекенде краша нет
источник

AM

Andrew Mikhaylov in Kotlin Community
public final void check() {
   Default r = Random.Default;
   if ((double)r.nextFloat() > 0.5D) {
      Object var10000;
      if ((double)r.nextFloat() < 0.5D) {
         int x = true;
         var10000 = Unit.INSTANCE;
      } else {
         var10000 = true;
      }

      Unit var3 = (Unit)var10000;
   }

}
источник

АЗ

Андрей Захаров in Kotlin Community
Alex
тип возвращаемого значение чего? извиняюсь за вопрос
Метода
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
public final void check() {
   Default r = Random.Default;
   if ((double)r.nextFloat() > 0.5D) {
      Object var10000;
      if ((double)r.nextFloat() < 0.5D) {
         int x = true;
         var10000 = Unit.INSTANCE;
      } else {
         var10000 = true;
      }

      Unit var3 = (Unit)var10000;
   }

}
ну єто все равно бага, как ни крути
источник

AM

Andrew Mikhaylov in Kotlin Community
А вот без аннотации

public final void check() {
   Default r = Random.Default;
   if ((double)r.nextFloat() > 0.5D) {
      if ((double)r.nextFloat() < 0.5D) {
         boolean var2 = true;
      }
   }

}
источник

BP

Bogdan Panchenko in Kotlin Community
котлин доказывает что аннотации - зло
источник

AM

Andrew Mikhaylov in Kotlin Community
Вторая ветка, которая возвращала неиспользованное значение, просто отпала
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну и результат ифа никуда не записывается
источник

AM

Andrew Mikhaylov in Kotlin Community
Андрей Захаров
Метода
Пишите на kotl.in/issue, в общем :)
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Пишите на kotl.in/issue, в общем :)
источник