/tmp/duangsuse.sock
23 subscribers
303 photos
3 videos
92 files
337 links
从 duangsuse::Echo (@dsuse) 跟进出来的分支,将在作者恢复原帐号访问的时候合并删除。
Download Telegram
/tmp/duangsuse.sock
> Task :parserkt-util:compileKotlinJs FAILED e: java.lang.StackOverflowError at kotlin.collections.ArraysKt___ArraysKt.map(_Arrays.kt:8888) at org.jetbrains.kotlin.name.FqNameUnsafe.pathSegments(FqNameUnsafe.java:158) at org.jetbra…
我通过 undo last commit 逐个排查修改文件后已经找到了原因,的确是 inline type parameter 的问题

作为一个 Kotlin 程序员的爱心…… 虽然此 bug 有 workaround,但我还是把它提交给 JetBrains 的好
现在正在撰写最小 problem file
This media is not supported in your browser
VIEW IN TELEGRAM
[duangsuse@susepc tmp]$ kotlinc-js SOE.kt -output a.js
exception: java.lang.StackOverflowError
at org.jetbrains.kotlin.js.translate.expression.ExpressionVisitor.getPrimitiveClass(ExpressionVisitor.java:303)

成功重现 bug,正在简化问题文件
inline fun <reified T: Any> T.compareUsing(other: Any?, crossinline compare: T.(T) -> Boolean): Boolean {
if (this === other) return true
return other is T && compare(other)
}

interface Animal<FOOD> where FOOD: Comparable<FOOD> {
val food: FOOD
}

abstract class BaseAnimal<FOOD>(override val food: FOOD): Animal<FOOD> where FOOD: Comparable<FOOD> {
override fun equals(other: Any?) = compareUsing(other) { food == it.food }
}

这是基本问题输入,即便我不用 intersection upper-bound 也是一样

inline fun <reified T> T.causeBug() {}

interface SomeToImplement<SOME_TVAR>

interface SomeInterface<T> where T: SomeToImplement<T> {
val field: T
}

abstract class SomeChild<T>(override val field: T): SomeInterface<T> where T: SomeToImplement<T> {
fun op() = causeBug()
}
即便 causeBug 的 T 不是 receiver 也是一样
只有在 SOME_TVAR 包含对继承自自己的 Type 的引用时候才会引发无尽递归
T: SomeToImplement<Int> 则不会引起 bug

inline fun <reified T> T.causeBug() {}

interface SomeToImplement<SELF_TVAR>

interface SomeInterface<T> where T: SomeToImplement<T>

abstract class SomeChild<T>: SomeInterface<T> where T: SomeToImplement<T> {
fun op() = causeBug()
}
提交了这个 bug 就去睡觉~ 但愿能尽早修复
StackOverflowException when using reified recursive bound for type parameter in Kotlin2Js

https://youtrack.jetbrains.com/issue/KT-37128
提交了
Forwarded from Deleted Account
object Yes {
fun main(vararg args: String) {
while(true) println(args.firstOrNull() ?: "y")
}
}

(迫真)buffer 什么的就算了
鸡它太美……
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-dsl-marker/index.html
@DslMarker annotation class HtmlTag
@HtmlTag class TagHtml()
@HtmlTag class TagHead()

结果 html { head { head {} } } 同名 member 就可以 closest one wins 吗……

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-builder-inference/index.html

无法理解,表述太复杂,看示例是能从 fun <T> (op: @DslMarker Receiver<T>.() -> Unit) 这样的 function argument 推导出 T 一样
HomoOS: 🌚???
Forwarded from POTUS
Forwarded from Deleted Account
不懂为什么要这么画
这片蓝色本应人人平等
可是有些国家的水更蓝一些
高科技,呵呵。
Forwarded from POTUS
Forwarded from Deleted Account
你是怎么理解的,在我看来都有做得不对的地方
Forwarded from Deleted Account
但是对孙扬的网评到这个地步,远远不至于。正规的事正规解决。
Forwarded from Deleted Account
理由?
Forwarded from Deleted Account
证据?