Size: a a a

Kotlin Community

2019 October 21

PL

Patrick Lemke in Kotlin Community
Leonid Startsev
it means this function is not available in common
Yes but I don't want to compile for JS anyway
источник

PL

Patrick Lemke in Kotlin Community
Do I have to create a new sourceset and place my code in that folder?
источник

LS

Leonid Startsev in Kotlin Community
nope. unfortunately, you have to provide your own expect/actual pair
источник

PL

Patrick Lemke in Kotlin Community
How would I be able to access the library? The code needs to support JVM, Windows, iOS
источник

PL

Patrick Lemke in Kotlin Community
Leonid Startsev
nope. unfortunately, you have to provide your own expect/actual pair
That seems weird. So for each target I need to supply the corrosponding runBlocking function?
источник

LS

Leonid Startsev in Kotlin Community
for each platform sourceset. i.e. 2 times – for jvm and native
источник

PL

Patrick Lemke in Kotlin Community
ok that means I have to use expect runBlocking
источник

PL

Patrick Lemke in Kotlin Community
And the compiler will be able to figure out the correct implementation on the fly?
источник

PL

Patrick Lemke in Kotlin Community
Because I can link those libraries in the source sets
источник

LS

Leonid Startsev in Kotlin Community
Patrick Lemke
And the compiler will be able to figure out the correct implementation on the fly?
no. provide actual fun runBlocking(...) = kotlinx.coroutines.runBlocking(...)
источник

PL

Patrick Lemke in Kotlin Community
Leonid Startsev
no. provide actual fun runBlocking(...) = kotlinx.coroutines.runBlocking(...)
I see, thank you very much for clarifying
источник

PL

Patrick Lemke in Kotlin Community
It worked! Thanks again for your help :D
источник

AG

Amos 'D Great in Kotlin Community
Now give him a 🍺  😁
источник

PL

Patrick Lemke in Kotlin Community
Haha I'm happy to offer some sats via lightning 🔥
источник

GR

Gor Rushanyan in Kotlin Community
Делал запрос для ретрофита с полиморфным списком и словил
java.lang.IllegalArgumentException: Parameter type must not include a type variable or wildcard: java.util.List<? extends …>

Удивился новой ошибке и нагуглил @JvmSuppressWildcards

Но потом таки попробовал заменит на List на Array и все без аннотации заработало.

Может кто-то обьяснить что тут произошло?
Я так понимаю на уровне Jvm явно есть проверка именно на коллекции листа и мапы? А котлин свой еррей в результате в обычный джавовский превратит?
источник

QH

Quantum Harmonizer in Kotlin Community
Gor Rushanyan
Делал запрос для ретрофита с полиморфным списком и словил
java.lang.IllegalArgumentException: Parameter type must not include a type variable or wildcard: java.util.List<? extends …>

Удивился новой ошибке и нагуглил @JvmSuppressWildcards

Но потом таки попробовал заменит на List на Array и все без аннотации заработало.

Может кто-то обьяснить что тут произошло?
Я так понимаю на уровне Jvm явно есть проверка именно на коллекции листа и мапы? А котлин свой еррей в результате в обычный джавовский превратит?
List — это read-only интерфейс, у него out-параметр: interface List<out T>. Компилятор генерирует для него ? extends, чтобы удобно было использовать из джавы.
Array (или MutableList) изменяемые, у них инвариантный параметр (interface MutableList<T>), для него wildcard не генерируется.
Array в котлине компилируется в голый массив[], да.
источник

GR

Gor Rushanyan in Kotlin Community
Ага
источник

GR

Gor Rushanyan in Kotlin Community
Т.е. с мутабл листом тоже пройдет? Сейчас попробуем.
источник

QH

Quantum Harmonizer in Kotlin Community
но лучше всего починить баг в ретрофите или в конвертере
источник

GR

Gor Rushanyan in Kotlin Community
Конвертер  moshi работает, а с ретрофитом находил похожие штуки но с мапой (https://github.com/square/retrofit/issues/1805), там Вортон вообще дикий вариант с Object предлагает
источник