
Pavel
23.04.2018
22:03:45
https://simplecat.tk/shots/shot-20180424-010336.png

DY
23.04.2018
22:06:55
build.gradle и все остальное должны на уровень выше лежать, по идее. не внутри src
а, показалось

Pavel
23.04.2018
22:07:32
Ага)

Google

Pavel
23.04.2018
22:08:58
У меня вообще нет предположений.

DY
23.04.2018
22:10:41
а если новый проект создать всё ок?

Pavel
23.04.2018
22:11:13
Я не пробовал. Просто это и есть новый проект)

DY
23.04.2018
22:12:31
что-то с ним не так, мб ? но я тоже не вижу причины

Александр
23.04.2018
22:14:19
А почему груп и версию выделяет в билде?

Pavel
23.04.2018
22:17:06
https://simplecat.tk/shots/shot-20180424-011625.png
Вот такая подсказка. Но вообще она горит прям после создания нового проекта.
version тоже самое

Александр
23.04.2018
22:19:02
А рефреш (обновление проекта, хз как называется) в градл вкладке ничо не дает?

DY
23.04.2018
22:19:04
да, студия часто начала в грэдле на такое ругаться, в чем причина не знаю)

Pavel
23.04.2018
22:19:16
Выяснил, что создание нового проекта решает проблему.

DY
23.04.2018
22:19:18

Pavel
23.04.2018
22:21:56

Google

Pavel
23.04.2018
22:23:05
Лан парни, спасибо, я ща быстренько перескочу на новый проект. Благо тут три файла.

Alexey
24.04.2018
07:38:57
Тут какое странное поведение заметил с ObjectMapper + reified
https://gist.github.com/tethys-json/75129d69c7b0d6cd8a970898ef77bd6d
Подскажите в чем трабл
По идеи же должен получится одинаковый код
Или всё таки есть какие то ограничения на вложенные reified?

dimiii
24.04.2018
08:18:47
fun main(args: Array<String>) {
val mapper = ObjectMapper().registerKotlinModule()
val json = """{"foo":{"bar":1}}"""
val f1 = mapper.readValue<Wrapper<Foo>>(json).foo
val f2 = reifiedParse<Foo>(mapper, json)
}
Exception in thread "main" java.lang.ClassCastException: java.base/java.util.LinkedHashMap cannot be cast to Foo
at QuestionsKt.main(questions.kt:77)
Найс

Alexey
24.04.2018
08:19:05
Ну дак да
Видимо с вложенными типами беда

dimiii
24.04.2018
08:19:59
Ну дак да
Жуть какая, надо будет присмотреться, глаз алмаз!
Ну дак да
Лечится кстати квантификацией по Foo:
<reified A: Foo>

Va
24.04.2018
08:37:03

Alexey
24.04.2018
08:38:06

Quantum Harmonizer
24.04.2018
08:39:14
reified полне может использоваться как полноценный type-аргумент для TypeToken/TypeReference.

dimiii
24.04.2018
08:40:19

Quantum Harmonizer
24.04.2018
08:41:04

dimiii
24.04.2018
08:42:09

Alexey
24.04.2018
08:42:09
Странная херня в байткоде
public final class BugKt$main$$inlined$readValue$1 extends com.fasterxml.jackson.core.type.TypeReference<Wrapper<Foo>>
public final class BugKt$reifiedParse$$inlined$readValue$1 extends com.fasterxml.jackson.core.type.TypeReference<Wrapper<A>>

Quantum Harmonizer
24.04.2018
08:42:38

Google

Alexey
24.04.2018
08:43:16
получается inline - это вовсе не инлайн, там еще нагенерились статик функции

Quantum Harmonizer
24.04.2018
08:44:30

Sergey
24.04.2018
08:44:46
просто в readValue используется как раз хак с анонимным классом в inline функции. поэтому на каждый вызов readValue генерируется класс
а то что типы не проходят через две инлайн функции похоже на баг компилятора
можете com.fasterxml.jackson.module.kotlin.readValue показать?

Alexey
24.04.2018
08:45:32

Va
24.04.2018
08:46:03

Alexey
24.04.2018
08:46:10
https://gist.github.com/tethys-json/bdf890cb9cd9647d0e1d7d721006b441

Sergey
24.04.2018
08:47:19
статик сгенерился чтобы функцию можно было вызывать из явы, в вашем примере этот статик не вызывается
все содержимое reifiedParse как раз подставилось в main

