| // TARGET_BACKEND: JVM | |
| // FILE: J.java | |
| import org.jetbrains.annotations.NotNull; | |
| import java.util.Collection; | |
| import java.util.Iterator; | |
| import java.util.List; | |
| import java.util.ListIterator; | |
| public class J extends MyList { | |
| @Override | |
| public int getSize() { | |
| return 55; | |
| } | |
| @Override | |
| public int lastIndexOf(String s) { | |
| return 0; | |
| } | |
| @Override | |
| public int indexOf(String s) { | |
| return 0; | |
| } | |
| @Override | |
| public boolean contains(String s) { | |
| return true; | |
| } | |
| @Override | |
| public boolean isEmpty() { | |
| return false; | |
| } | |
| @NotNull | |
| @Override | |
| public Iterator<String> iterator() { | |
| return null; | |
| } | |
| @Override | |
| public boolean containsAll(Collection<?> c) { | |
| return false; | |
| } | |
| @Override | |
| public String get(int index) { | |
| return null; | |
| } | |
| @Override | |
| public List<String> subList(int i, int i1) { | |
| return super.subList(i, i1); | |
| } | |
| @Override | |
| public ListIterator<String> listIterator(int i) { | |
| return super.listIterator(i); | |
| } | |
| @Override | |
| public ListIterator<String> listIterator() { | |
| return super.listIterator(); | |
| } | |
| } | |
| // FILE: test.kt | |
| abstract class MyList : List<String> | |
| class ListImpl : J() { | |
| override val size: Int get() = super.size + 1 | |
| } | |
| fun box(): String { | |
| val impl = ListImpl() | |
| if (impl.size != 56) return "fail 1" | |
| if (!impl.contains("abc")) return "fail 2" | |
| val l: List<String> = impl | |
| if (l.size != 56) return "fail 3" | |
| if (!l.contains("abc")) return "fail 4" | |
| val anyList: List<Any?> = impl as List<Any?> | |
| if (anyList.size != 56) return "fail 5" | |
| if (!anyList.contains("abc")) return "fail 6" | |
| if (anyList.contains(1)) return "fail 7" | |
| if (anyList.contains(null)) return "fail 8" | |
| return "OK" | |
| } |