| // WITH_STDLIB | |
| import kotlin.test.* | |
| // CHECK_CALLED_IN_SCOPE: function=charCodeAt scope=getStringChar | |
| // CHECK_NOT_CALLED_IN_SCOPE: function=charSequenceGet scope=getStringChar | |
| fun getStringChar(s: String, index: Int): Char = s[index] | |
| // CHECK_CALLED_IN_SCOPE: function=charSequenceGet scope=getCharSequenceChar | |
| // CHECK_NOT_CALLED_IN_SCOPE: function=charCodeAt scope=getCharSequenceChar | |
| fun getCharSequenceChar(s: CharSequence, index: Int): Char = s[index] | |
| private class MyCharSequence(val s: String) : CharSequence by s | |
| fun box(): String { | |
| assertEquals('a', getStringChar("a", 0)) | |
| assertEquals('a', getCharSequenceChar("a", 0)) | |
| assertEquals('a', getCharSequenceChar(MyCharSequence("a"), 0)) | |
| assertEquals(Char.MIN_VALUE, getStringChar("${Char.MIN_VALUE}", 0)) | |
| assertEquals(Char.MIN_VALUE, getCharSequenceChar("${Char.MIN_VALUE}", 0)) | |
| assertEquals(Char.MIN_VALUE, getCharSequenceChar(MyCharSequence("${Char.MIN_VALUE}"), 0)) | |
| assertEquals(Char.MAX_VALUE, getStringChar("${Char.MAX_VALUE}", 0)) | |
| assertEquals(Char.MAX_VALUE, getCharSequenceChar("${Char.MAX_VALUE}", 0)) | |
| assertEquals(Char.MAX_VALUE, getCharSequenceChar(MyCharSequence("${Char.MAX_VALUE}"), 0)) | |
| return "OK" | |
| } |