Alexey
24.04.2018
08:48:19
Собственно вот тут и есть проблема
TypeReference localTypeReference = (TypeReference)new BugKt.reifiedParse..inlined.readValue.1();
Тип не указывается, и поэтому там Object подставляется и в ObjectMapper генерит Map

Alexey
24.04.2018
08:48:28
Ну это конечно подстава от компилятора

Va
24.04.2018
08:49:50

Alexey
24.04.2018
08:50:07
Это компилятор не подставил все типы

Va
24.04.2018
08:50:35
потому что не было бы type erasure, все было бы ок )

Quantum Harmonizer
24.04.2018
08:50:48

Alexey
24.04.2018
08:50:49
были бы другие проблемы

Quantum Harmonizer
24.04.2018
08:51:17

Google

Евгений
24.04.2018
08:53:07
помоему все работает как задуманно, дженерики в жаве же так и работают, вычисляется максимально подходящий общий тип, у тебя в коде явно прописано шо женерик есть Any, а Any ничто иное как Object, там где-то вверху кастуй как тебе надо, но внутри функции будет все равно Object

Quantum Harmonizer
24.04.2018
08:54:36

Admin
ERROR: S client not available

Quantum Harmonizer
24.04.2018
08:54:48
тут есть ключевое слово reified

Sergey
24.04.2018
08:54:52

dimiii
24.04.2018
08:54:53

Sergey
24.04.2018
08:59:42
вобще на простом примере не воспроизводится:
abstract class TypeToken<T>
inline fun <reified T> a() =
((object : TypeToken<T>() {}).javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0]
inline fun <reified T> b() = a<T>()
class Test
fun main(args: Array<String>) {
println(a<List<Test>>())
println(b<List<Test>>())
}
java.util.List<? extends Test>
java.util.List<? extends Test>

Alexey
24.04.2018
09:01:03

Sergey
24.04.2018
09:01:17
ну, там list<T>
можно еще вложить, сейчас

Alexey
24.04.2018
09:01:29
нет
Внутри функции a

Sergey
24.04.2018
09:02:17
а, понял

Alexey
24.04.2018
09:03:18
У меня в итоге вот так Wrapper<A>

Sergey
24.04.2018
09:03:23
abstract class TypeToken<T>
inline fun <reified T> a() =
((object : TypeToken<T>() {}).javaClass.genericSuperclass as ParameterizedType).actualTypeArguments[0]
inline fun <reified T> b() = a<List<T>>()
class Test
fun main(args: Array<String>) {
println(a<List<Test>>())
println(b<Test>())
}
java.util.List<? extends Test>
java.util.List<? extends T>
да, так не пашет

Alexey
24.04.2018
09:04:18
Quantum можешь завести тикет, если не сильно впадлу?

Quantum Harmonizer
24.04.2018
09:05:07
кажется, уже есть https://youtrack.jetbrains.com/issue/KT-11825

Alexey
24.04.2018
09:05:43
?

dimiii
24.04.2018
09:05:50
07 Apr 2016 17:46 - лол кек чебурек

Google

dimiii
24.04.2018
09:06:18
два годика исполнилось на днях

Alexey
24.04.2018
09:06:29
Видимо бай дизайн промонали

Quantum Harmonizer
24.04.2018
09:06:55
Там три лайка. Значит, есть более приоритетные и критические задачи.

Andrew
24.04.2018
09:07:54
Пацаны, помог чем могу.

Alexey
24.04.2018
09:11:38

Andrew
24.04.2018
09:14:33
https://github.com/JetBrains/kotlin/blob/master/spec-docs/reified-type-parameters.md
Я не вижу упоминаний того, как reified должен влиять на вложенные типы. Есть какая-то мутная строчка в определении, что для дженерика каждый параметр тоже должен быть reified, но я пока ума не приложу, можно ли это как-то к вашей проблеме применить.

dimiii
24.04.2018
10:01:41

Sergey
24.04.2018
10:03:51
И, это видимо просто из за того что делали прагматично:
org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.kt
нужно немного там поправить вроде )

dimiii
24.04.2018
10:05:41

Anton
24.04.2018
14:55:51
Слушайте, а при навигации по котлин-зависимостям к Intellij idea не показываются некоторые элементы навигации, например пин "Has subclasses". Это норма или настраивается?