diff --git a/compiler/testData/builtin-classes/java6/kotlin.txt b/compiler/testData/builtin-classes/java6/kotlin.txt index 037be8e43ba..feb01f5561a 100644 --- a/compiler/testData/builtin-classes/java6/kotlin.txt +++ b/compiler/testData/builtin-classes/java6/kotlin.txt @@ -209,6 +209,8 @@ public final enum class DeprecationLevel : kotlin.Enum public final override /*1*/ /*fake_override*/ fun (): kotlin.Int protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: kotlin.DeprecationLevel): kotlin.Int + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! // Static members public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.DeprecationLevel @@ -299,6 +301,8 @@ public abstract class Enum> : kotlin.Comparable, jav public final fun (): kotlin.Int protected final fun clone(): kotlin.Any public final override /*1*/ fun compareTo(/*0*/ other: E): kotlin.Int + protected/*protected and package*/ final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! public companion object Companion { /*primary*/ private constructor Companion() diff --git a/compiler/testData/builtin-classes/java8/kotlin-collections.txt b/compiler/testData/builtin-classes/java8/kotlin-collections.txt index aa6e6558abb..a208f05c3c3 100644 --- a/compiler/testData/builtin-classes/java8/kotlin-collections.txt +++ b/compiler/testData/builtin-classes/java8/kotlin-collections.txt @@ -87,6 +87,7 @@ public interface List : kotlin.collections.Collection { public abstract fun listIterator(): kotlin.collections.ListIterator public abstract fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.ListIterator public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream! + public open /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun sort(/*0*/ p0: java.util.Comparator!): kotlin.Unit public open override /*1*/ fun spliterator(): java.util.Spliterator! public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream! public abstract fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.List @@ -193,6 +194,7 @@ public interface MutableList : kotlin.collections.List, kotlin.colle public open fun replaceAll(/*0*/ p0: java.util.function.UnaryOperator!): kotlin.Unit public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean public abstract operator fun set(/*0*/ index: kotlin.Int, /*1*/ element: E): E + public open override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun sort(/*0*/ p0: java.util.Comparator!): kotlin.Unit public open override /*2*/ /*fake_override*/ fun spliterator(): java.util.Spliterator! public open override /*2*/ /*fake_override*/ fun stream(): java.util.stream.Stream! public abstract override /*1*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.MutableList diff --git a/compiler/testData/builtin-classes/java8/kotlin.txt b/compiler/testData/builtin-classes/java8/kotlin.txt index 2e183e3ec6b..4b6627caaa4 100644 --- a/compiler/testData/builtin-classes/java8/kotlin.txt +++ b/compiler/testData/builtin-classes/java8/kotlin.txt @@ -211,6 +211,8 @@ public final enum class DeprecationLevel : kotlin.Enum public final override /*1*/ /*fake_override*/ fun (): kotlin.Int protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: kotlin.DeprecationLevel): kotlin.Int + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! // Static members public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.DeprecationLevel @@ -301,6 +303,8 @@ public abstract class Enum> : kotlin.Comparable, jav public final fun (): kotlin.Int protected final fun clone(): kotlin.Any public final override /*1*/ fun compareTo(/*0*/ other: E): kotlin.Int + protected/*protected and package*/ final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! public companion object Companion { /*primary*/ private constructor Companion() diff --git a/compiler/testData/builtin-classes/newMethods/kotlin-collections.txt b/compiler/testData/builtin-classes/newMethods/kotlin-collections.txt new file mode 100644 index 00000000000..558b60f1820 --- /dev/null +++ b/compiler/testData/builtin-classes/newMethods/kotlin-collections.txt @@ -0,0 +1,240 @@ +package-fragment kotlin.collections + +public abstract class BooleanIterator : kotlin.collections.Iterator { + /*primary*/ public constructor BooleanIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Boolean + public abstract fun nextBoolean(): kotlin.Boolean +} + +public abstract class ByteIterator : kotlin.collections.Iterator { + /*primary*/ public constructor ByteIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Byte + public abstract fun nextByte(): kotlin.Byte +} + +public abstract class CharIterator : kotlin.collections.Iterator { + /*primary*/ public constructor CharIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Char + public abstract fun nextChar(): kotlin.Char +} + +public interface Collection : kotlin.collections.Iterable { + public abstract val size: kotlin.Int + public abstract fun (): kotlin.Int + public abstract operator fun contains(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Boolean + public abstract fun containsAll(/*0*/ elements: kotlin.collections.Collection<@kotlin.UnsafeVariance() E>): kotlin.Boolean + public abstract fun isEmpty(): kotlin.Boolean + public abstract override /*1*/ fun iterator(): kotlin.collections.Iterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! +} + +public abstract class DoubleIterator : kotlin.collections.Iterator { + /*primary*/ public constructor DoubleIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Double + public abstract fun nextDouble(): kotlin.Double +} + +public abstract class FloatIterator : kotlin.collections.Iterator { + /*primary*/ public constructor FloatIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Float + public abstract fun nextFloat(): kotlin.Float +} + +public abstract class IntIterator : kotlin.collections.Iterator { + /*primary*/ public constructor IntIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Int + public abstract fun nextInt(): kotlin.Int +} + +public interface Iterable { + public abstract operator fun iterator(): kotlin.collections.Iterator +} + +public interface Iterator { + public abstract operator fun hasNext(): kotlin.Boolean + public abstract operator fun next(): T +} + +public interface List : kotlin.collections.Collection { + public abstract override /*1*/ val size: kotlin.Int + public abstract override /*1*/ fun (): kotlin.Int + public abstract override /*1*/ fun contains(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Boolean + public abstract override /*1*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection<@kotlin.UnsafeVariance() E>): kotlin.Boolean + public abstract operator fun get(/*0*/ index: kotlin.Int): E + public abstract fun indexOf(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Int + public abstract override /*1*/ fun isEmpty(): kotlin.Boolean + public abstract override /*1*/ fun iterator(): kotlin.collections.Iterator + public abstract fun lastIndexOf(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Int + public abstract fun listIterator(): kotlin.collections.ListIterator + public abstract fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.ListIterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract override /*1*/ /*fake_override*/ fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! + public abstract fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.List +} + +public interface ListIterator : kotlin.collections.Iterator { + public abstract override /*1*/ fun hasNext(): kotlin.Boolean + public abstract fun hasPrevious(): kotlin.Boolean + public abstract override /*1*/ fun next(): T + public abstract fun nextIndex(): kotlin.Int + public abstract fun previous(): T + public abstract fun previousIndex(): kotlin.Int +} + +public abstract class LongIterator : kotlin.collections.Iterator { + /*primary*/ public constructor LongIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Long + public abstract fun nextLong(): kotlin.Long +} + +public interface Map { + public abstract val entries: kotlin.collections.Set> + public abstract fun (): kotlin.collections.Set> + public abstract val keys: kotlin.collections.Set + public abstract fun (): kotlin.collections.Set + public abstract val size: kotlin.Int + public abstract fun (): kotlin.Int + public abstract val values: kotlin.collections.Collection + public abstract fun (): kotlin.collections.Collection + public abstract fun containsKey(/*0*/ key: K): kotlin.Boolean + public abstract fun containsValue(/*0*/ value: @kotlin.UnsafeVariance() V): kotlin.Boolean + public abstract operator fun get(/*0*/ key: K): V? + public abstract fun isEmpty(): kotlin.Boolean + + public interface Entry { + public abstract val key: K + public abstract fun (): K + public abstract val value: V + public abstract fun (): V + } +} + +public interface MutableCollection : kotlin.collections.Collection, kotlin.collections.MutableIterable { + public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun (): kotlin.Int + public abstract fun add(/*0*/ element: E): kotlin.Boolean + public abstract fun addAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract fun clear(): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ element: E): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract override /*1*/ /*fake_override*/ fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! + public abstract fun remove(/*0*/ element: E): kotlin.Boolean + public abstract fun removeAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean +} + +public interface MutableIterable : kotlin.collections.Iterable { + public abstract override /*1*/ fun iterator(): kotlin.collections.MutableIterator +} + +public interface MutableIterator : kotlin.collections.Iterator { + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun next(): T + public abstract fun remove(): kotlin.Unit +} + +public interface MutableList : kotlin.collections.List, kotlin.collections.MutableCollection { + public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*2*/ /*fake_override*/ fun (): kotlin.Int + public abstract override /*1*/ fun add(/*0*/ element: E): kotlin.Boolean + public abstract fun add(/*0*/ index: kotlin.Int, /*1*/ element: E): kotlin.Unit + public abstract fun addAll(/*0*/ index: kotlin.Int, /*1*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ fun clear(): kotlin.Unit + public abstract override /*2*/ /*fake_override*/ fun contains(/*0*/ element: E): kotlin.Boolean + public abstract override /*2*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): E + public abstract override /*1*/ /*fake_override*/ fun indexOf(/*0*/ element: E): kotlin.Int + public abstract override /*2*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract override /*2*/ /*fake_override*/ fun iterator(): kotlin.collections.MutableIterator + public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ element: E): kotlin.Int + public abstract override /*1*/ fun listIterator(): kotlin.collections.MutableListIterator + public abstract override /*1*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.MutableListIterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract override /*2*/ /*fake_override*/ fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! + public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean + public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract fun removeAt(/*0*/ index: kotlin.Int): E + public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract operator fun set(/*0*/ index: kotlin.Int, /*1*/ element: E): E + public abstract override /*1*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.MutableList +} + +public interface MutableListIterator : kotlin.collections.ListIterator, kotlin.collections.MutableIterator { + public abstract fun add(/*0*/ element: T): kotlin.Unit + public abstract override /*2*/ fun hasNext(): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun hasPrevious(): kotlin.Boolean + public abstract override /*2*/ fun next(): T + public abstract override /*1*/ /*fake_override*/ fun nextIndex(): kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun previous(): T + public abstract override /*1*/ /*fake_override*/ fun previousIndex(): kotlin.Int + public abstract override /*1*/ fun remove(): kotlin.Unit + public abstract fun set(/*0*/ element: T): kotlin.Unit +} + +public interface MutableMap : kotlin.collections.Map { + public abstract override /*1*/ val entries: kotlin.collections.MutableSet> + public abstract override /*1*/ fun (): kotlin.collections.MutableSet> + public abstract override /*1*/ val keys: kotlin.collections.MutableSet + public abstract override /*1*/ fun (): kotlin.collections.MutableSet + public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun (): kotlin.Int + public abstract override /*1*/ val values: kotlin.collections.MutableCollection + public abstract override /*1*/ fun (): kotlin.collections.MutableCollection + public abstract fun clear(): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun containsKey(/*0*/ key: K): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun containsValue(/*0*/ value: V): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: K): V? + public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract fun put(/*0*/ key: K, /*1*/ value: V): V? + public abstract fun putAll(/*0*/ from: kotlin.collections.Map): kotlin.Unit + public abstract fun remove(/*0*/ key: K): V? + + public interface MutableEntry : kotlin.collections.Map.Entry { + public abstract override /*1*/ /*fake_override*/ val key: K + public abstract override /*1*/ /*fake_override*/ fun (): K + public abstract override /*1*/ /*fake_override*/ val value: V + public abstract override /*1*/ /*fake_override*/ fun (): V + public abstract fun setValue(/*0*/ newValue: V): V + } +} + +public interface MutableSet : kotlin.collections.Set, kotlin.collections.MutableCollection { + public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*2*/ /*fake_override*/ fun (): kotlin.Int + public abstract override /*1*/ fun add(/*0*/ element: E): kotlin.Boolean + public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ fun clear(): kotlin.Unit + public abstract override /*2*/ /*fake_override*/ fun contains(/*0*/ element: E): kotlin.Boolean + public abstract override /*2*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*2*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract override /*2*/ /*fake_override*/ fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! + public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean + public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean +} + +public interface Set : kotlin.collections.Collection { + public abstract override /*1*/ val size: kotlin.Int + public abstract override /*1*/ fun (): kotlin.Int + public abstract override /*1*/ fun contains(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Boolean + public abstract override /*1*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection<@kotlin.UnsafeVariance() E>): kotlin.Boolean + public abstract override /*1*/ fun isEmpty(): kotlin.Boolean + public abstract override /*1*/ fun iterator(): kotlin.collections.Iterator + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public abstract override /*1*/ /*fake_override*/ fun nonExistingMethod(/*0*/ p0: E!): kotlin.String! +} + +public abstract class ShortIterator : kotlin.collections.Iterator { + /*primary*/ public constructor ShortIterator() + public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ fun next(): kotlin.Short + public abstract fun nextShort(): kotlin.Short +} diff --git a/compiler/testData/builtin-classes/newMethods/kotlin-ranges.txt b/compiler/testData/builtin-classes/newMethods/kotlin-ranges.txt new file mode 100644 index 00000000000..abf3adfd586 --- /dev/null +++ b/compiler/testData/builtin-classes/newMethods/kotlin-ranges.txt @@ -0,0 +1,181 @@ +package-fragment kotlin.ranges + +public open class CharProgression : kotlin.collections.Iterable { + /*primary*/ internal constructor CharProgression(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char, /*2*/ step: kotlin.Int) + public final val first: kotlin.Char + public final fun (): kotlin.Char + public final val last: kotlin.Char + public final fun (): kotlin.Char + public final val step: kotlin.Int + public final fun (): kotlin.Int + public open fun isEmpty(): kotlin.Boolean + public open override /*1*/ fun iterator(): kotlin.collections.CharIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final fun fromClosedRange(/*0*/ rangeStart: kotlin.Char, /*1*/ rangeEnd: kotlin.Char, /*2*/ step: kotlin.Int): kotlin.ranges.CharProgression + } +} + +internal final class CharProgressionIterator : kotlin.collections.CharIterator { + /*primary*/ public constructor CharProgressionIterator(/*0*/ first: kotlin.Char, /*1*/ last: kotlin.Char, /*2*/ step: kotlin.Int) + private final val finalElement: kotlin.Int + private final fun (): kotlin.Int + private final var hasNext: kotlin.Boolean + private final fun (): kotlin.Boolean + private final fun (/*0*/ : kotlin.Boolean): kotlin.Unit + private final var next: kotlin.Int + private final fun (): kotlin.Int + private final fun (/*0*/ : kotlin.Int): kotlin.Unit + public final val step: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun next(): kotlin.Char + public open override /*1*/ fun nextChar(): kotlin.Char +} + +public final class CharRange : kotlin.ranges.CharProgression, kotlin.ranges.ClosedRange { + /*primary*/ public constructor CharRange(/*0*/ start: kotlin.Char, /*1*/ endInclusive: kotlin.Char) + public open override /*1*/ val endInclusive: kotlin.Char + public open override /*1*/ fun (): kotlin.Char + public final override /*1*/ /*fake_override*/ val first: kotlin.Char + public final override /*1*/ /*fake_override*/ fun (): kotlin.Char + public final override /*1*/ /*fake_override*/ val last: kotlin.Char + public final override /*1*/ /*fake_override*/ fun (): kotlin.Char + public open override /*1*/ val start: kotlin.Char + public open override /*1*/ fun (): kotlin.Char + public final override /*1*/ /*fake_override*/ val step: kotlin.Int + public final override /*1*/ /*fake_override*/ fun (): kotlin.Int + public open override /*1*/ fun contains(/*0*/ value: kotlin.Char): kotlin.Boolean + public open override /*2*/ fun isEmpty(): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.CharIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final val EMPTY: kotlin.ranges.CharRange + public final fun (): kotlin.ranges.CharRange + } +} + +public interface ClosedRange> { + public abstract val endInclusive: T + public abstract fun (): T + public abstract val start: T + public abstract fun (): T + public open operator fun contains(/*0*/ value: T): kotlin.Boolean + public open fun isEmpty(): kotlin.Boolean +} + +public open class IntProgression : kotlin.collections.Iterable { + /*primary*/ internal constructor IntProgression(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int, /*2*/ step: kotlin.Int) + public final val first: kotlin.Int + public final fun (): kotlin.Int + public final val last: kotlin.Int + public final fun (): kotlin.Int + public final val step: kotlin.Int + public final fun (): kotlin.Int + public open fun isEmpty(): kotlin.Boolean + public open override /*1*/ fun iterator(): kotlin.collections.IntIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final fun fromClosedRange(/*0*/ rangeStart: kotlin.Int, /*1*/ rangeEnd: kotlin.Int, /*2*/ step: kotlin.Int): kotlin.ranges.IntProgression + } +} + +internal final class IntProgressionIterator : kotlin.collections.IntIterator { + /*primary*/ public constructor IntProgressionIterator(/*0*/ first: kotlin.Int, /*1*/ last: kotlin.Int, /*2*/ step: kotlin.Int) + private final val finalElement: kotlin.Int + private final fun (): kotlin.Int + private final var hasNext: kotlin.Boolean + private final fun (): kotlin.Boolean + private final fun (/*0*/ : kotlin.Boolean): kotlin.Unit + private final var next: kotlin.Int + private final fun (): kotlin.Int + private final fun (/*0*/ : kotlin.Int): kotlin.Unit + public final val step: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun next(): kotlin.Int + public open override /*1*/ fun nextInt(): kotlin.Int +} + +public final class IntRange : kotlin.ranges.IntProgression, kotlin.ranges.ClosedRange { + /*primary*/ public constructor IntRange(/*0*/ start: kotlin.Int, /*1*/ endInclusive: kotlin.Int) + public open override /*1*/ val endInclusive: kotlin.Int + public open override /*1*/ fun (): kotlin.Int + public final override /*1*/ /*fake_override*/ val first: kotlin.Int + public final override /*1*/ /*fake_override*/ fun (): kotlin.Int + public final override /*1*/ /*fake_override*/ val last: kotlin.Int + public final override /*1*/ /*fake_override*/ fun (): kotlin.Int + public open override /*1*/ val start: kotlin.Int + public open override /*1*/ fun (): kotlin.Int + public final override /*1*/ /*fake_override*/ val step: kotlin.Int + public final override /*1*/ /*fake_override*/ fun (): kotlin.Int + public open override /*1*/ fun contains(/*0*/ value: kotlin.Int): kotlin.Boolean + public open override /*2*/ fun isEmpty(): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.IntIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final val EMPTY: kotlin.ranges.IntRange + public final fun (): kotlin.ranges.IntRange + } +} + +public open class LongProgression : kotlin.collections.Iterable { + /*primary*/ internal constructor LongProgression(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long, /*2*/ step: kotlin.Long) + public final val first: kotlin.Long + public final fun (): kotlin.Long + public final val last: kotlin.Long + public final fun (): kotlin.Long + public final val step: kotlin.Long + public final fun (): kotlin.Long + public open fun isEmpty(): kotlin.Boolean + public open override /*1*/ fun iterator(): kotlin.collections.LongIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final fun fromClosedRange(/*0*/ rangeStart: kotlin.Long, /*1*/ rangeEnd: kotlin.Long, /*2*/ step: kotlin.Long): kotlin.ranges.LongProgression + } +} + +internal final class LongProgressionIterator : kotlin.collections.LongIterator { + /*primary*/ public constructor LongProgressionIterator(/*0*/ first: kotlin.Long, /*1*/ last: kotlin.Long, /*2*/ step: kotlin.Long) + private final val finalElement: kotlin.Long + private final fun (): kotlin.Long + private final var hasNext: kotlin.Boolean + private final fun (): kotlin.Boolean + private final fun (/*0*/ : kotlin.Boolean): kotlin.Unit + private final var next: kotlin.Long + private final fun (): kotlin.Long + private final fun (/*0*/ : kotlin.Long): kotlin.Unit + public final val step: kotlin.Long + public final fun (): kotlin.Long + public open override /*1*/ fun hasNext(): kotlin.Boolean + public final override /*1*/ /*fake_override*/ fun next(): kotlin.Long + public open override /*1*/ fun nextLong(): kotlin.Long +} + +public final class LongRange : kotlin.ranges.LongProgression, kotlin.ranges.ClosedRange { + /*primary*/ public constructor LongRange(/*0*/ start: kotlin.Long, /*1*/ endInclusive: kotlin.Long) + public open override /*1*/ val endInclusive: kotlin.Long + public open override /*1*/ fun (): kotlin.Long + public final override /*1*/ /*fake_override*/ val first: kotlin.Long + public final override /*1*/ /*fake_override*/ fun (): kotlin.Long + public final override /*1*/ /*fake_override*/ val last: kotlin.Long + public final override /*1*/ /*fake_override*/ fun (): kotlin.Long + public open override /*1*/ val start: kotlin.Long + public open override /*1*/ fun (): kotlin.Long + public final override /*1*/ /*fake_override*/ val step: kotlin.Long + public final override /*1*/ /*fake_override*/ fun (): kotlin.Long + public open override /*1*/ fun contains(/*0*/ value: kotlin.Long): kotlin.Boolean + public open override /*2*/ fun isEmpty(): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.LongIterator + + public companion object Companion { + /*primary*/ private constructor Companion() + public final val EMPTY: kotlin.ranges.LongRange + public final fun (): kotlin.ranges.LongRange + } +} diff --git a/compiler/testData/builtin-classes/newMethods/kotlin.txt b/compiler/testData/builtin-classes/newMethods/kotlin.txt new file mode 100644 index 00000000000..99eb447760c --- /dev/null +++ b/compiler/testData/builtin-classes/newMethods/kotlin.txt @@ -0,0 +1,700 @@ +package-fragment kotlin + +public inline fun arrayOf(/*0*/ vararg elements: T /*kotlin.Array*/): kotlin.Array +public fun arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array +public fun booleanArrayOf(/*0*/ vararg elements: kotlin.Boolean /*kotlin.BooleanArray*/): kotlin.BooleanArray +public fun byteArrayOf(/*0*/ vararg elements: kotlin.Byte /*kotlin.ByteArray*/): kotlin.ByteArray +public fun charArrayOf(/*0*/ vararg elements: kotlin.Char /*kotlin.CharArray*/): kotlin.CharArray +public fun doubleArrayOf(/*0*/ vararg elements: kotlin.Double /*kotlin.DoubleArray*/): kotlin.DoubleArray +public inline fun emptyArray(): kotlin.Array +public fun floatArrayOf(/*0*/ vararg elements: kotlin.Float /*kotlin.FloatArray*/): kotlin.FloatArray +public fun intArrayOf(/*0*/ vararg elements: kotlin.Int /*kotlin.IntArray*/): kotlin.IntArray +public fun longArrayOf(/*0*/ vararg elements: kotlin.Long /*kotlin.LongArray*/): kotlin.LongArray +public fun shortArrayOf(/*0*/ vararg elements: kotlin.Short /*kotlin.ShortArray*/): kotlin.ShortArray +public operator fun kotlin.String?.plus(/*0*/ other: kotlin.Any?): kotlin.String +public fun kotlin.Any?.toString(): kotlin.String + +public interface Annotation { +} + +public open class Any { + /*primary*/ public constructor Any() +} + +public final class Array : kotlin.Cloneable, java.io.Serializable { + public constructor Array(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> T) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.Array + public final operator fun get(/*0*/ index: kotlin.Int): T + public final operator fun iterator(): kotlin.collections.Iterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: T): kotlin.Unit +} + +public final class Boolean : kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Boolean() + public final infix fun and(/*0*/ other: kotlin.Boolean): kotlin.Boolean + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Boolean): kotlin.Int + public final operator fun not(): kotlin.Boolean + public final infix fun or(/*0*/ other: kotlin.Boolean): kotlin.Boolean + public final infix fun xor(/*0*/ other: kotlin.Boolean): kotlin.Boolean +} + +public final class BooleanArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor BooleanArray(/*0*/ size: kotlin.Int) + public constructor BooleanArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Boolean) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.BooleanArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Boolean + public final operator fun iterator(): kotlin.collections.BooleanIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Boolean): kotlin.Unit +} + +public final class Byte : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Byte() + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Byte + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun inc(): kotlin.Byte + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun rangeTo(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Int + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Int + public final operator fun unaryPlus(): kotlin.Int + + public companion object Companion { + /*primary*/ private constructor Companion() + public const final val MAX_VALUE: kotlin.Byte + public final fun (): kotlin.Byte + public const final val MIN_VALUE: kotlin.Byte + public final fun (): kotlin.Byte + } +} + +public final class ByteArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor ByteArray(/*0*/ size: kotlin.Int) + public constructor ByteArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Byte) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.ByteArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Byte + public final operator fun iterator(): kotlin.collections.ByteIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Byte): kotlin.Unit +} + +public final class Char : kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Char() + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Char): kotlin.Int + public final operator fun dec(): kotlin.Char + public final operator fun inc(): kotlin.Char + public final operator fun minus(/*0*/ other: kotlin.Char): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Char + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Char + public final operator fun rangeTo(/*0*/ other: kotlin.Char): kotlin.ranges.CharRange + public open fun toByte(): kotlin.Byte + public open fun toChar(): kotlin.Char + public open fun toDouble(): kotlin.Double + public open fun toFloat(): kotlin.Float + public open fun toInt(): kotlin.Int + public open fun toLong(): kotlin.Long + public open fun toShort(): kotlin.Short + + public companion object Companion { + /*primary*/ private constructor Companion() + public const final val MAX_HIGH_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MAX_LOW_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MAX_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_HIGH_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_LOW_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + public const final val MIN_SURROGATE: kotlin.Char + public final fun (): kotlin.Char + } +} + +public final class CharArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor CharArray(/*0*/ size: kotlin.Int) + public constructor CharArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Char) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.CharArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Char + public final operator fun iterator(): kotlin.collections.CharIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Char): kotlin.Unit +} + +public interface CharSequence { + public abstract val length: kotlin.Int + public abstract fun (): kotlin.Int + public abstract operator fun get(/*0*/ index: kotlin.Int): kotlin.Char + public abstract fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence +} + +public interface Cloneable { + protected open fun clone(): kotlin.Any +} + +public interface Comparable { + public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int +} + +@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation { + /*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...) + public final val level: kotlin.DeprecationLevel + public final fun (): kotlin.DeprecationLevel + public final val message: kotlin.String + public final fun (): kotlin.String + public final val replaceWith: kotlin.ReplaceWith + public final fun (): kotlin.ReplaceWith +} + +public final enum class DeprecationLevel : kotlin.Enum { + enum entry WARNING + + enum entry ERROR + + enum entry HIDDEN + + /*primary*/ private constructor DeprecationLevel() + public final override /*1*/ /*fake_override*/ val name: kotlin.String + public final override /*1*/ /*fake_override*/ fun (): kotlin.String + public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int + public final override /*1*/ /*fake_override*/ fun (): kotlin.Int + protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any + public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: kotlin.DeprecationLevel): kotlin.Int + protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + + // Static members + public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.DeprecationLevel + public final /*synthesized*/ fun values(): kotlin.Array +} + +public final class Double : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Double() + public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Double + public final operator fun inc(): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Double + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Double + public final operator fun unaryPlus(): kotlin.Double + + public companion object Companion { + /*primary*/ private constructor Companion() + public final val MAX_VALUE: kotlin.Double + public final fun (): kotlin.Double + public final val MIN_VALUE: kotlin.Double + public final fun (): kotlin.Double + public final val NEGATIVE_INFINITY: kotlin.Double + public final fun (): kotlin.Double + public final val NaN: kotlin.Double + public final fun (): kotlin.Double + public final val POSITIVE_INFINITY: kotlin.Double + public final fun (): kotlin.Double + } +} + +public final class DoubleArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor DoubleArray(/*0*/ size: kotlin.Int) + public constructor DoubleArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Double) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.DoubleArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Double + public final operator fun iterator(): kotlin.collections.DoubleIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Double): kotlin.Unit +} + +public abstract class Enum> : kotlin.Comparable, java.io.Serializable { + /*primary*/ public constructor Enum>(/*0*/ name: kotlin.String, /*1*/ ordinal: kotlin.Int) + public final val name: kotlin.String + public final fun (): kotlin.String + public final val ordinal: kotlin.Int + public final fun (): kotlin.Int + protected final fun clone(): kotlin.Any + public final override /*1*/ fun compareTo(/*0*/ other: E): kotlin.Int + protected/*protected and package*/ final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit + public final /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class! + + public companion object Companion { + /*primary*/ private constructor Companion() + } +} + +@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.MustBeDocumented() public final annotation class ExtensionFunctionType : kotlin.Annotation { + /*primary*/ public constructor ExtensionFunctionType() +} + +public final class Float : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Float() + public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Float + public final operator fun inc(): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Float + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Float + public final operator fun unaryPlus(): kotlin.Float + + public companion object Companion { + /*primary*/ private constructor Companion() + public final val MAX_VALUE: kotlin.Float + public final fun (): kotlin.Float + public final val MIN_VALUE: kotlin.Float + public final fun (): kotlin.Float + public final val NEGATIVE_INFINITY: kotlin.Float + public final fun (): kotlin.Float + public final val NaN: kotlin.Float + public final fun (): kotlin.Float + public final val POSITIVE_INFINITY: kotlin.Float + public final fun (): kotlin.Float + } +} + +public final class FloatArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor FloatArray(/*0*/ size: kotlin.Int) + public constructor FloatArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Float) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.FloatArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Float + public final operator fun iterator(): kotlin.collections.FloatIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Float): kotlin.Unit +} + +public interface Function { +} + +public final class Int : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Int() + public final infix fun and(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun inc(): kotlin.Int + public final fun inv(): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Int + public final infix fun or(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun rangeTo(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange + public final infix fun shl(/*0*/ bitCount: kotlin.Int): kotlin.Int + public final infix fun shr(/*0*/ bitCount: kotlin.Int): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Int + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Int + public final operator fun unaryPlus(): kotlin.Int + public final infix fun ushr(/*0*/ bitCount: kotlin.Int): kotlin.Int + public final infix fun xor(/*0*/ other: kotlin.Int): kotlin.Int + + public companion object Companion { + /*primary*/ private constructor Companion() + public const final val MAX_VALUE: kotlin.Int + public final fun (): kotlin.Int + public const final val MIN_VALUE: kotlin.Int + public final fun (): kotlin.Int + } +} + +public final class IntArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor IntArray(/*0*/ size: kotlin.Int) + public constructor IntArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Int) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.IntArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Int + public final operator fun iterator(): kotlin.collections.IntIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Int): kotlin.Unit +} + +public final class Long : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Long() + public final infix fun and(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Long + public final operator fun inc(): kotlin.Long + public final fun inv(): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Long + public final infix fun or(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Long + public final operator fun rangeTo(/*0*/ other: kotlin.Byte): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.LongRange + public final infix fun shl(/*0*/ bitCount: kotlin.Int): kotlin.Long + public final infix fun shr(/*0*/ bitCount: kotlin.Int): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Long + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Long + public final operator fun unaryPlus(): kotlin.Long + public final infix fun ushr(/*0*/ bitCount: kotlin.Int): kotlin.Long + public final infix fun xor(/*0*/ other: kotlin.Long): kotlin.Long + + public companion object Companion { + /*primary*/ private constructor Companion() + public const final val MAX_VALUE: kotlin.Long + public final fun (): kotlin.Long + public const final val MIN_VALUE: kotlin.Long + public final fun (): kotlin.Long + } +} + +public final class LongArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor LongArray(/*0*/ size: kotlin.Int) + public constructor LongArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Long) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.LongArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Long + public final operator fun iterator(): kotlin.collections.LongIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Long): kotlin.Unit +} + +public final class Nothing { + /*primary*/ private constructor Nothing() +} + +public abstract class Number : kotlin.Any, java.io.Serializable { + /*primary*/ public constructor Number() + public abstract fun toByte(): kotlin.Byte + public abstract fun toChar(): kotlin.Char + public abstract fun toDouble(): kotlin.Double + public abstract fun toFloat(): kotlin.Float + public abstract fun toInt(): kotlin.Int + public abstract fun toLong(): kotlin.Long + public abstract fun toShort(): kotlin.Short +} + +@kotlin.annotation.Target(allowedTargets = {}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented() public final annotation class ReplaceWith : kotlin.Annotation { + /*primary*/ public constructor ReplaceWith(/*0*/ expression: kotlin.String, /*1*/ vararg imports: kotlin.String /*kotlin.Array*/) + public final val expression: kotlin.String + public final fun (): kotlin.String + public final val imports: kotlin.Array + public final fun (): kotlin.Array +} + +public final class Short : kotlin.Number, kotlin.Comparable, java.io.Serializable { + /*primary*/ private constructor Short() + public final operator fun compareTo(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Double): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Float): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun compareTo(/*0*/ other: kotlin.Long): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun dec(): kotlin.Short + public final operator fun div(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun div(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun div(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun div(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun div(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun inc(): kotlin.Short + public final operator fun minus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun minus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun minus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun minus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun minus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun mod(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun mod(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun mod(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun mod(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun plus(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun plus(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun plus(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun plus(/*0*/ other: kotlin.Short): kotlin.Int + public final operator fun rangeTo(/*0*/ other: kotlin.Byte): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Int): kotlin.ranges.IntRange + public final operator fun rangeTo(/*0*/ other: kotlin.Long): kotlin.ranges.LongRange + public final operator fun rangeTo(/*0*/ other: kotlin.Short): kotlin.ranges.IntRange + public final operator fun times(/*0*/ other: kotlin.Byte): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Double): kotlin.Double + public final operator fun times(/*0*/ other: kotlin.Float): kotlin.Float + public final operator fun times(/*0*/ other: kotlin.Int): kotlin.Int + public final operator fun times(/*0*/ other: kotlin.Long): kotlin.Long + public final operator fun times(/*0*/ other: kotlin.Short): kotlin.Int + public open override /*1*/ fun toByte(): kotlin.Byte + public open override /*1*/ fun toChar(): kotlin.Char + public open override /*1*/ fun toDouble(): kotlin.Double + public open override /*1*/ fun toFloat(): kotlin.Float + public open override /*1*/ fun toInt(): kotlin.Int + public open override /*1*/ fun toLong(): kotlin.Long + public open override /*1*/ fun toShort(): kotlin.Short + public final operator fun unaryMinus(): kotlin.Int + public final operator fun unaryPlus(): kotlin.Int + + public companion object Companion { + /*primary*/ private constructor Companion() + public const final val MAX_VALUE: kotlin.Short + public final fun (): kotlin.Short + public const final val MIN_VALUE: kotlin.Short + public final fun (): kotlin.Short + } +} + +public final class ShortArray : kotlin.Cloneable, java.io.Serializable { + /*primary*/ public constructor ShortArray(/*0*/ size: kotlin.Int) + public constructor ShortArray(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> kotlin.Short) + public final val size: kotlin.Int + public final fun (): kotlin.Int + public open override /*1*/ fun clone(): kotlin.ShortArray + public final operator fun get(/*0*/ index: kotlin.Int): kotlin.Short + public final operator fun iterator(): kotlin.collections.ShortIterator + public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit +} + +public final class String : kotlin.Comparable, kotlin.CharSequence, java.io.Serializable { + /*primary*/ public constructor String() + public open override /*1*/ val length: kotlin.Int + public open override /*1*/ fun (): kotlin.Int + public open override /*1*/ fun compareTo(/*0*/ other: kotlin.String): kotlin.Int + public open override /*1*/ fun get(/*0*/ index: kotlin.Int): kotlin.Char + public final operator fun plus(/*0*/ other: kotlin.Any?): kotlin.String + public open override /*1*/ fun subSequence(/*0*/ startIndex: kotlin.Int, /*1*/ endIndex: kotlin.Int): kotlin.CharSequence + + public companion object Companion { + /*primary*/ private constructor Companion() + } +} + +@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.FIELD, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPE, AnnotationTarget.EXPRESSION, AnnotationTarget.FILE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Suppress : kotlin.Annotation { + /*primary*/ public constructor Suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array*/) + public final val names: kotlin.Array + public final fun (): kotlin.Array +} + +public open class Throwable : kotlin.Any, java.io.Serializable { + public constructor Throwable() + @kotlin.Deprecated(level = DeprecationLevel.WARNING, message = "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version", replaceWith = kotlin.ReplaceWith(expression = "", imports = {})) public constructor Throwable(/*0*/ x: kotlin.Double) + public constructor Throwable(/*0*/ message: kotlin.String?) + /*primary*/ public constructor Throwable(/*0*/ message: kotlin.String?, /*1*/ cause: kotlin.Throwable?) + public constructor Throwable(/*0*/ cause: kotlin.Throwable?) + public open val cause: kotlin.Throwable? + public open fun (): kotlin.Throwable? + public open val message: kotlin.String? + public open fun (): kotlin.String? + public open fun fillInStackTrace(): kotlin.Throwable! + public open fun getLocalizedMessage(): kotlin.String! + public open fun getStackTrace(): kotlin.Array<(out) java.lang.StackTraceElement!>! + public open fun initCause(/*0*/ cause: kotlin.Throwable!): kotlin.Throwable! + public open fun printStackTrace(): kotlin.Unit + public open fun printStackTrace(/*0*/ s: java.io.PrintStream!): kotlin.Unit + public open fun printStackTrace(/*0*/ s: java.io.PrintWriter!): kotlin.Unit + public open fun setStackTrace(/*0*/ stackTrace: kotlin.Array<(out) java.lang.StackTraceElement!>!): kotlin.Unit +} + +public object Unit { + /*primary*/ private constructor Unit() +} + +@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.MustBeDocumented() public final annotation class UnsafeVariance : kotlin.Annotation { + /*primary*/ public constructor UnsafeVariance() +} diff --git a/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.kt b/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.kt new file mode 100644 index 00000000000..dc97dd21b52 --- /dev/null +++ b/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.kt @@ -0,0 +1,12 @@ +// !CHECK_TYPE + +interface A : MutableCollection { + // Override of deprecated function could be marked as deprecated too + override fun nonExistingMethod(x: String) = "" +} + +fun foo(x: MutableCollection, y: Collection, z: A) { + x.nonExistingMethod(1).checkType { _() } + y.nonExistingMethod("") + z.nonExistingMethod("") +} diff --git a/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.txt b/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.txt new file mode 100644 index 00000000000..da78c47dcbb --- /dev/null +++ b/compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.txt @@ -0,0 +1,21 @@ +package + +public fun foo(/*0*/ x: kotlin.collections.MutableCollection, /*1*/ y: kotlin.collections.Collection, /*2*/ z: A): kotlin.Unit + +public interface A : kotlin.collections.MutableCollection { + public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.MutableIterator + public open override /*1*/ fun nonExistingMethod(/*0*/ x: kotlin.String): kotlin.String + public abstract override /*1*/ /*fake_override*/ fun remove(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.kt b/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.kt new file mode 100644 index 00000000000..fca9ba19075 --- /dev/null +++ b/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.kt @@ -0,0 +1,5 @@ +abstract class A : Throwable(1.0) {} + +fun foo() { + Throwable(1.5) +} diff --git a/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.txt b/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.txt new file mode 100644 index 00000000000..1fc85f5c701 --- /dev/null +++ b/compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.txt @@ -0,0 +1,20 @@ +package + +public fun foo(): kotlin.Unit + +public abstract class A : kotlin.Throwable { + public constructor A() + public open override /*1*/ /*fake_override*/ val cause: kotlin.Throwable? + public open override /*1*/ /*fake_override*/ val message: kotlin.String? + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun fillInStackTrace(): kotlin.Throwable! + public open override /*1*/ /*fake_override*/ fun getLocalizedMessage(): kotlin.String! + public open override /*1*/ /*fake_override*/ fun getStackTrace(): kotlin.Array<(out) java.lang.StackTraceElement!>! + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun initCause(/*0*/ cause: kotlin.Throwable!): kotlin.Throwable! + public open override /*1*/ /*fake_override*/ fun printStackTrace(): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun printStackTrace(/*0*/ s: java.io.PrintStream!): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun printStackTrace(/*0*/ s: java.io.PrintWriter!): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun setStackTrace(/*0*/ stackTrace: kotlin.Array<(out) java.lang.StackTraceElement!>!): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.kt b/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.kt new file mode 100644 index 00000000000..613518df00c --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.kt @@ -0,0 +1,13 @@ +abstract class A : MutableList { + override fun sort(/*0*/ p0: java.util.Comparator) { + super.sort(p0) + } +} + +fun foo(x: MutableList, y: java.util.ArrayList, z: A, p: java.util.Comparator) { + // Resolved to extension with no parameters + x.sort(p) + y.sort(p) + + z.sort(p) +} diff --git a/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.txt b/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.txt new file mode 100644 index 00000000000..162fb4d9578 --- /dev/null +++ b/compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.txt @@ -0,0 +1,38 @@ +package + +public fun foo(/*0*/ x: kotlin.collections.MutableList, /*1*/ y: java.util.ArrayList, /*2*/ z: A, /*3*/ p: java.util.Comparator): kotlin.Unit + +public abstract class A : kotlin.collections.MutableList { + public constructor A() + public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ index: kotlin.Int, /*1*/ element: kotlin.String): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun add(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ index: kotlin.Int, /*1*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun addAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun clear(): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun contains(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun containsAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer!): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ index: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun indexOf(/*0*/ element: kotlin.String): kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.MutableIterator + public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ element: kotlin.String): kotlin.Int + public abstract override /*1*/ /*fake_override*/ fun listIterator(): kotlin.collections.MutableListIterator + public abstract override /*1*/ /*fake_override*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.MutableListIterator + public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream! + public abstract override /*1*/ /*fake_override*/ fun remove(/*0*/ element: kotlin.String): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun removeAt(/*0*/ index: kotlin.Int): kotlin.String + public open override /*1*/ /*fake_override*/ fun removeIf(/*0*/ p0: java.util.function.Predicate!): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun replaceAll(/*0*/ p0: java.util.function.UnaryOperator!): kotlin.Unit + public abstract override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection): kotlin.Boolean + public abstract override /*1*/ /*fake_override*/ fun set(/*0*/ index: kotlin.Int, /*1*/ element: kotlin.String): kotlin.String + public open override /*1*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun sort(/*0*/ p0: java.util.Comparator): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator! + public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream! + public abstract override /*1*/ /*fake_override*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.MutableList + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/testData/mockJDKModified/rt.jar b/compiler/testData/mockJDKModified/rt.jar new file mode 100644 index 00000000000..64d380ad782 Binary files /dev/null and b/compiler/testData/mockJDKModified/rt.jar differ diff --git a/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java index a8574bfd7c8..06e2b68f424 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -330,6 +330,12 @@ public class KotlinTestUtils { return new File(getHomeDirectory(), "compiler/testData/mockJDK/jre/lib/rt.jar"); } + // Differs from common mock JDK only by one additional 'nonExistingMethod' in Collection and constructor from Double in Throwable + // It's needed to test the way we load additional built-ins members that neither in black nor white lists + public static File findMockJdkRtModified() { + return new File(getHomeDirectory(), "compiler/testData/mockJDKModified/rt.jar"); + } + public static File findAndroidApiJar() { return new File(getHomeDirectory(), "dependencies/android.jar"); } @@ -438,6 +444,9 @@ public class KotlinTestUtils { if (jdkKind == TestJdkKind.MOCK_JDK) { JvmContentRootsKt.addJvmClasspathRoot(configuration, findMockJdkRtJar()); } + else if (jdkKind == TestJdkKind.MODIFIED_MOCK_JDK) { + JvmContentRootsKt.addJvmClasspathRoot(configuration, findMockJdkRtModified()); + } else if (jdkKind == TestJdkKind.ANDROID_API) { JvmContentRootsKt.addJvmClasspathRoot(configuration, findAndroidApiJar()); } diff --git a/compiler/tests-common/org/jetbrains/kotlin/test/TestJdkKind.java b/compiler/tests-common/org/jetbrains/kotlin/test/TestJdkKind.java index bb8d89a0529..686d7d91eae 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/test/TestJdkKind.java +++ b/compiler/tests-common/org/jetbrains/kotlin/test/TestJdkKind.java @@ -18,6 +18,9 @@ package org.jetbrains.kotlin.test; public enum TestJdkKind { MOCK_JDK, + // Differs from common mock JDK only by one additional 'nonExistingMethod' in Collection and constructor from Double in Throwable + // It's needed to test the way we load additional built-ins members that neither in black nor white lists + MODIFIED_MOCK_JDK, FULL_JDK, ANDROID_API, } diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/checkers/DiagnosticsWithJava8TestGenerated.java b/compiler/tests-java8/tests/org/jetbrains/kotlin/checkers/DiagnosticsWithJava8TestGenerated.java index 0233e581abf..fa55a719f3e 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/checkers/DiagnosticsWithJava8TestGenerated.java +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/checkers/DiagnosticsWithJava8TestGenerated.java @@ -121,6 +121,12 @@ public class DiagnosticsWithJava8TestGenerated extends AbstractDiagnosticsWithFu KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("blackListed.kt") + public void testBlackListed() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/blackListed.kt"); + doTest(fileName); + } + @TestMetadata("concurrentMapRemove.kt") public void testConcurrentMapRemove() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/concurrentMapRemove.kt"); diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt index 7583fe6889c..c7e9e3c34c2 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt @@ -63,7 +63,9 @@ class AdditionalBuiltInsMembersSignatureListsTest : KotlinTestWithEnvironment() val blackList = JvmBuiltInsSettings.BLACK_LIST_METHOD_SIGNATURES + JvmBuiltInsSettings.MUTABLE_METHOD_SIGNATURES + - JvmBuiltInsSettings.BLACK_LIST_CONSTRUCTOR_SIGNATURES + JvmBuiltInsSettings.BLACK_LIST_CONSTRUCTOR_SIGNATURES + + JvmBuiltInsSettings.WHITE_LIST_METHOD_SIGNATURES + + JvmBuiltInsSettings.WHITE_LIST_CONSTRUCTOR_SIGNATURES val groupedByInternalName = blackList.groupBy({ it.split(".")[0] }) { it.split(".")[1] } diff --git a/compiler/tests/org/jetbrains/kotlin/cfg/AbstractDiagnosticsWithModifiedMockJdkTest.java b/compiler/tests/org/jetbrains/kotlin/cfg/AbstractDiagnosticsWithModifiedMockJdkTest.java new file mode 100644 index 00000000000..b4c2260b08d --- /dev/null +++ b/compiler/tests/org/jetbrains/kotlin/cfg/AbstractDiagnosticsWithModifiedMockJdkTest.java @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.cfg; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.checkers.AbstractDiagnosticsTest; +import org.jetbrains.kotlin.test.ConfigurationKind; +import org.jetbrains.kotlin.test.TestJdkKind; + +public abstract class AbstractDiagnosticsWithModifiedMockJdkTest extends AbstractDiagnosticsTest { + @NotNull + @Override + protected ConfigurationKind getConfigurationKind() { + return ConfigurationKind.ALL; + } + + @NotNull + @Override + protected TestJdkKind getTestJdkKind() { + return TestJdkKind.MODIFIED_MOCK_JDK; + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/cfg/DiagnosticsWithModifiedMockJdkTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cfg/DiagnosticsWithModifiedMockJdkTestGenerated.java new file mode 100644 index 00000000000..a409d5bfec5 --- /dev/null +++ b/compiler/tests/org/jetbrains/kotlin/cfg/DiagnosticsWithModifiedMockJdkTestGenerated.java @@ -0,0 +1,49 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.cfg; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/diagnostics/testWithModifiedMockJdk") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class DiagnosticsWithModifiedMockJdkTestGenerated extends AbstractDiagnosticsWithModifiedMockJdkTest { + public void testAllFilesPresentInTestWithModifiedMockJdk() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testWithModifiedMockJdk"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("notConsideredMethod.kt") + public void testNotConsideredMethod() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testWithModifiedMockJdk/notConsideredMethod.kt"); + doTest(fileName); + } + + @TestMetadata("throwableConstructor.kt") + public void testThrowableConstructor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testWithModifiedMockJdk/throwableConstructor.kt"); + doTest(fileName); + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsWithUnexpectedJDKMembersTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsWithUnexpectedJDKMembersTest.kt new file mode 100644 index 00000000000..2103e970b00 --- /dev/null +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsWithUnexpectedJDKMembersTest.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.serialization.builtins + +import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.test.ConfigurationKind +import org.jetbrains.kotlin.test.TestJdkKind + +class BuiltInsWithUnexpectedJDKMembersTest : AbstractBuiltInsWithJDKMembersTest() { + override fun createEnvironment(): KotlinCoreEnvironment { + return createEnvironmentWithJdk(ConfigurationKind.JDK_ONLY, TestJdkKind.MODIFIED_MOCK_JDK) + } + + fun testLoadBuiltIns() { + doTest("newMethods") + } +} diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JvmBuiltInsSettings.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JvmBuiltInsSettings.kt index 49e6cb41795..0d470ff1680 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JvmBuiltInsSettings.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/JvmBuiltInsSettings.kt @@ -19,6 +19,8 @@ package org.jetbrains.kotlin.load.kotlin import org.jetbrains.kotlin.builtins.BuiltInsInitializer import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl +import org.jetbrains.kotlin.descriptors.annotations.createDeprecatedAnnotation import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.incremental.components.NoLookupLocation @@ -40,6 +42,7 @@ import org.jetbrains.kotlin.serialization.deserialization.PlatformDependentDecla import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.storage.getValue import org.jetbrains.kotlin.types.DelegatingType import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.utils.DFS @@ -61,6 +64,13 @@ open class JvmBuiltInsSettings( private val javaAnalogueClassesWithCustomSupertypeCache = storageManager.createCacheWithNotNullValues() + // Most this properties are lazy because they depends on KotlinBuiltIns initialization that depends on JvmBuiltInsSettings object + private val notConsideredDeprecation by storageManager.createLazyValue { + moduleDescriptor.builtIns.createDeprecatedAnnotation( + "This member is not fully supported by Kotlin compiler, so it may be absent or have different signature in next major version" + ).let { AnnotationsImpl(listOf(it)) } + } + private fun createMockJavaIoSerializableType(): KotlinType { val mockJavaIoPackageFragment = object : PackageFragmentDescriptorImpl(moduleDescriptor, FqName("java.io")) { override fun getMemberScope() = MemberScope.Empty @@ -92,7 +102,7 @@ open class JvmBuiltInsSettings( getAdditionalFunctions(classDescriptor) { it.getContributedFunctions(name, NoLookupLocation.FROM_BUILTINS) } - .map { + .mapNotNull { additionalMember -> additionalMember.newCopyBuilder().apply { setOwner(classDescriptor) @@ -100,6 +110,25 @@ open class JvmBuiltInsSettings( setPreserveSourceElement() setSubstitution(createMappedTypeParametersSubstitution( additionalMember.containingDeclaration as ClassDescriptor, classDescriptor)) + + + val memberStatus = additionalMember.getJdkMethodStatus() + when (memberStatus) { + JDKMemberStatus.BLACK_LIST -> { + // Black list methods in final class can't be overridden or called with 'super' + if (classDescriptor.isFinalClass) return@mapNotNull null + setHiddenForResolutionEverywhereBesideSupercalls() + } + + JDKMemberStatus.NOT_CONSIDERED -> { + setAdditionalAnnotations(notConsideredDeprecation) + } + + JDKMemberStatus.DROP -> return@mapNotNull null + + JDKMemberStatus.WHITE_LIST -> {} // Do nothing + } + }.build()!! } @@ -138,27 +167,13 @@ open class JvmBuiltInsSettings( it.containingDeclaration.fqNameSafe in kotlinVersions }) return@filter false - !analogueMember.isInBlackOrMutabilityViolation(isMutable) + !analogueMember.isMutabilityViolation(isMutable) } } - private fun SimpleFunctionDescriptor.isInBlackOrMutabilityViolation(isMutable: Boolean): Boolean { - val jvmDescriptor = computeJvmDescriptor() + private fun SimpleFunctionDescriptor.isMutabilityViolation(isMutable: Boolean): Boolean { val owner = containingDeclaration as ClassDescriptor - if (DFS.ifAny( - listOf(owner), - { - // Search through mapped supertypes to determine that Set.toArray is in blacklist, while we have only - // Collection.toArray there explicitly - // Note, that we can't find j.u.Collection.toArray within overriddenDescriptors of j.u.Set.toArray - it.typeConstructor.supertypes.mapNotNull { - (it.constructor.declarationDescriptor?.original as? ClassDescriptor)?.getJavaAnalogue() - } - } - ) { - javaClassDescriptor -> - SignatureBuildingComponents.signature(javaClassDescriptor, jvmDescriptor) in BLACK_LIST_METHOD_SIGNATURES - }) return true + val jvmDescriptor = computeJvmDescriptor() if ((SignatureBuildingComponents.signature(owner, jvmDescriptor) in MUTABLE_METHOD_SIGNATURES) xor isMutable) return true @@ -172,6 +187,40 @@ open class JvmBuiltInsSettings( } } + private fun FunctionDescriptor.getJdkMethodStatus(): JDKMemberStatus { + val owner = containingDeclaration as ClassDescriptor + val jvmDescriptor = computeJvmDescriptor() + var result: JDKMemberStatus? = null + return DFS.dfs( + listOf(owner), + { + // Search through mapped supertypes to determine that Set.toArray is in blacklist, while we have only + // Collection.toArray there explicitly + // Note, that we can't find j.u.Collection.toArray within overriddenDescriptors of j.u.Set.toArray + it.typeConstructor.supertypes.mapNotNull { + (it.constructor.declarationDescriptor?.original as? ClassDescriptor)?.getJavaAnalogue() + } + }, + object : DFS.AbstractNodeHandler() { + override fun beforeChildren(javaClassDescriptor: ClassDescriptor): Boolean { + val signature = SignatureBuildingComponents.signature(javaClassDescriptor, jvmDescriptor) + when (signature) { + in BLACK_LIST_METHOD_SIGNATURES -> { result = JDKMemberStatus.BLACK_LIST } + in WHITE_LIST_METHOD_SIGNATURES -> { result = JDKMemberStatus.WHITE_LIST } + in DROP_LIST_METHOD_SIGNATURES -> { result = JDKMemberStatus.DROP } + } + + return result == null + } + + override fun result() = result ?: JDKMemberStatus.NOT_CONSIDERED + }) + } + + private enum class JDKMemberStatus { + BLACK_LIST, WHITE_LIST, NOT_CONSIDERED, DROP + } + private fun ClassDescriptor.getJavaAnalogue(): LazyJavaClassDescriptor? { // Prevents recursive dependency: memberScope(Any) -> memberScope(Object) -> memberScope(Any) // No additional members should be added to Any @@ -211,6 +260,11 @@ open class JvmBuiltInsSettings( setReturnType(classDescriptor.defaultType) setPreserveSourceElement() setSubstitution(substitutor.substitution) + + if (SignatureBuildingComponents.signature(javaAnalogueDescriptor, javaConstructor.computeJvmDescriptor()) !in WHITE_LIST_CONSTRUCTOR_SIGNATURES) { + setAdditionalAnnotations(notConsideredDeprecation) + } + }.build() as ConstructorDescriptor } } @@ -246,16 +300,17 @@ open class JvmBuiltInsSettings( return Serializable::class.java.isAssignableFrom(classViaReflection) } + val DROP_LIST_METHOD_SIGNATURES: Set = + SignatureBuildingComponents.inJavaUtil( + "Collection", + "toArray()[Ljava/lang/Object;", "toArray([Ljava/lang/Object;)[Ljava/lang/Object;") + + + "java/lang/annotation/Annotation.annotationType()Ljava/lang/Class;" + val BLACK_LIST_METHOD_SIGNATURES: Set = signatures { buildPrimitiveValueMethodsSet() + - "java/lang/annotation/Annotation.annotationType()Ljava/lang/Class;" + - - inJavaUtil( - "Collection", "toArray()[Ljava/lang/Object;", "toArray([Ljava/lang/Object;)[Ljava/lang/Object;" - ) + - inJavaUtil("List", "sort(Ljava/util/Comparator;)V") + inJavaLang("String", @@ -280,8 +335,6 @@ open class JvmBuiltInsSettings( inJavaLang("Double", "isInfinite()Z", "isNaN()Z") + inJavaLang("Float", "isInfinite()Z", "isNaN()Z") + - inJavaUtil("Collection", "toArray([Ljava/lang/Object;)[Ljava/lang/Object;", "toArray()[Ljava/lang/Object;") + - inJavaLang("Enum", "getDeclaringClass()Ljava/lang/Class;", "finalize()V") } @@ -292,6 +345,43 @@ open class JvmBuiltInsSettings( } } + val WHITE_LIST_METHOD_SIGNATURES: Set = + signatures { + inJavaLang("CharSequence", + "codePoints()Ljava/util/stream/IntStream;", "chars()Ljava/util/stream/IntStream;") + + + inJavaUtil("Iterator", + "forEachRemaining(Ljava/util/function/Consumer;)V") + + + inJavaLang("Iterable", + "forEach(Ljava/util/function/Consumer;)V", "spliterator()Ljava/util/Spliterator;") + + + inJavaLang("Throwable", + "setStackTrace([Ljava/lang/StackTraceElement;)V", "fillInStackTrace()Ljava/lang/Throwable;", + "getLocalizedMessage()Ljava/lang/String;", "printStackTrace()V", "printStackTrace(Ljava/io/PrintStream;)V", + "printStackTrace(Ljava/io/PrintWriter;)V", "getStackTrace()[Ljava/lang/StackTraceElement;", + "initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;", "getSuppressed()[Ljava/lang/Throwable;", + "addSuppressed(Ljava/lang/Throwable;)V") + + + inJavaUtil("Collection", + "spliterator()Ljava/util/Spliterator;", "parallelStream()Ljava/util/stream/Stream;", + "stream()Ljava/util/stream/Stream;", "removeIf(Ljava/util/function/Predicate;)Z") + + + inJavaUtil("List", + "replaceAll(Ljava/util/function/UnaryOperator;)V") + + + inJavaUtil("Map", + "getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + "forEach(Ljava/util/function/BiConsumer;)V", "replaceAll(Ljava/util/function/BiFunction;)V", + "merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;", + "computeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;", + "putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + "replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z", + "replace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;", + "computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;", + "compute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;") + } + val MUTABLE_METHOD_SIGNATURES: Set = signatures { inJavaUtil("Collection", "removeIf(Ljava/util/function/Predicate;)Z") + @@ -324,6 +414,11 @@ open class JvmBuiltInsSettings( )) } + val WHITE_LIST_CONSTRUCTOR_SIGNATURES: Set = + signatures { + inJavaLang("Throwable", *constructors("Ljava/lang/String;Ljava/lang/Throwable;ZZ")) + } + private fun buildPrimitiveStringConstructorsSet(): Set = signatures { listOf(JvmPrimitiveType.BOOLEAN, JvmPrimitiveType.BYTE, JvmPrimitiveType.DOUBLE, JvmPrimitiveType.FLOAT, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationsImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationsImpl.kt similarity index 100% rename from compiler/frontend/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationsImpl.kt rename to core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationsImpl.kt diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/annotationUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/annotationUtil.kt index 7157883eb9c..79dce013756 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/annotationUtil.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/annotationUtil.kt @@ -26,11 +26,9 @@ import org.jetbrains.kotlin.resolve.constants.EnumValue import org.jetbrains.kotlin.resolve.constants.StringValue import org.jetbrains.kotlin.types.Variance -// This function may be useful if we deprecate something not via the annotation but with special code in the compiler -@Suppress("unused") fun KotlinBuiltIns.createDeprecatedAnnotation( message: String, - replaceWith: String, + replaceWith: String = "", level: String = "WARNING" ): AnnotationDescriptor { val deprecatedAnnotation = deprecatedAnnotation diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index e8606f11cfb..0a21a65f0d8 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.annotation.AbstractAnnotationProcessorBoxTest import org.jetbrains.kotlin.asJava.AbstractCompilerLightClassTest import org.jetbrains.kotlin.cfg.AbstractControlFlowTest import org.jetbrains.kotlin.cfg.AbstractDataFlowTest +import org.jetbrains.kotlin.cfg.AbstractDiagnosticsWithModifiedMockJdkTest import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest import org.jetbrains.kotlin.checkers.* import org.jetbrains.kotlin.cli.AbstractCliTest @@ -166,6 +167,11 @@ fun main(args: Array) { model("diagnostics/testsWithJsStdLibAndBackendCompilation") } + + testClass() { + model("diagnostics/testWithModifiedMockJdk") + } + testClass() { model("foreignAnnotations/tests") }