Support 'break' and 'continue' in expressions

- generate fake jump instructions so that we can always analyze stack depths
- fix stack before break and continue by dropping excessive elements (e.g., *a*.foo(*b*, c?:continue))
- Analyzer rewritten in Kotlin, with more flexible control of CFG traversal

 #Fixed KT-3340
 #Fixed KT-4258
 #Fixed KT-7941
This commit is contained in:
dnpetrov
2015-06-23 12:13:48 +03:00
parent d937f385cd
commit c24e6b5698
21 changed files with 739 additions and 18 deletions
@@ -0,0 +1,7 @@
fun box(): String {
var s = "OK"
for (i in 1..3) {
s = s + if (i<2) "" else continue
}
return s
}