Enable kotlin.collections support for UL classes

Removed restriction for classes derived from Kotlin collections
Added type erasure for java collection overrided methods
This commit is contained in:
Igor Yakovlev
2019-09-13 17:30:16 +03:00
parent 286702a99c
commit fc70fd05fc
7 changed files with 130 additions and 129 deletions
@@ -1,14 +1,14 @@
public class EtendingMutableInterfaces {
public static class Lists {
<error>public static class ExtendIList1 implements IMutableList<String></error> {
<error descr="Class 'ExtendIList1' must either be declared abstract or implement abstract method 'size()' in 'List'">public static class ExtendIList1 implements IMutableList<String></error> {
}
<error>public static class ExtendIList2<E> implements IMutableList<E></error> {
<error descr="Class 'ExtendIList2' must either be declared abstract or implement abstract method 'size()' in 'List'">public static class ExtendIList2<E> implements IMutableList<E></error> {
}
// Compiler bug causes remove(int) to clash https://youtrack.jetbrains.com/issue/KT-17782
// Compiler bug causes remove(int) to clash <info descr="Open in browser (Ctrl+Click, Ctrl+B)">https://youtrack.jetbrains.com/issue/KT-17782</info>
//public static class ExtendCList1<E> extends CMutableList<E> {
//
//}
@@ -24,14 +24,14 @@ public class EtendingMutableInterfaces {
public static class ExtendAList extends AMutableList {
}
}
}
public static class Collections {
<error>public static class ExtendICollection1 implements IMutableCollection<String></error> {
<error descr="Class 'ExtendICollection1' must either be declared abstract or implement abstract method 'size()' in 'Collection'">public static class ExtendICollection1 implements IMutableCollection<String></error> {
}
<error>public static class ExtendICollection2<E> implements IMutableCollection<E></error> {
<error descr="Class 'ExtendICollection2' must either be declared abstract or implement abstract method 'size()' in 'Collection'">public static class ExtendICollection2<E> implements IMutableCollection<E></error> {
}
@@ -50,14 +50,14 @@ public class EtendingMutableInterfaces {
public static class ExtendACollection extends AMutableCollection {
}
}
}
public static class Sets {
<error>public static class ExtendISet1 implements IMutableSet<String></error> {
<error descr="Class 'ExtendISet1' must either be declared abstract or implement abstract method 'size()' in 'Set'">public static class ExtendISet1 implements IMutableSet<String></error> {
}
<error>public static class ExtendISet2<E> implements IMutableSet<E></error> {
<error descr="Class 'ExtendISet2' must either be declared abstract or implement abstract method 'size()' in 'Set'">public static class ExtendISet2<E> implements IMutableSet<E></error> {
}
@@ -76,14 +76,14 @@ public class EtendingMutableInterfaces {
public static class ExtendASet extends AMutableSet {
}
}
}
public static class Iterables {
<error>public static class ExtendIIterable1 implements IMutableIterable<String></error> {
<error descr="Class 'ExtendIIterable1' must either be declared abstract or implement abstract method 'iterator()' in 'Iterable'">public static class ExtendIIterable1 implements IMutableIterable<String></error> {
}
<error>public static class ExtendIIterable2<E> implements IMutableIterable<E></error> {
<error descr="Class 'ExtendIIterable2' must either be declared abstract or implement abstract method 'iterator()' in 'Iterable'">public static class ExtendIIterable2<E> implements IMutableIterable<E></error> {
}
@@ -102,14 +102,14 @@ public class EtendingMutableInterfaces {
public static class ExtendAIterable extends AMutableIterable {
}
}
}
public static class Iterators {
<error>public static class ExtendIIterator1 implements IMutableIterator<String></error> {
<error descr="Class 'ExtendIIterator1' must either be declared abstract or implement abstract method 'hasNext()' in 'Iterator'">public static class ExtendIIterator1 implements IMutableIterator<String></error> {
}
<error>public static class ExtendIIterator2<E> implements IMutableIterator<E></error> {
<error descr="Class 'ExtendIIterator2' must either be declared abstract or implement abstract method 'hasNext()' in 'Iterator'">public static class ExtendIIterator2<E> implements IMutableIterator<E></error> {
}
@@ -129,13 +129,13 @@ public class EtendingMutableInterfaces {
}
}
public static class Maps {
<error>public static class ExtendIMap1 implements IMutableMap<String, Integer></error> {
<error descr="Class 'ExtendIMap1' must either be declared abstract or implement abstract method 'size()' in 'Map'">public static class ExtendIMap1 implements IMutableMap<String, Integer></error> {
}
<error>public static class ExtendIMap2<E> implements IMutableMap<String, E></error> {
<error descr="Class 'ExtendIMap2' must either be declared abstract or implement abstract method 'size()' in 'Map'">public static class ExtendIMap2<E> implements IMutableMap<String, E></error> {
}
@@ -159,11 +159,11 @@ public class EtendingMutableInterfaces {
}
public static class MapEntrys {
<error>public static class ExtendIMapEntry1 implements IMutableMapEntry<String, Integer></error> {
<error descr="Class 'ExtendIMapEntry1' must either be declared abstract or implement abstract method 'getKey()' in 'Entry'">public static class ExtendIMapEntry1 implements IMutableMapEntry<String, Integer></error> {
}
<error>public static class ExtendIMapEntry2<E> implements IMutableMapEntry<String, E></error> {
<error descr="Class 'ExtendIMapEntry2' must either be declared abstract or implement abstract method 'getKey()' in 'Entry'">public static class ExtendIMapEntry2<E> implements IMutableMapEntry<String, E></error> {
}