Support new suspend convention in JVM backend partially

Stack-unwinding does not work yet

 #KT-14924 In Progress
This commit is contained in:
Denis Zharkov
2016-11-24 18:43:01 +03:00
parent 2c3b0aeddb
commit 1f98accad2
98 changed files with 366 additions and 190 deletions
@@ -10,7 +10,8 @@ inline fun inline() {}
class External { external fun external() }
operator fun Unit.invoke() {}
infix fun Unit.infix(unit: Unit) {}
class Suspend { suspend fun suspend(c: Continuation<Unit>) {} }
// TODO: support or prohibit references to suspend functions
// class Suspend { suspend fun suspend(c: Continuation<Unit>) {} }
val externalGetter = Unit
external get
@@ -44,11 +45,11 @@ fun box(): String {
assertTrue(Unit::infix.isInfix)
assertFalse(Unit::infix.isSuspend)
assertFalse(Suspend::suspend.isInline)
assertFalse(Suspend::suspend.isExternal)
assertFalse(Suspend::suspend.isOperator)
assertFalse(Suspend::suspend.isInfix)
assertTrue(Suspend::suspend.isSuspend)
// assertFalse(Suspend::suspend.isInline)
// assertFalse(Suspend::suspend.isExternal)
// assertFalse(Suspend::suspend.isOperator)
// assertFalse(Suspend::suspend.isInfix)
// assertTrue(Suspend::suspend.isSuspend)
assertTrue(::externalGetter.getter.isExternal)
assertFalse(::externalGetter.getter.isInline)