Marc Knaup
11/28/2020, 12:45 AMexternal interface Foo
external interface Scope {
@Suppress("INLINE_EXTERNAL_DECLARATION", "NON_ABSTRACT_MEMBER_OF_EXTERNAL_INTERFACE", "WRONG_MODIFIER_CONTAINING_DECLARATION", "WRONG_EXTERNAL_DECLARATION", "WRONG_BODY_OF_EXTERNAL_DECLARATION")
final inline fun Foo.print() {
console.log("${this@Scope}.$this")
}
}
fun main() {
val scope = "scope".unsafeCast<Scope>()
val foo = "foo".unsafeCast<Foo>()
with(scope) { foo.print() }
}
turansky
11/28/2020, 12:56 AMexternal
and ordinal
types for compiler.
Current limitations for external
are unnatural.
In IR even inline methods/properties work for external
🙂Marc Knaup
11/28/2020, 1:01 AMfinal inline
also isn’t allowed in non-external interfaces.turansky
11/29/2020, 12:52 AMMarc Knaup
11/29/2020, 12:55 AMinline
functions.turansky
11/29/2020, 5:55 AM