Load additional JDK functions into built-ins member scope

#KT-5990 Fixed
 #KT-7127 Fixed
 #KT-10370 Fixed
This commit is contained in:
Denis Zharkov
2016-04-06 16:35:50 +03:00
parent 137847e0c9
commit 5bc5722051
63 changed files with 3395 additions and 147 deletions
@@ -28,5 +28,4 @@ class InstanceComponentDescriptor(val instance: Any) : ComponentDescriptor {
override fun toString(): String { override fun toString(): String {
return "Instance: ${instance.javaClass.simpleName}" return "Instance: ${instance.javaClass.simpleName}"
} }
} }
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.context.ContextKt; import org.jetbrains.kotlin.context.ContextKt;
import org.jetbrains.kotlin.context.ModuleContext; import org.jetbrains.kotlin.context.ModuleContext;
import org.jetbrains.kotlin.context.MutableModuleContext; import org.jetbrains.kotlin.context.MutableModuleContext;
import org.jetbrains.kotlin.context.ProjectContext;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider; import org.jetbrains.kotlin.descriptors.PackageFragmentProvider;
import org.jetbrains.kotlin.descriptors.PackagePartProvider; import org.jetbrains.kotlin.descriptors.PackagePartProvider;
@@ -161,9 +162,13 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull @NotNull
public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) { public static MutableModuleContext createContextWithSealedModule(@NotNull Project project, @NotNull String moduleName) {
ProjectContext projectContext = ContextKt.ProjectContext(project);
JvmBuiltIns builtIns = new JvmBuiltIns(projectContext.getStorageManager());
MutableModuleContext context = ContextKt.ContextForNewModule( MutableModuleContext context = ContextKt.ContextForNewModule(
project, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE, JvmBuiltIns.getInstance() projectContext, Name.special("<" + moduleName + ">"), JvmPlatform.INSTANCE,
builtIns
); );
builtIns.setOwnerModuleDescriptor(context.getModule());
context.setDependencies(context.getModule(), context.getBuiltIns().getBuiltInsModule()); context.setDependencies(context.getModule(), context.getBuiltIns().getBuiltInsModule());
return context; return context;
} }
@@ -17,12 +17,13 @@
package org.jetbrains.kotlin.synthetic package org.jetbrains.kotlin.synthetic
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue
fun FunctionDescriptor.hasJavaOriginInHierarchy(): Boolean { fun FunctionDescriptor.hasJavaOriginInHierarchy(): Boolean {
return if (original.overriddenDescriptors.isEmpty()) return if (original.overriddenDescriptors.isEmpty())
containingDeclaration is JavaClassDescriptor this is JavaCallableMemberDescriptor || containingDeclaration is JavaClassDescriptor
else else
original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() } original.overriddenDescriptors.any { it.hasJavaOriginInHierarchy() }
} }
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.resolve.TargetEnvironment
import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.createModule import org.jetbrains.kotlin.resolve.createModule
import org.jetbrains.kotlin.utils.singletonOrEmptyList
import java.util.* import java.util.*
class ResolverForModule( class ResolverForModule(
@@ -155,7 +156,8 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
targetEnvironment: TargetEnvironment, targetEnvironment: TargetEnvironment,
builtIns: KotlinBuiltIns, builtIns: KotlinBuiltIns,
delegateResolver: ResolverForProject<M> = EmptyResolverForProject(), delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
packagePartProviderFactory: (M, ModuleContent) -> PackagePartProvider = { module, content -> PackagePartProvider.EMPTY } packagePartProviderFactory: (M, ModuleContent) -> PackagePartProvider = { module, content -> PackagePartProvider.EMPTY },
firstDependency: M? = null
): ResolverForProject<M> { ): ResolverForProject<M> {
val storageManager = projectContext.storageManager val storageManager = projectContext.storageManager
fun createResolverForProject(): ResolverForProjectImpl<M> { fun createResolverForProject(): ResolverForProjectImpl<M> {
@@ -171,10 +173,11 @@ abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
val resolverForProject = createResolverForProject() val resolverForProject = createResolverForProject()
fun computeDependencyDescriptors(module: M): List<ModuleDescriptorImpl> { fun computeDependencyDescriptors(module: M): List<ModuleDescriptorImpl> {
val dependenciesDescriptors = module.dependencies().mapTo(ArrayList<ModuleDescriptorImpl>()) { val orderedDependencies = firstDependency.singletonOrEmptyList() + module.dependencies()
dependencyInfo -> val dependenciesDescriptors = orderedDependencies.mapTo(ArrayList<ModuleDescriptorImpl>()) {
resolverForProject.descriptorForModule(dependencyInfo as M) dependencyInfo ->
} resolverForProject.descriptorForModule(dependencyInfo as M)
}
module.dependencyOnBuiltIns().adjustDependencies( module.dependencyOnBuiltIns().adjustDependencies(
resolverForProject.descriptorForModule(module).builtIns.builtInsModule, dependenciesDescriptors) resolverForProject.descriptorForModule(module).builtIns.builtInsModule, dependenciesDescriptors)
return dependenciesDescriptors return dependenciesDescriptors
@@ -116,12 +116,11 @@ fun ContextForNewModule(
} }
fun ContextForNewModule( fun ContextForNewModule(
project: Project, projectContext: ProjectContext,
moduleName: Name, moduleName: Name,
targetPlatform: TargetPlatform, targetPlatform: TargetPlatform,
builtIns: KotlinBuiltIns builtIns: KotlinBuiltIns
): MutableModuleContext { ): MutableModuleContext {
val projectContext = ProjectContext(project)
val module = targetPlatform.createModule(moduleName, projectContext.storageManager, builtIns) val module = targetPlatform.createModule(moduleName, projectContext.storageManager, builtIns)
return MutableModuleContextImpl(module, projectContext) return MutableModuleContextImpl(module, projectContext)
} }
@@ -0,0 +1,234 @@
package-fragment kotlin.collections
public abstract class BooleanIterator : kotlin.collections.Iterator<kotlin.Boolean> {
/*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<kotlin.Byte> {
/*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<kotlin.Char> {
/*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</*0*/ out E> : kotlin.collections.Iterable<E> {
public abstract val size: kotlin.Int
public abstract fun <get-size>(): 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<E>
}
public abstract class DoubleIterator : kotlin.collections.Iterator<kotlin.Double> {
/*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<kotlin.Float> {
/*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<kotlin.Int> {
/*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</*0*/ out T> {
public abstract operator fun iterator(): kotlin.collections.Iterator<T>
}
public interface Iterator</*0*/ out T> {
public abstract operator fun hasNext(): kotlin.Boolean
public abstract operator fun next(): T
}
public interface List</*0*/ out E> : kotlin.collections.Collection<E> {
public abstract override /*1*/ val size: kotlin.Int
public abstract override /*1*/ fun <get-size>(): 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<E>
public abstract fun lastIndexOf(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Int
public abstract fun listIterator(): kotlin.collections.ListIterator<E>
public abstract fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.ListIterator<E>
public abstract fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.List<E>
}
public interface ListIterator</*0*/ out T> : kotlin.collections.Iterator<T> {
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<kotlin.Long> {
/*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</*0*/ K, /*1*/ out V> {
public abstract val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<K, V>>
public abstract fun <get-entries>(): kotlin.collections.Set<kotlin.collections.Map.Entry<K, V>>
public abstract val keys: kotlin.collections.Set<K>
public abstract fun <get-keys>(): kotlin.collections.Set<K>
public abstract val size: kotlin.Int
public abstract fun <get-size>(): kotlin.Int
public abstract val values: kotlin.collections.Collection<V>
public abstract fun <get-values>(): kotlin.collections.Collection<V>
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</*0*/ out K, /*1*/ out V> {
public abstract val key: K
public abstract fun <get-key>(): K
public abstract val value: V
public abstract fun <get-value>(): V
}
}
public interface MutableCollection</*0*/ E> : kotlin.collections.Collection<E>, kotlin.collections.MutableIterable<E> {
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract fun add(/*0*/ element: E): kotlin.Boolean
public abstract fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator<E>
public abstract fun remove(/*0*/ element: E): kotlin.Boolean
public abstract fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public abstract fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
}
public interface MutableIterable</*0*/ out T> : kotlin.collections.Iterable<T> {
public abstract override /*1*/ fun iterator(): kotlin.collections.MutableIterator<T>
}
public interface MutableIterator</*0*/ out T> : kotlin.collections.Iterator<T> {
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</*0*/ E> : kotlin.collections.List<E>, kotlin.collections.MutableCollection<E> {
public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*2*/ /*fake_override*/ fun <get-size>(): 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<E>): kotlin.Boolean
public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): 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<E>
public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ element: E): kotlin.Int
public abstract override /*1*/ fun listIterator(): kotlin.collections.MutableListIterator<E>
public abstract override /*1*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.MutableListIterator<E>
public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public abstract fun removeAt(/*0*/ index: kotlin.Int): E
public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>
}
public interface MutableListIterator</*0*/ T> : kotlin.collections.ListIterator<T>, kotlin.collections.MutableIterator<T> {
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</*0*/ K, /*1*/ V> : kotlin.collections.Map<K, V> {
public abstract override /*1*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K, V>>
public abstract override /*1*/ fun <get-entries>(): kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K, V>>
public abstract override /*1*/ val keys: kotlin.collections.MutableSet<K>
public abstract override /*1*/ fun <get-keys>(): kotlin.collections.MutableSet<K>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract override /*1*/ val values: kotlin.collections.MutableCollection<V>
public abstract override /*1*/ fun <get-values>(): kotlin.collections.MutableCollection<V>
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<out K, V>): kotlin.Unit
public abstract fun remove(/*0*/ key: K): V?
public interface MutableEntry</*0*/ K, /*1*/ V> : kotlin.collections.Map.Entry<K, V> {
public abstract override /*1*/ /*fake_override*/ val key: K
public abstract override /*1*/ /*fake_override*/ fun <get-key>(): K
public abstract override /*1*/ /*fake_override*/ val value: V
public abstract override /*1*/ /*fake_override*/ fun <get-value>(): V
public abstract fun setValue(/*0*/ newValue: V): V
}
}
public interface MutableSet</*0*/ E> : kotlin.collections.Set<E>, kotlin.collections.MutableCollection<E> {
public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*2*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract override /*1*/ fun add(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): kotlin.Boolean
public abstract override /*2*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator<E>
public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
}
public interface Set</*0*/ out E> : kotlin.collections.Collection<E> {
public abstract override /*1*/ val size: kotlin.Int
public abstract override /*1*/ fun <get-size>(): 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<E>
}
public abstract class ShortIterator : kotlin.collections.Iterator<kotlin.Short> {
/*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
}
@@ -0,0 +1,181 @@
package-fragment kotlin.ranges
public open class CharProgression : kotlin.collections.Iterable<kotlin.Char> {
/*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 <get-first>(): kotlin.Char
public final val last: kotlin.Char
public final fun <get-last>(): kotlin.Char
public final val step: kotlin.Int
public final fun <get-step>(): 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 <get-finalElement>(): kotlin.Int
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Int
private final fun <get-next>(): kotlin.Int
private final fun <set-next>(/*0*/ <set-?>: kotlin.Int): kotlin.Unit
public final val step: kotlin.Int
public final fun <get-step>(): 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<kotlin.Char> {
/*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 <get-endInclusive>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val first: kotlin.Char
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val last: kotlin.Char
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Char
public open override /*1*/ val start: kotlin.Char
public open override /*1*/ fun <get-start>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val step: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-step>(): 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 <get-EMPTY>(): kotlin.ranges.CharRange
}
}
public interface ClosedRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endInclusive: T
public abstract fun <get-endInclusive>(): T
public abstract val start: T
public abstract fun <get-start>(): T
public open operator fun contains(/*0*/ value: T): kotlin.Boolean
public open fun isEmpty(): kotlin.Boolean
}
public open class IntProgression : kotlin.collections.Iterable<kotlin.Int> {
/*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 <get-first>(): kotlin.Int
public final val last: kotlin.Int
public final fun <get-last>(): kotlin.Int
public final val step: kotlin.Int
public final fun <get-step>(): 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 <get-finalElement>(): kotlin.Int
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Int
private final fun <get-next>(): kotlin.Int
private final fun <set-next>(/*0*/ <set-?>: kotlin.Int): kotlin.Unit
public final val step: kotlin.Int
public final fun <get-step>(): 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<kotlin.Int> {
/*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 <get-endInclusive>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val first: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val last: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Int
public open override /*1*/ val start: kotlin.Int
public open override /*1*/ fun <get-start>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val step: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-step>(): 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 <get-EMPTY>(): kotlin.ranges.IntRange
}
}
public open class LongProgression : kotlin.collections.Iterable<kotlin.Long> {
/*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 <get-first>(): kotlin.Long
public final val last: kotlin.Long
public final fun <get-last>(): kotlin.Long
public final val step: kotlin.Long
public final fun <get-step>(): 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 <get-finalElement>(): kotlin.Long
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Long
private final fun <get-next>(): kotlin.Long
private final fun <set-next>(/*0*/ <set-?>: kotlin.Long): kotlin.Unit
public final val step: kotlin.Long
public final fun <get-step>(): 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<kotlin.Long> {
/*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 <get-endInclusive>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val first: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val last: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Long
public open override /*1*/ val start: kotlin.Long
public open override /*1*/ fun <get-start>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val step: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-step>(): 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 <get-EMPTY>(): kotlin.ranges.LongRange
}
}
+699
View File
@@ -0,0 +1,699 @@
package-fragment kotlin
public inline fun </*0*/ reified @kotlin.internal.PureReifiable() T> arrayOf(/*0*/ vararg elements: T /*kotlin.Array<out T>*/): kotlin.Array<T>
public fun </*0*/ reified @kotlin.internal.PureReifiable() T> arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array<T?>
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 </*0*/ reified @kotlin.internal.PureReifiable() T> emptyArray(): kotlin.Array<T>
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</*0*/ T> : kotlin.Cloneable, java.io.Serializable {
public constructor Array</*0*/ T>(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> T)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.Array<T>
public final operator fun get(/*0*/ index: kotlin.Int): T
public final operator fun iterator(): kotlin.collections.Iterator<T>
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: T): kotlin.Unit
}
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, 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 <get-size>(): 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<kotlin.Byte>, 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 <get-MAX_VALUE>(): kotlin.Byte
public const final val MIN_VALUE: kotlin.Byte
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<kotlin.Char>, 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 <get-MAX_HIGH_SURROGATE>(): kotlin.Char
public const final val MAX_LOW_SURROGATE: kotlin.Char
public final fun <get-MAX_LOW_SURROGATE>(): kotlin.Char
public const final val MAX_SURROGATE: kotlin.Char
public final fun <get-MAX_SURROGATE>(): kotlin.Char
public const final val MIN_HIGH_SURROGATE: kotlin.Char
public final fun <get-MIN_HIGH_SURROGATE>(): kotlin.Char
public const final val MIN_LOW_SURROGATE: kotlin.Char
public final fun <get-MIN_LOW_SURROGATE>(): kotlin.Char
public const final val MIN_SURROGATE: kotlin.Char
public final fun <get-MIN_SURROGATE>(): 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 <get-size>(): 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 <get-length>(): 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</*0*/ in T> {
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 <get-level>(): kotlin.DeprecationLevel
public final val message: kotlin.String
public final fun <get-message>(): kotlin.String
public final val replaceWith: kotlin.ReplaceWith
public final fun <get-replaceWith>(): kotlin.ReplaceWith
}
public final enum class DeprecationLevel : kotlin.Enum<kotlin.DeprecationLevel> {
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 <get-name>(): kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-ordinal>(): 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*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ fun getDeclaringClass(): java.lang.Class<kotlin.DeprecationLevel!>!
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.DeprecationLevel
public final /*synthesized*/ fun values(): kotlin.Array<kotlin.DeprecationLevel>
}
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, 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 <get-MAX_VALUE>(): kotlin.Double
public final val MIN_VALUE: kotlin.Double
public final fun <get-MIN_VALUE>(): kotlin.Double
public final val NEGATIVE_INFINITY: kotlin.Double
public final fun <get-NEGATIVE_INFINITY>(): kotlin.Double
public final val NaN: kotlin.Double
public final fun <get-NaN>(): kotlin.Double
public final val POSITIVE_INFINITY: kotlin.Double
public final fun <get-POSITIVE_INFINITY>(): 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 <get-size>(): 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</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, java.io.Serializable {
/*primary*/ public constructor Enum</*0*/ E : kotlin.Enum<E>>(/*0*/ name: kotlin.String, /*1*/ ordinal: kotlin.Int)
public final val name: kotlin.String
public final fun <get-name>(): kotlin.String
public final val ordinal: kotlin.Int
public final fun <get-ordinal>(): kotlin.Int
protected final fun clone(): kotlin.Any
public final override /*1*/ fun compareTo(/*0*/ other: E): kotlin.Int
protected/*protected and package*/ final fun finalize(): kotlin.Unit
public final fun getDeclaringClass(): java.lang.Class<E!>!
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<kotlin.Float>, 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 <get-MAX_VALUE>(): kotlin.Float
public final val MIN_VALUE: kotlin.Float
public final fun <get-MIN_VALUE>(): kotlin.Float
public final val NEGATIVE_INFINITY: kotlin.Float
public final fun <get-NEGATIVE_INFINITY>(): kotlin.Float
public final val NaN: kotlin.Float
public final fun <get-NaN>(): kotlin.Float
public final val POSITIVE_INFINITY: kotlin.Float
public final fun <get-POSITIVE_INFINITY>(): 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 <get-size>(): 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</*0*/ out R> {
}
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, 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 <get-MAX_VALUE>(): kotlin.Int
public const final val MIN_VALUE: kotlin.Int
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<kotlin.Long>, 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 <get-MAX_VALUE>(): kotlin.Long
public const final val MIN_VALUE: kotlin.Long
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<out kotlin.String>*/)
public final val expression: kotlin.String
public final fun <get-expression>(): kotlin.String
public final val imports: kotlin.Array<out kotlin.String>
public final fun <get-imports>(): kotlin.Array<out kotlin.String>
}
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, 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 <get-MAX_VALUE>(): kotlin.Short
public const final val MIN_VALUE: kotlin.Short
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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.String>, kotlin.CharSequence, java.io.Serializable {
/*primary*/ public constructor String()
public open override /*1*/ val length: kotlin.Int
public open override /*1*/ fun <get-length>(): 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<out kotlin.String>*/)
public final val names: kotlin.Array<out kotlin.String>
public final fun <get-names>(): kotlin.Array<out kotlin.String>
}
public open class Throwable : kotlin.Any, java.io.Serializable {
public constructor Throwable()
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 <get-cause>(): kotlin.Throwable?
public open val message: kotlin.String?
public open fun <get-message>(): 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*/ p0: kotlin.Throwable!): kotlin.Throwable!
public open fun printStackTrace(): kotlin.Unit
public open fun printStackTrace(/*0*/ p0: java.io.PrintStream!): kotlin.Unit
public open fun printStackTrace(/*0*/ p0: java.io.PrintWriter!): kotlin.Unit
public open fun setStackTrace(/*0*/ p0: 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()
}
@@ -0,0 +1,292 @@
package-fragment kotlin.collections
public abstract class BooleanIterator : kotlin.collections.Iterator<kotlin.Boolean> {
/*primary*/ public constructor BooleanIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Boolean!>!): kotlin.Unit
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<kotlin.Byte> {
/*primary*/ public constructor ByteIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Byte!>!): kotlin.Unit
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<kotlin.Char> {
/*primary*/ public constructor CharIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Char!>!): kotlin.Unit
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</*0*/ out E> : kotlin.collections.Iterable<E> {
public abstract val size: kotlin.Int
public abstract fun <get-size>(): 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 open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
public abstract fun isEmpty(): kotlin.Boolean
public abstract override /*1*/ fun iterator(): kotlin.collections.Iterator<E>
public open fun parallelStream(): java.util.stream.Stream<E!>!
public open override /*1*/ fun spliterator(): java.util.Spliterator<E!>!
public open fun stream(): java.util.stream.Stream<E!>!
}
public abstract class DoubleIterator : kotlin.collections.Iterator<kotlin.Double> {
/*primary*/ public constructor DoubleIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Double!>!): kotlin.Unit
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<kotlin.Float> {
/*primary*/ public constructor FloatIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Float!>!): kotlin.Unit
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<kotlin.Int> {
/*primary*/ public constructor IntIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Int!>!): kotlin.Unit
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</*0*/ out T> {
public open fun forEach(/*0*/ p0: java.util.function.Consumer<in T!>!): kotlin.Unit
public abstract operator fun iterator(): kotlin.collections.Iterator<T>
public open fun spliterator(): java.util.Spliterator<T!>!
}
public interface Iterator</*0*/ out T> {
public open fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in T!>!): kotlin.Unit
public abstract operator fun hasNext(): kotlin.Boolean
public abstract operator fun next(): T
}
public interface List</*0*/ out E> : kotlin.collections.Collection<E> {
public abstract override /*1*/ val size: kotlin.Int
public abstract override /*1*/ fun <get-size>(): 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 open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
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<E>
public abstract fun lastIndexOf(/*0*/ element: @kotlin.UnsafeVariance() E): kotlin.Int
public abstract fun listIterator(): kotlin.collections.ListIterator<E>
public abstract fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.ListIterator<E>
public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<E!>!
public open override /*1*/ fun spliterator(): java.util.Spliterator<E!>!
public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream<E!>!
public abstract fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.List<E>
}
public interface ListIterator</*0*/ out T> : kotlin.collections.Iterator<T> {
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in T!>!): kotlin.Unit
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<kotlin.Long> {
/*primary*/ public constructor LongIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Long!>!): kotlin.Unit
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</*0*/ K, /*1*/ out V> {
public abstract val entries: kotlin.collections.Set<kotlin.collections.Map.Entry<K, V>>
public abstract fun <get-entries>(): kotlin.collections.Set<kotlin.collections.Map.Entry<K, V>>
public abstract val keys: kotlin.collections.Set<K>
public abstract fun <get-keys>(): kotlin.collections.Set<K>
public abstract val size: kotlin.Int
public abstract fun <get-size>(): kotlin.Int
public abstract val values: kotlin.collections.Collection<V>
public abstract fun <get-values>(): kotlin.collections.Collection<V>
public abstract fun containsKey(/*0*/ key: K): kotlin.Boolean
public abstract fun containsValue(/*0*/ value: @kotlin.UnsafeVariance() V): kotlin.Boolean
public open fun forEach(/*0*/ p0: java.util.function.BiConsumer<in K!, in V!>!): kotlin.Unit
public abstract operator fun get(/*0*/ key: K): V?
public open fun getOrDefault(/*0*/ p0: kotlin.Any!, /*1*/ p1: V!): V!
public abstract fun isEmpty(): kotlin.Boolean
public interface Entry</*0*/ out K, /*1*/ out V> {
public abstract val key: K
public abstract fun <get-key>(): K
public abstract val value: V
public abstract fun <get-value>(): V
}
}
public interface MutableCollection</*0*/ E> : kotlin.collections.Collection<E>, kotlin.collections.MutableIterable<E> {
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract fun add(/*0*/ element: E): kotlin.Boolean
public abstract fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator<E>
public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<E!>!
public abstract fun remove(/*0*/ element: E): kotlin.Boolean
public abstract fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public open fun removeIf(/*0*/ p0: java.util.function.Predicate<in E!>!): kotlin.Boolean
public abstract fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<E!>!
public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream<E!>!
}
public interface MutableIterable</*0*/ out T> : kotlin.collections.Iterable<T> {
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in T!>!): kotlin.Unit
public abstract override /*1*/ fun iterator(): kotlin.collections.MutableIterator<T>
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<T!>!
}
public interface MutableIterator</*0*/ out T> : kotlin.collections.Iterator<T> {
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in T!>!): kotlin.Unit
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</*0*/ E> : kotlin.collections.List<E>, kotlin.collections.MutableCollection<E> {
public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*2*/ /*fake_override*/ fun <get-size>(): 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<E>): kotlin.Boolean
public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
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<E>
public abstract override /*1*/ /*fake_override*/ fun lastIndexOf(/*0*/ element: E): kotlin.Int
public abstract override /*1*/ fun listIterator(): kotlin.collections.MutableListIterator<E>
public abstract override /*1*/ fun listIterator(/*0*/ index: kotlin.Int): kotlin.collections.MutableListIterator<E>
public open override /*2*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<E!>!
public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public abstract fun removeAt(/*0*/ index: kotlin.Int): E
public open override /*1*/ /*fake_override*/ fun removeIf(/*0*/ p0: java.util.function.Predicate<in E!>!): kotlin.Boolean
public open fun replaceAll(/*0*/ p0: java.util.function.UnaryOperator<E!>!): kotlin.Unit
public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public abstract operator fun set(/*0*/ index: kotlin.Int, /*1*/ element: E): E
public open fun sort(/*0*/ p0: java.util.Comparator<in E!>!): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<E!>!
public open override /*2*/ /*fake_override*/ fun stream(): java.util.stream.Stream<E!>!
public abstract override /*1*/ fun subList(/*0*/ fromIndex: kotlin.Int, /*1*/ toIndex: kotlin.Int): kotlin.collections.MutableList<E>
}
public interface MutableListIterator</*0*/ T> : kotlin.collections.ListIterator<T>, kotlin.collections.MutableIterator<T> {
public abstract fun add(/*0*/ element: T): kotlin.Unit
public open override /*2*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in 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</*0*/ K, /*1*/ V> : kotlin.collections.Map<K, V> {
public abstract override /*1*/ val entries: kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K, V>>
public abstract override /*1*/ fun <get-entries>(): kotlin.collections.MutableSet<kotlin.collections.MutableMap.MutableEntry<K, V>>
public abstract override /*1*/ val keys: kotlin.collections.MutableSet<K>
public abstract override /*1*/ fun <get-keys>(): kotlin.collections.MutableSet<K>
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*1*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract override /*1*/ val values: kotlin.collections.MutableCollection<V>
public abstract override /*1*/ fun <get-values>(): kotlin.collections.MutableCollection<V>
public abstract fun clear(): kotlin.Unit
public open fun compute(/*0*/ p0: K!, /*1*/ p1: java.util.function.BiFunction<in K!, in V!, out V!>!): V!
public open fun computeIfAbsent(/*0*/ p0: K!, /*1*/ p1: java.util.function.Function<in K!, out V!>!): V!
public open fun computeIfPresent(/*0*/ p0: K!, /*1*/ p1: java.util.function.BiFunction<in K!, in V!, out V!>!): V!
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 open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.BiConsumer<in K!, in V!>!): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun get(/*0*/ key: K): V?
public open override /*1*/ /*fake_override*/ fun getOrDefault(/*0*/ p0: kotlin.Any!, /*1*/ p1: V!): V!
public abstract override /*1*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public open fun merge(/*0*/ p0: K!, /*1*/ p1: V!, /*2*/ p2: java.util.function.BiFunction<in V!, in V!, out V!>!): V!
public abstract fun put(/*0*/ key: K, /*1*/ value: V): V?
public abstract fun putAll(/*0*/ from: kotlin.collections.Map<out K, V>): kotlin.Unit
public open fun putIfAbsent(/*0*/ p0: K!, /*1*/ p1: V!): V!
public abstract fun remove(/*0*/ key: K): V?
public open fun remove(/*0*/ p0: kotlin.Any!, /*1*/ p1: kotlin.Any!): kotlin.Boolean
public open fun replace(/*0*/ p0: K!, /*1*/ p1: V!): V!
public open fun replace(/*0*/ p0: K!, /*1*/ p1: V!, /*2*/ p2: V!): kotlin.Boolean
public open fun replaceAll(/*0*/ p0: java.util.function.BiFunction<in K!, in V!, out V!>!): kotlin.Unit
public interface MutableEntry</*0*/ K, /*1*/ V> : kotlin.collections.Map.Entry<K, V> {
public abstract override /*1*/ /*fake_override*/ val key: K
public abstract override /*1*/ /*fake_override*/ fun <get-key>(): K
public abstract override /*1*/ /*fake_override*/ val value: V
public abstract override /*1*/ /*fake_override*/ fun <get-value>(): V
public abstract fun setValue(/*0*/ newValue: V): V
}
}
public interface MutableSet</*0*/ E> : kotlin.collections.Set<E>, kotlin.collections.MutableCollection<E> {
public abstract override /*2*/ /*fake_override*/ val size: kotlin.Int
public abstract override /*2*/ /*fake_override*/ fun <get-size>(): kotlin.Int
public abstract override /*1*/ fun add(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun addAll(/*0*/ elements: kotlin.collections.Collection<E>): 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<E>): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
public abstract override /*2*/ /*fake_override*/ fun isEmpty(): kotlin.Boolean
public abstract override /*2*/ fun iterator(): kotlin.collections.MutableIterator<E>
public open override /*2*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<E!>!
public abstract override /*1*/ fun remove(/*0*/ element: E): kotlin.Boolean
public abstract override /*1*/ fun removeAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun removeIf(/*0*/ p0: java.util.function.Predicate<in E!>!): kotlin.Boolean
public abstract override /*1*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<E>): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<E!>!
public open override /*2*/ /*fake_override*/ fun stream(): java.util.stream.Stream<E!>!
}
public interface Set</*0*/ out E> : kotlin.collections.Collection<E> {
public abstract override /*1*/ val size: kotlin.Int
public abstract override /*1*/ fun <get-size>(): 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 open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in E!>!): kotlin.Unit
public abstract override /*1*/ fun isEmpty(): kotlin.Boolean
public abstract override /*1*/ fun iterator(): kotlin.collections.Iterator<E>
public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<E!>!
public open override /*1*/ fun spliterator(): java.util.Spliterator<E!>!
public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream<E!>!
}
public abstract class ShortIterator : kotlin.collections.Iterator<kotlin.Short> {
/*primary*/ public constructor ShortIterator()
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Short!>!): kotlin.Unit
public abstract override /*1*/ /*fake_override*/ fun hasNext(): kotlin.Boolean
public final override /*1*/ fun next(): kotlin.Short
public abstract fun nextShort(): kotlin.Short
}
@@ -0,0 +1,196 @@
package-fragment kotlin.ranges
public open class CharProgression : kotlin.collections.Iterable<kotlin.Char> {
/*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 <get-first>(): kotlin.Char
public final val last: kotlin.Char
public final fun <get-last>(): kotlin.Char
public final val step: kotlin.Int
public final fun <get-step>(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Char!>!): kotlin.Unit
public open fun isEmpty(): kotlin.Boolean
public open override /*1*/ fun iterator(): kotlin.collections.CharIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Char!>!
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 <get-finalElement>(): kotlin.Int
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Int
private final fun <get-next>(): kotlin.Int
private final fun <set-next>(/*0*/ <set-?>: kotlin.Int): kotlin.Unit
public final val step: kotlin.Int
public final fun <get-step>(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Char!>!): kotlin.Unit
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<kotlin.Char> {
/*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 <get-endInclusive>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val first: kotlin.Char
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val last: kotlin.Char
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Char
public open override /*1*/ val start: kotlin.Char
public open override /*1*/ fun <get-start>(): kotlin.Char
public final override /*1*/ /*fake_override*/ val step: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-step>(): kotlin.Int
public open override /*1*/ fun contains(/*0*/ value: kotlin.Char): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Char!>!): kotlin.Unit
public open override /*2*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.CharIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Char!>!
public companion object Companion {
/*primary*/ private constructor Companion()
public final val EMPTY: kotlin.ranges.CharRange
public final fun <get-EMPTY>(): kotlin.ranges.CharRange
}
}
public interface ClosedRange</*0*/ T : kotlin.Comparable<T>> {
public abstract val endInclusive: T
public abstract fun <get-endInclusive>(): T
public abstract val start: T
public abstract fun <get-start>(): T
public open operator fun contains(/*0*/ value: T): kotlin.Boolean
public open fun isEmpty(): kotlin.Boolean
}
public open class IntProgression : kotlin.collections.Iterable<kotlin.Int> {
/*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 <get-first>(): kotlin.Int
public final val last: kotlin.Int
public final fun <get-last>(): kotlin.Int
public final val step: kotlin.Int
public final fun <get-step>(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Int!>!): kotlin.Unit
public open fun isEmpty(): kotlin.Boolean
public open override /*1*/ fun iterator(): kotlin.collections.IntIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Int!>!
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 <get-finalElement>(): kotlin.Int
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Int
private final fun <get-next>(): kotlin.Int
private final fun <set-next>(/*0*/ <set-?>: kotlin.Int): kotlin.Unit
public final val step: kotlin.Int
public final fun <get-step>(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Int!>!): kotlin.Unit
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<kotlin.Int> {
/*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 <get-endInclusive>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val first: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val last: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Int
public open override /*1*/ val start: kotlin.Int
public open override /*1*/ fun <get-start>(): kotlin.Int
public final override /*1*/ /*fake_override*/ val step: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-step>(): kotlin.Int
public open override /*1*/ fun contains(/*0*/ value: kotlin.Int): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Int!>!): kotlin.Unit
public open override /*2*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.IntIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Int!>!
public companion object Companion {
/*primary*/ private constructor Companion()
public final val EMPTY: kotlin.ranges.IntRange
public final fun <get-EMPTY>(): kotlin.ranges.IntRange
}
}
public open class LongProgression : kotlin.collections.Iterable<kotlin.Long> {
/*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 <get-first>(): kotlin.Long
public final val last: kotlin.Long
public final fun <get-last>(): kotlin.Long
public final val step: kotlin.Long
public final fun <get-step>(): kotlin.Long
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Long!>!): kotlin.Unit
public open fun isEmpty(): kotlin.Boolean
public open override /*1*/ fun iterator(): kotlin.collections.LongIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Long!>!
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 <get-finalElement>(): kotlin.Long
private final var hasNext: kotlin.Boolean
private final fun <get-hasNext>(): kotlin.Boolean
private final fun <set-hasNext>(/*0*/ <set-?>: kotlin.Boolean): kotlin.Unit
private final var next: kotlin.Long
private final fun <get-next>(): kotlin.Long
private final fun <set-next>(/*0*/ <set-?>: kotlin.Long): kotlin.Unit
public final val step: kotlin.Long
public final fun <get-step>(): kotlin.Long
public open override /*1*/ /*fake_override*/ fun forEachRemaining(/*0*/ p0: java.util.function.Consumer<in kotlin.Long!>!): kotlin.Unit
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<kotlin.Long> {
/*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 <get-endInclusive>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val first: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-first>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val last: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-last>(): kotlin.Long
public open override /*1*/ val start: kotlin.Long
public open override /*1*/ fun <get-start>(): kotlin.Long
public final override /*1*/ /*fake_override*/ val step: kotlin.Long
public final override /*1*/ /*fake_override*/ fun <get-step>(): kotlin.Long
public open override /*1*/ fun contains(/*0*/ value: kotlin.Long): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun forEach(/*0*/ p0: java.util.function.Consumer<in kotlin.Long!>!): kotlin.Unit
public open override /*2*/ fun isEmpty(): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun iterator(): kotlin.collections.LongIterator
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.Long!>!
public companion object Companion {
/*primary*/ private constructor Companion()
public final val EMPTY: kotlin.ranges.LongRange
public final fun <get-EMPTY>(): kotlin.ranges.LongRange
}
}
+705
View File
@@ -0,0 +1,705 @@
package-fragment kotlin
public inline fun </*0*/ reified @kotlin.internal.PureReifiable() T> arrayOf(/*0*/ vararg elements: T /*kotlin.Array<out T>*/): kotlin.Array<T>
public fun </*0*/ reified @kotlin.internal.PureReifiable() T> arrayOfNulls(/*0*/ size: kotlin.Int): kotlin.Array<T?>
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 </*0*/ reified @kotlin.internal.PureReifiable() T> emptyArray(): kotlin.Array<T>
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</*0*/ T> : kotlin.Cloneable, java.io.Serializable {
public constructor Array</*0*/ T>(/*0*/ size: kotlin.Int, /*1*/ init: (kotlin.Int) -> T)
public final val size: kotlin.Int
public final fun <get-size>(): kotlin.Int
public open override /*1*/ fun clone(): kotlin.Array<T>
public final operator fun get(/*0*/ index: kotlin.Int): T
public final operator fun iterator(): kotlin.collections.Iterator<T>
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: T): kotlin.Unit
}
public final class Boolean : kotlin.Comparable<kotlin.Boolean>, 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 <get-size>(): 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<kotlin.Byte>, 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 <get-MAX_VALUE>(): kotlin.Byte
public const final val MIN_VALUE: kotlin.Byte
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<kotlin.Char>, 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 <get-MAX_HIGH_SURROGATE>(): kotlin.Char
public const final val MAX_LOW_SURROGATE: kotlin.Char
public final fun <get-MAX_LOW_SURROGATE>(): kotlin.Char
public const final val MAX_SURROGATE: kotlin.Char
public final fun <get-MAX_SURROGATE>(): kotlin.Char
public const final val MIN_HIGH_SURROGATE: kotlin.Char
public final fun <get-MIN_HIGH_SURROGATE>(): kotlin.Char
public const final val MIN_LOW_SURROGATE: kotlin.Char
public final fun <get-MIN_LOW_SURROGATE>(): kotlin.Char
public const final val MIN_SURROGATE: kotlin.Char
public final fun <get-MIN_SURROGATE>(): 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 <get-size>(): 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 <get-length>(): kotlin.Int
public open fun chars(): java.util.stream.IntStream!
public open fun codePoints(): java.util.stream.IntStream!
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</*0*/ in T> {
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 <get-level>(): kotlin.DeprecationLevel
public final val message: kotlin.String
public final fun <get-message>(): kotlin.String
public final val replaceWith: kotlin.ReplaceWith
public final fun <get-replaceWith>(): kotlin.ReplaceWith
}
public final enum class DeprecationLevel : kotlin.Enum<kotlin.DeprecationLevel> {
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 <get-name>(): kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
public final override /*1*/ /*fake_override*/ fun <get-ordinal>(): 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*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ fun getDeclaringClass(): java.lang.Class<kotlin.DeprecationLevel!>!
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): kotlin.DeprecationLevel
public final /*synthesized*/ fun values(): kotlin.Array<kotlin.DeprecationLevel>
}
public final class Double : kotlin.Number, kotlin.Comparable<kotlin.Double>, 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 <get-MAX_VALUE>(): kotlin.Double
public final val MIN_VALUE: kotlin.Double
public final fun <get-MIN_VALUE>(): kotlin.Double
public final val NEGATIVE_INFINITY: kotlin.Double
public final fun <get-NEGATIVE_INFINITY>(): kotlin.Double
public final val NaN: kotlin.Double
public final fun <get-NaN>(): kotlin.Double
public final val POSITIVE_INFINITY: kotlin.Double
public final fun <get-POSITIVE_INFINITY>(): 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 <get-size>(): 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</*0*/ E : kotlin.Enum<E>> : kotlin.Comparable<E>, java.io.Serializable {
/*primary*/ public constructor Enum</*0*/ E : kotlin.Enum<E>>(/*0*/ name: kotlin.String, /*1*/ ordinal: kotlin.Int)
public final val name: kotlin.String
public final fun <get-name>(): kotlin.String
public final val ordinal: kotlin.Int
public final fun <get-ordinal>(): kotlin.Int
protected final fun clone(): kotlin.Any
public final override /*1*/ fun compareTo(/*0*/ other: E): kotlin.Int
protected/*protected and package*/ final fun finalize(): kotlin.Unit
public final fun getDeclaringClass(): java.lang.Class<E!>!
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<kotlin.Float>, 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 <get-MAX_VALUE>(): kotlin.Float
public final val MIN_VALUE: kotlin.Float
public final fun <get-MIN_VALUE>(): kotlin.Float
public final val NEGATIVE_INFINITY: kotlin.Float
public final fun <get-NEGATIVE_INFINITY>(): kotlin.Float
public final val NaN: kotlin.Float
public final fun <get-NaN>(): kotlin.Float
public final val POSITIVE_INFINITY: kotlin.Float
public final fun <get-POSITIVE_INFINITY>(): 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 <get-size>(): 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</*0*/ out R> {
}
public final class Int : kotlin.Number, kotlin.Comparable<kotlin.Int>, 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 <get-MAX_VALUE>(): kotlin.Int
public const final val MIN_VALUE: kotlin.Int
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<kotlin.Long>, 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 <get-MAX_VALUE>(): kotlin.Long
public const final val MIN_VALUE: kotlin.Long
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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<out kotlin.String>*/)
public final val expression: kotlin.String
public final fun <get-expression>(): kotlin.String
public final val imports: kotlin.Array<out kotlin.String>
public final fun <get-imports>(): kotlin.Array<out kotlin.String>
}
public final class Short : kotlin.Number, kotlin.Comparable<kotlin.Short>, 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 <get-MAX_VALUE>(): kotlin.Short
public const final val MIN_VALUE: kotlin.Short
public final fun <get-MIN_VALUE>(): 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 <get-size>(): 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.String>, kotlin.CharSequence, java.io.Serializable {
/*primary*/ public constructor String()
public open override /*1*/ val length: kotlin.Int
public open override /*1*/ fun <get-length>(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun chars(): java.util.stream.IntStream!
public open override /*1*/ /*fake_override*/ fun codePoints(): java.util.stream.IntStream!
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<out kotlin.String>*/)
public final val names: kotlin.Array<out kotlin.String>
public final fun <get-names>(): kotlin.Array<out kotlin.String>
}
public open class Throwable : kotlin.Any, java.io.Serializable {
public constructor Throwable()
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 <get-cause>(): kotlin.Throwable?
public open val message: kotlin.String?
public open fun <get-message>(): kotlin.String?
public final fun addSuppressed(/*0*/ p0: kotlin.Throwable!): kotlin.Unit
public open fun fillInStackTrace(): kotlin.Throwable!
public open fun getLocalizedMessage(): kotlin.String!
public open fun getStackTrace(): kotlin.Array<(out) java.lang.StackTraceElement!>!
public final fun getSuppressed(): kotlin.Array<(out) kotlin.Throwable!>!
public open fun initCause(/*0*/ p0: kotlin.Throwable!): kotlin.Throwable!
public open fun printStackTrace(): kotlin.Unit
public open fun printStackTrace(/*0*/ p0: java.io.PrintStream!): kotlin.Unit
public open fun printStackTrace(/*0*/ p0: java.io.PrintWriter!): kotlin.Unit
public open fun setStackTrace(/*0*/ p0: 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()
}
+33
View File
@@ -0,0 +1,33 @@
// FULL_JDK
// WITH_RUNTIME
import java.util.*
import java.util.function.Predicate
class MyList : AbstractCollection<String>(), MutableCollection<String> {
override fun iterator(): MutableIterator<String> {
throw UnsupportedOperationException()
}
override val size: Int
get() = throw UnsupportedOperationException()
override fun removeIf(predicate: Predicate<in String>) =
predicate.test("abc")
}
fun box(): String {
val ml = mutableListOf("xyz", "abc")
if (!ml.removeIf { x -> x == "abc" }) return "fail 1"
if (ml.removeIf { x -> x == "abc" }) return "fail 2"
if (ml != listOf("xyz")) return "fail 3"
val myList = MyList()
if (!myList.removeIf { x -> x == "abc" }) return "fail 4"
if (myList.removeIf { x -> x == "xyz" }) return "fail 5"
return "OK"
}
+61
View File
@@ -0,0 +1,61 @@
// FULL_JDK
// WITH_RUNTIME
import java.util.stream.*
class B<F> : List<F> {
override val size: Int
get() = throw UnsupportedOperationException()
override fun contains(element: F): Boolean {
throw UnsupportedOperationException()
}
override fun containsAll(elements: Collection<F>): Boolean {
throw UnsupportedOperationException()
}
override fun get(index: Int): F {
throw UnsupportedOperationException()
}
override fun indexOf(element: F): Int {
throw UnsupportedOperationException()
}
override fun isEmpty(): Boolean {
throw UnsupportedOperationException()
}
override fun iterator(): Iterator<F> {
throw UnsupportedOperationException()
}
override fun lastIndexOf(element: F): Int {
throw UnsupportedOperationException()
}
override fun listIterator(): ListIterator<F> {
throw UnsupportedOperationException()
}
override fun listIterator(index: Int): ListIterator<F> {
throw UnsupportedOperationException()
}
override fun subList(fromIndex: Int, toIndex: Int): List<F> {
throw UnsupportedOperationException()
}
override fun stream() = Stream.of("abc", "ab") as Stream<F>
}
fun box(): String {
val a: List<String> = listOf("abc", "a", "ab")
val b = a.stream().filter { it.length > 1 }.collect(Collectors.toList())
if (b != listOf("abc", "ab")) return "fail 1"
val c = B<String>().stream().collect(Collectors.toList())
if (c != listOf("abc", "ab")) return "fail 2"
return "OK"
}
@@ -0,0 +1,21 @@
// FILE: A.kt
import java.util.*
class Jdk6List<F> : AbstractList<F>() {
override fun get(index: Int): F {
return "OK" as F
}
override val size: Int
get() = 2
}
// FILE: B.kt
// FULL_JDK
fun box(): String {
val result = Jdk6List<String>().stream().filter { it == "OK" }.count()
if (result != 2L) return "fai1: $result"
return "OK"
}
@@ -0,0 +1,10 @@
import java.util.stream.*
interface A : MutableCollection<String> {
override fun removeIf(x: java.util.function.Predicate<in String>) = false
}
fun foo(x: MutableList<String>, y: A) {
x.removeIf { it.length > 0 }
y.removeIf { it.length > 0 }
}
@@ -0,0 +1,25 @@
package
public fun foo(/*0*/ x: kotlin.collections.MutableList<kotlin.String>, /*1*/ y: A): kotlin.Unit
public interface A : kotlin.collections.MutableCollection<kotlin.String> {
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.String>): 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.String>): 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<in kotlin.String!>!): kotlin.Unit
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<kotlin.String>
public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<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.String>): kotlin.Boolean
public open override /*1*/ fun removeIf(/*0*/ x: java.util.function.Predicate<in kotlin.String>): kotlin.Boolean
public abstract override /*1*/ /*fake_override*/ fun retainAll(/*0*/ elements: kotlin.collections.Collection<kotlin.String>): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.String!>!
public open override /*1*/ /*fake_override*/ fun stream(): java.util.stream.Stream<kotlin.String!>!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,10 @@
import java.util.stream.*
interface A : Collection<String> {
override fun stream(): Stream<String> = Stream.of()
}
fun foo(x: List<String>, y: A) {
x.stream().filter { it.length > 0 }.collect(Collectors.toList())
y.stream().filter { it.length > 0 }
}
@@ -0,0 +1,18 @@
package
public fun foo(/*0*/ x: kotlin.collections.List<kotlin.String>, /*1*/ y: A): kotlin.Unit
public interface A : kotlin.collections.Collection<kotlin.String> {
public abstract override /*1*/ /*fake_override*/ val size: kotlin.Int
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.String>): 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<in kotlin.String!>!): kotlin.Unit
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.Iterator<kotlin.String>
public open override /*1*/ /*fake_override*/ fun parallelStream(): java.util.stream.Stream<kotlin.String!>!
public open override /*1*/ /*fake_override*/ fun spliterator(): java.util.Spliterator<kotlin.String!>!
public open override /*1*/ fun stream(): java.util.stream.Stream<kotlin.String>
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
import org.jetbrains.kotlin.resolve.MemberComparator import org.jetbrains.kotlin.resolve.MemberComparator
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberScope import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberScope
@@ -45,9 +46,10 @@ private fun validateDeserializedScope(scopeOwner: DeclarationDescriptor, scope:
} }
private fun checkSorted(descriptors: Collection<DeclarationDescriptor>, declaration: DeclarationDescriptor) { private fun checkSorted(descriptors: Collection<DeclarationDescriptor>, declaration: DeclarationDescriptor) {
val serializedOnly = descriptors.filterNot { it is JavaCallableMemberDescriptor }
KtUsefulTestCase.assertOrderedEquals( KtUsefulTestCase.assertOrderedEquals(
"Members of $declaration should be sorted by serialization.", "Members of $declaration should be sorted by serialization.",
descriptors, serializedOnly,
descriptors.sortedWith(MemberComparator.INSTANCE) serializedOnly.sortedWith(MemberComparator.INSTANCE)
) )
} }
@@ -20,10 +20,10 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.ModuleContent import org.jetbrains.kotlin.analyzer.ModuleContent
import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.JvmBuiltIns
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
@@ -42,7 +42,7 @@ fun createResolveSessionForFiles(
{ ModuleContent(syntheticFiles, GlobalSearchScope.allScope(project)) }, { ModuleContent(syntheticFiles, GlobalSearchScope.allScope(project)) },
JvmPlatformParameters { testModule }, JvmPlatformParameters { testModule },
CompilerEnvironment, CompilerEnvironment,
JvmBuiltIns.Instance DefaultBuiltIns.Instance
) )
return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>() return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>()
} }
@@ -22,5 +22,6 @@
<orderEntry type="module" module-name="util" /> <orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="compiler-tests" /> <orderEntry type="module" module-name="compiler-tests" />
<orderEntry type="module" module-name="tests-common" /> <orderEntry type="module" module-name="tests-common" />
<orderEntry type="module" module-name="descriptor.loader.java" />
</component> </component>
</module> </module>
@@ -112,4 +112,25 @@ public class DiagnosticsWithJava8TestGenerated extends AbstractDiagnosticsWithFu
doTest(fileName); doTest(fileName);
} }
} }
@TestMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class TargetedBuiltIns extends AbstractDiagnosticsWithFullJdkTest {
public void testAllFilesPresentInTargetedBuiltIns() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("removeIf.kt")
public void testRemoveIf() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/removeIf.kt");
doTest(fileName);
}
@TestMetadata("stream.kt")
public void testStream() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithJava8/targetedBuiltIns/stream.kt");
doTest(fileName);
}
}
} }
@@ -83,12 +83,24 @@ public class BlackBoxWithJava8CodegenTestGenerated extends AbstractBlackBoxCodeg
doTest(fileName); doTest(fileName);
} }
@TestMetadata("removeIf.kt")
public void testRemoveIf() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/removeIf.kt");
doTest(fileName);
}
@TestMetadata("samOnInterfaceWithDefaultMethod.kt") @TestMetadata("samOnInterfaceWithDefaultMethod.kt")
public void testSamOnInterfaceWithDefaultMethod() throws Exception { public void testSamOnInterfaceWithDefaultMethod() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/samOnInterfaceWithDefaultMethod.kt"); String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/samOnInterfaceWithDefaultMethod.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("stream.kt")
public void testStream() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/stream.kt");
doTest(fileName);
}
@TestMetadata("useStream.kt") @TestMetadata("useStream.kt")
public void testUseStream() throws Exception { public void testUseStream() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/useStream.kt"); String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/java8/box/useStream.kt");
@@ -0,0 +1,43 @@
/*
* 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.codegen;
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/compileKotlinAgainstKotlinJava8")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotlinAgainstKotlinTest {
public void testAllFilesPresentInCompileKotlinAgainstKotlinJava8() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/compileKotlinAgainstKotlinJava8"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("jdk8Against6.kt")
public void testJdk8Against6() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlinJava8/jdk8Against6.kt");
doTest(fileName);
}
}
@@ -0,0 +1,23 @@
/*
* 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
class Java8BuiltInsWithJDKMembersTest : AbstractBuiltInsWithJDKMembersTest() {
fun testLoadBuiltIns() {
doTest("java8")
}
}
@@ -355,7 +355,11 @@ public abstract class AbstractDiagnosticsTest extends BaseDiagnosticsTest {
@NotNull @NotNull
protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) { protected ModuleDescriptorImpl createModule(@NotNull String moduleName, @NotNull StorageManager storageManager) {
return TargetPlatformKt.createModule(JvmPlatform.INSTANCE, Name.special(moduleName), storageManager, JvmBuiltIns.getInstance()); JvmBuiltIns builtIns = new JvmBuiltIns(storageManager);
ModuleDescriptorImpl module = TargetPlatformKt.createModule(
JvmPlatform.INSTANCE, Name.special(moduleName), storageManager, builtIns);
builtIns.setOwnerModuleDescriptor(module);
return module;
} }
@NotNull @NotNull
@@ -60,9 +60,11 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
val moduleDirs = File(PATH_TO_TEST_ROOT_DIR).listFiles { it -> it.isDirectory }!! val moduleDirs = File(PATH_TO_TEST_ROOT_DIR).listFiles { it -> it.isDirectory }!!
val environment = createEnvironment(moduleDirs) val environment = createEnvironment(moduleDirs)
val modules = setupModules(environment, moduleDirs) val modules = setupModules(environment, moduleDirs)
val projectContext = ProjectContext(environment.project)
val builtIns = JvmBuiltIns(projectContext.storageManager)
val resolverForProject = JvmAnalyzerFacade.setupResolverForProject( val resolverForProject = JvmAnalyzerFacade.setupResolverForProject(
"test", "test",
ProjectContext(environment.project), modules, projectContext, modules,
{ m -> ModuleContent(m.kotlinFiles, m.javaFilesScope) }, { m -> ModuleContent(m.kotlinFiles, m.javaFilesScope) },
JvmPlatformParameters { JvmPlatformParameters {
javaClass -> javaClass ->
@@ -70,10 +72,12 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
modules.first { it._name == moduleName } modules.first { it._name == moduleName }
}, },
CompilerEnvironment, CompilerEnvironment,
JvmBuiltIns.Instance, builtIns,
packagePartProviderFactory = { a, b -> JvmPackagePartProvider(environment) } packagePartProviderFactory = { a, b -> JvmPackagePartProvider(environment) }
) )
builtIns.setOwnerModuleDescriptor(resolverForProject.descriptorForModule(resolverForProject.allModules.first()))
performChecks(resolverForProject, modules) performChecks(resolverForProject, modules)
} }
@@ -0,0 +1,80 @@
/*
* 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 com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.builtins.KotlinBuiltIns.*
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.PackagePartProvider
import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.platform.JvmBuiltIns
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRendererModifier
import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
import java.io.File
abstract class AbstractBuiltInsWithJDKMembersTest : KotlinTestWithEnvironment() {
override fun createEnvironment(): KotlinCoreEnvironment {
return createEnvironmentWithJdk(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK)
}
protected fun doTest(builtinVersionName: String) {
val configuration = RecursiveDescriptorComparator.RECURSIVE_ALL.includeMethodsOfKotlinAny(false).withRenderer(
DescriptorRenderer.withOptions {
withDefinedIn = false
overrideRenderingPolicy = OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE
verbose = true
modifiers = DescriptorRendererModifier.ALL
})
val jvmBuiltIns = JvmBuiltIns(LockBasedStorageManager.NO_LOCKS)
val emptyModule = KotlinTestUtils.createEmptyModule("<empty>", JvmPlatform, jvmBuiltIns)
jvmBuiltIns.setOwnerModuleDescriptor(emptyModule)
val moduleContext = ModuleContext(emptyModule, environment.project)
val providerFactory = FileBasedDeclarationProviderFactory(moduleContext.storageManager, emptyList())
val container = createContainerForTopDownAnalyzerForJvm(
moduleContext,
CliLightClassGenerationSupport.CliBindingTrace(), providerFactory,
GlobalSearchScope.allScope(environment.project), LookupTracker.DO_NOTHING, PackagePartProvider.EMPTY)
emptyModule.initialize(container.javaDescriptorResolver.packageFragmentProvider)
emptyModule.setDependencies(emptyModule)
val packageFragmentProvider = emptyModule.builtIns.builtInsModule.packageFragmentProvider
for (packageFqName in listOf<FqName>(BUILT_INS_PACKAGE_FQ_NAME, COLLECTIONS_PACKAGE_FQ_NAME, RANGES_PACKAGE_FQ_NAME)) {
val loaded = packageFragmentProvider.getPackageFragments(packageFqName).single()
RecursiveDescriptorComparator.validateAndCompareDescriptorWithFile(
loaded, configuration,
File("compiler/testData/builtin-classes/$builtinVersionName/" + packageFqName.asString().replace('.', '-') + ".txt"))
}
}
}
@@ -0,0 +1,23 @@
/*
* 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
class Java6BuiltInsWithJDKMembersTest : AbstractBuiltInsWithJDKMembersTest() {
fun testLoadBuiltIns() {
doTest("java6")
}
}
@@ -48,7 +48,15 @@ class JavaResolverComponents(
val packageMapper: PackagePartProvider, val packageMapper: PackagePartProvider,
val supertypeLoopChecker: SupertypeLoopChecker, val supertypeLoopChecker: SupertypeLoopChecker,
val lookupTracker: LookupTracker val lookupTracker: LookupTracker
) ) {
fun replace(
javaResolverCache: JavaResolverCache = this.javaResolverCache
) = JavaResolverComponents(
storageManager, finder, kotlinClassFinder, deserializedDescriptorResolver,
externalAnnotationResolver, signaturePropagator, errorReporter, javaResolverCache,
javaPropertyInitializerEvaluator, samConversionResolver, sourceElementFactory,
moduleClassResolver, packageMapper, supertypeLoopChecker, lookupTracker)
}
open class LazyJavaResolverContext( open class LazyJavaResolverContext(
val components: JavaResolverComponents, val components: JavaResolverComponents,
@@ -68,6 +76,9 @@ fun LazyJavaResolverContext.child(
typeParameterResolver: TypeParameterResolver typeParameterResolver: TypeParameterResolver
) = LazyJavaResolverContext(components, packageFragmentProvider, javaClassResolver, module, reflectionTypes, typeParameterResolver) ) = LazyJavaResolverContext(components, packageFragmentProvider, javaClassResolver, module, reflectionTypes, typeParameterResolver)
fun LazyJavaResolverContext.replaceComponents(
components: JavaResolverComponents
) = LazyJavaResolverContext(components, packageFragmentProvider, javaClassResolver, module, reflectionTypes, typeParameterResolver)
fun LazyJavaResolverContext.child( fun LazyJavaResolverContext.child(
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,
@@ -23,17 +23,17 @@ import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorBase
import org.jetbrains.kotlin.load.java.FakePureImplementationsProvider import org.jetbrains.kotlin.load.java.FakePureImplementationsProvider
import org.jetbrains.kotlin.load.java.JavaVisibilities import org.jetbrains.kotlin.load.java.JavaVisibilities
import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.java.components.JavaResolverCache
import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.load.java.components.TypeUsage
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.lazy.*
import org.jetbrains.kotlin.load.java.lazy.child
import org.jetbrains.kotlin.load.java.lazy.resolveAnnotations
import org.jetbrains.kotlin.load.java.lazy.types.toAttributes import org.jetbrains.kotlin.load.java.lazy.types.toAttributes
import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaClassifierType import org.jetbrains.kotlin.load.java.structure.JavaClassifierType
import org.jetbrains.kotlin.load.java.structure.JavaType import org.jetbrains.kotlin.load.java.structure.JavaType
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.isValidJavaFqName import org.jetbrains.kotlin.name.isValidJavaFqName
import org.jetbrains.kotlin.platform.createMappedTypeParametersSubstitution
import org.jetbrains.kotlin.resolve.constants.StringValue import org.jetbrains.kotlin.resolve.constants.StringValue
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
@@ -48,7 +48,8 @@ import java.util.*
class LazyJavaClassDescriptor( class LazyJavaClassDescriptor(
private val outerContext: LazyJavaResolverContext, private val outerContext: LazyJavaResolverContext,
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,
private val jClass: JavaClass private val jClass: JavaClass,
private val additionalSupertypeClassDescriptor: ClassDescriptor? = null
) : ClassDescriptorBase(outerContext.storageManager, containingDeclaration, jClass.name, ) : ClassDescriptorBase(outerContext.storageManager, containingDeclaration, jClass.name,
outerContext.components.sourceElementFactory.source(jClass)), JavaClassDescriptor { outerContext.components.sourceElementFactory.source(jClass)), JavaClassDescriptor {
@@ -157,6 +158,14 @@ class LazyJavaClassDescriptor(
} }
} }
// Add fake supertype kotlin.collection.Collection<E> to java.util.Collection<E> class if needed
// Only needed when calculating built-ins member scope
result.addIfNotNull(
additionalSupertypeClassDescriptor?.let {
createMappedTypeParametersSubstitution(it, this@LazyJavaClassDescriptor)
.buildSubstitutor().substitute(it.defaultType, Variance.INVARIANT)
})
result.addIfNotNull(purelyImplementedSupertype) result.addIfNotNull(purelyImplementedSupertype)
if (incomplete.isNotEmpty()) { if (incomplete.isNotEmpty()) {
@@ -213,4 +222,11 @@ class LazyJavaClassDescriptor(
override fun toString(): String = getName().asString() override fun toString(): String = getName().asString()
} }
// Only needed when calculating built-ins member scope
internal fun copy(
javaResolverCache: JavaResolverCache, additionalSupertypeClassDescriptor: ClassDescriptor?
) = LazyJavaClassDescriptor(
c.replaceComponents(c.components.replace(javaResolverCache = javaResolverCache)),
containingDeclaration, jClass, additionalSupertypeClassDescriptor)
} }
@@ -82,7 +82,7 @@ class LazyJavaClassMemberScope(
result.add(descriptor) result.add(descriptor)
result.addIfNotNull(c.components.samConversionResolver.resolveSamAdapter(descriptor)) result.addIfNotNull(c.components.samConversionResolver.resolveSamAdapter(descriptor))
} }
enhanceSignatures( enhanceSignatures(
result.ifEmpty { emptyOrSingletonList(createDefaultConstructor()) } result.ifEmpty { emptyOrSingletonList(createDefaultConstructor()) }
).toReadOnlyList() ).toReadOnlyList()
@@ -346,10 +346,10 @@ class LazyJavaClassMemberScope(
} }
private fun getFunctionsFromSupertypes(name: Name): Set<SimpleFunctionDescriptor> { private fun getFunctionsFromSupertypes(name: Name): Set<SimpleFunctionDescriptor> {
return ownerDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) { return ownerDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) {
it.memberScope.getContributedFunctions(name, NoLookupLocation.WHEN_GET_SUPER_MEMBERS) it.memberScope.getContributedFunctions(name, NoLookupLocation.WHEN_GET_SUPER_MEMBERS)
} }
} }
override fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>) { override fun computeNonDeclaredProperties(name: Name, result: MutableCollection<PropertyDescriptor>) {
if (jClass.isAnnotationType) { if (jClass.isAnnotationType) {
@@ -17,28 +17,42 @@
package org.jetbrains.kotlin.load.kotlin package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.load.java.components.JavaResolverCache
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaClassDescriptor
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaClassMemberScope
import org.jetbrains.kotlin.load.java.lazy.replaceComponents
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.JavaToKotlinClassMap import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
import org.jetbrains.kotlin.platform.JvmBuiltIns import org.jetbrains.kotlin.platform.createMappedTypeParametersSubstitution
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
import org.jetbrains.kotlin.types.DelegatingType import org.jetbrains.kotlin.types.DelegatingType
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.utils.SmartSet
import org.jetbrains.kotlin.utils.addToStdlib.check
import java.io.Serializable import java.io.Serializable
import java.util.*
class BuiltInClassesAreSerializableOnJvm( open class BuiltInClassesAreSerializableOnJvm(
private val moduleDescriptor: ModuleDescriptor private val moduleDescriptor: ModuleDescriptor,
deferredOwnerModuleDescriptor: () -> ModuleDescriptor
) : AdditionalClassPartsProvider { ) : AdditionalClassPartsProvider {
private val ownerModuleDescriptor: ModuleDescriptor by lazy(deferredOwnerModuleDescriptor)
private val mockSerializableType = createMockJavaIoSerializableType() private val mockSerializableType = createMockJavaIoSerializableType()
private fun createMockJavaIoSerializableType(): KotlinType { private fun createMockJavaIoSerializableType(): KotlinType {
@@ -49,7 +63,7 @@ class BuiltInClassesAreSerializableOnJvm(
//NOTE: can't reference anyType right away, because this is sometimes called when JvmBuiltIns are initializing //NOTE: can't reference anyType right away, because this is sometimes called when JvmBuiltIns are initializing
val superTypes = listOf(object : DelegatingType() { val superTypes = listOf(object : DelegatingType() {
override fun getDelegate(): KotlinType { override fun getDelegate(): KotlinType {
return JvmBuiltIns.Instance.anyType return moduleDescriptor.builtIns.anyType
} }
}) })
@@ -68,6 +82,74 @@ class BuiltInClassesAreSerializableOnJvm(
else return listOf() else return listOf()
} }
override fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor> =
getAdditionalFunctions(classDescriptor) {
it.getContributedFunctions(name, NoLookupLocation.FROM_BUILTINS)
}
.map {
additionalMember ->
additionalMember.newCopyBuilder().apply {
setOwner(classDescriptor)
setDispatchReceiverParameter(classDescriptor.thisAsReceiverParameter)
setPreserveSourceElement()
setSubstitution(createMappedTypeParametersSubstitution(
additionalMember.containingDeclaration as ClassDescriptor, classDescriptor))
}.build()!!
}
override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name> =
getAdditionalFunctions(classDescriptor) {
it.getContributedDescriptors(DescriptorKindFilter.FUNCTIONS).filterIsInstance<SimpleFunctionDescriptor>()
}.map(SimpleFunctionDescriptor::getName)
private fun getAdditionalFunctions(
classDescriptor: DeserializedClassDescriptor,
functionsByScope: (MemberScope) -> Collection<SimpleFunctionDescriptor>
): Collection<SimpleFunctionDescriptor> {
// Prevents recursive dependency: memberScope(Any) -> memberScope(Object) -> memberScope(Any)
// No additional members should be added to Any
if (classDescriptor.isAny) return emptyList()
val fqName = classDescriptor.fqNameUnsafe.check { it.isSafe }?.toSafe() ?: return emptyList()
val j2kClassMap = JavaToKotlinClassMap.INSTANCE
val javaAnalogueFqName = j2kClassMap.mapKotlinToJava(fqName.toUnsafe())?.asSingleFqName() ?: return emptyList()
if (javaAnalogueFqName in IGNORE_BY_DEFAULT_CLASS_FQ_NAMES) return emptyList()
val javaAnalogueDescriptor =
ownerModuleDescriptor.resolveClassByFqName(javaAnalogueFqName, NoLookupLocation.FROM_BUILTINS) as? LazyJavaClassDescriptor
?: return emptyList()
val platformClassDescriptors = j2kClassMap.mapPlatformClass(javaAnalogueDescriptor.fqNameSafe, DefaultBuiltIns.Instance)
val kotlinMutableClassIfContainer = platformClassDescriptors.lastOrNull() ?: return emptyList()
val platformVersions = SmartSet.create(platformClassDescriptors.map { it.fqNameSafe })
val isMutable = j2kClassMap.isMutable(classDescriptor)
val fakeJavaClassDescriptor =
javaAnalogueDescriptor.copy(
javaResolverCache = JavaResolverCache.EMPTY,
additionalSupertypeClassDescriptor = kotlinMutableClassIfContainer)
val scope = fakeJavaClassDescriptor.unsubstitutedMemberScope
return functionsByScope(scope)
.filter { analogueMember ->
if (analogueMember.kind != CallableMemberDescriptor.Kind.DECLARATION) return@filter false
if (!analogueMember.visibility.isPublicAPI) return@filter false
val methodFqName = analogueMember.fqNameSafe
if (methodFqName in BLACK_LIST_METHODS_FQ_NAMES) return@filter false
if ((methodFqName in MUTABLE_METHODS_FQ_NAMES) xor isMutable) return@filter false
analogueMember.overriddenDescriptors.none {
it.containingDeclaration.fqNameSafe in platformVersions
}
}
}
companion object { companion object {
fun isSerializableInJava(classFqName: FqName): Boolean { fun isSerializableInJava(classFqName: FqName): Boolean {
val fqNameUnsafe = classFqName.toUnsafe() val fqNameUnsafe = classFqName.toUnsafe()
@@ -84,5 +166,35 @@ class BuiltInClassesAreSerializableOnJvm(
return Serializable::class.java.isAssignableFrom(classViaReflection) return Serializable::class.java.isAssignableFrom(classViaReflection)
} }
private val IGNORE_BY_DEFAULT_CLASS_FQ_NAMES =
setOf(FqName("java.lang.String")) +
JvmPrimitiveType.values().map { it.wrapperFqName }
private val BLACK_LIST_METHODS_FQ_NAMES =
buildPrimitiveValueMethodsSet() +
FqName("java.util.Collection.toArray") +
FqName("java.util.List.toArray") +
FqName("java.util.Set.toArray") +
FqName("java.lang.annotation.Annotation.annotationType")
private val MUTABLE_METHODS_FQ_NAMES =
inClass("java.util.Collection",
"removeIf") +
inClass("java.util.List",
"sort", "replaceAll") +
inClass("java.util.Map",
"compute", "computeIfAbsent", "computeIfPresent", "remove", "merge", "putIfAbsent", "replace", "replaceAll")
private fun buildPrimitiveValueMethodsSet() =
JvmPrimitiveType.values().mapTo(LinkedHashSet()) {
it.wrapperFqName.child(Name.identifier(it.javaKeywordName + "Value"))
}
private fun inClass(classFqName: String, vararg names: String) =
names.mapTo(LinkedHashSet()) { FqName(classFqName).child(Name.identifier(it)) }
} }
} }
private val ClassDescriptor.isAny: Boolean get() = fqNameUnsafe == KotlinBuiltIns.FQ_NAMES.any
@@ -43,7 +43,7 @@ class DeserializationComponentsForJava(
storageManager, moduleDescriptor, classDataFinder, annotationAndConstantLoader, packageFragmentProvider, localClassResolver, storageManager, moduleDescriptor, classDataFinder, annotationAndConstantLoader, packageFragmentProvider, localClassResolver,
errorReporter, lookupTracker, FlexibleJavaClassifierTypeFactory, ClassDescriptorFactory.EMPTY, errorReporter, lookupTracker, FlexibleJavaClassifierTypeFactory, ClassDescriptorFactory.EMPTY,
notFoundClasses, JavaTypeCapabilitiesLoader, notFoundClasses, JavaTypeCapabilitiesLoader,
additionalClassPartsProvider = BuiltInClassesAreSerializableOnJvm(moduleDescriptor) additionalClassPartsProvider = BuiltInClassesAreSerializableOnJvm(moduleDescriptor, { moduleDescriptor })
) )
localClassResolver.setDeserializationComponents(components) localClassResolver.setDeserializationComponents(components)
} }
@@ -16,23 +16,25 @@
package org.jetbrains.kotlin.platform package org.jetbrains.kotlin.platform
import org.jetbrains.kotlin.builtins.BuiltInsInitializer
import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.load.kotlin.BuiltInClassesAreSerializableOnJvm import org.jetbrains.kotlin.load.kotlin.BuiltInClassesAreSerializableOnJvm
import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.utils.sure
class JvmBuiltIns private constructor() : KotlinBuiltIns() { class JvmBuiltIns(storageManager: StorageManager) : KotlinBuiltIns(storageManager) {
companion object { // Module containing JDK classes or having them among dependencies
private val initializer = BuiltInsInitializer { private var ownerModuleDescriptor: ModuleDescriptor? = null
JvmBuiltIns()
}
@JvmStatic fun setOwnerModuleDescriptor(moduleDescriptor: ModuleDescriptor) {
val Instance: KotlinBuiltIns assert(ownerModuleDescriptor == null) { "JvmBuiltins repeated initialization" }
get() = initializer.get() this.ownerModuleDescriptor = moduleDescriptor
} }
override fun getAdditionalClassPartsProvider(): AdditionalClassPartsProvider { override fun getAdditionalClassPartsProvider(): AdditionalClassPartsProvider {
return BuiltInClassesAreSerializableOnJvm(builtInsModule) return BuiltInClassesAreSerializableOnJvm(builtInsModule, {
ownerModuleDescriptor.sure { "JvmBuiltins has not been initialized properly" }
})
} }
} }
@@ -0,0 +1,34 @@
/*
* 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.platform
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.types.TypeConstructorSubstitution
import org.jetbrains.kotlin.types.typeUtil.asTypeProjection
fun createMappedTypeParametersSubstitution(from: ClassDescriptor, to: ClassDescriptor): TypeConstructorSubstitution {
assert(from.declaredTypeParameters.size == to.declaredTypeParameters.size) {
"$from and $to should have same number of type parameters, " +
"but ${from.declaredTypeParameters.size} / ${to.declaredTypeParameters.size} found"
}
return TypeConstructorSubstitution.createByConstructorsMap(
from.declaredTypeParameters.map(TypeParameterDescriptor::getTypeConstructor).zip(
to.declaredTypeParameters.map { it.defaultType.asTypeProjection() }
).toMap())
}
@@ -46,8 +46,8 @@ class RuntimeModuleData private constructor(val deserialization: Deserialization
companion object { companion object {
fun create(classLoader: ClassLoader): RuntimeModuleData { fun create(classLoader: ClassLoader): RuntimeModuleData {
val builtIns = JvmBuiltIns.Instance
val storageManager = LockBasedStorageManager() val storageManager = LockBasedStorageManager()
val builtIns = JvmBuiltIns(storageManager)
val module = ModuleDescriptorImpl(Name.special("<runtime module for $classLoader>"), storageManager, val module = ModuleDescriptorImpl(Name.special("<runtime module for $classLoader>"), storageManager,
ModuleParameters(listOf(), JavaToKotlinClassMap.INSTANCE), builtIns) ModuleParameters(listOf(), JavaToKotlinClassMap.INSTANCE), builtIns)
@@ -64,6 +64,9 @@ class RuntimeModuleData private constructor(val deserialization: Deserialization
val lazyJavaPackageFragmentProvider = val lazyJavaPackageFragmentProvider =
LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module)) LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module))
builtIns.setOwnerModuleDescriptor(module)
val javaDescriptorResolver = JavaDescriptorResolver(lazyJavaPackageFragmentProvider) val javaDescriptorResolver = JavaDescriptorResolver(lazyJavaPackageFragmentProvider)
val javaClassDataFinder = JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver) val javaClassDataFinder = JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver)
val notFoundClasses = NotFoundClasses(storageManager, module) val notFoundClasses = NotFoundClasses(storageManager, module)
@@ -16,7 +16,9 @@
package org.jetbrains.kotlin.builtins package org.jetbrains.kotlin.builtins
class DefaultBuiltIns private constructor() : KotlinBuiltIns() { import org.jetbrains.kotlin.storage.LockBasedStorageManager
class DefaultBuiltIns private constructor() : KotlinBuiltIns(LockBasedStorageManager()) {
companion object { companion object {
private val initializer = BuiltInsInitializer { private val initializer = BuiltInsInitializer {
DefaultBuiltIns() DefaultBuiltIns()
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.scopes.MemberScope; import org.jetbrains.kotlin.resolve.scopes.MemberScope;
import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider; import org.jetbrains.kotlin.serialization.deserialization.AdditionalClassPartsProvider;
import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.storage.StorageManager;
import org.jetbrains.kotlin.types.*; import org.jetbrains.kotlin.types.*;
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker; import org.jetbrains.kotlin.types.checker.KotlinTypeChecker;
@@ -71,12 +71,10 @@ public abstract class KotlinBuiltIns {
private final Map<PrimitiveType, KotlinType> primitiveTypeToArrayKotlinType; private final Map<PrimitiveType, KotlinType> primitiveTypeToArrayKotlinType;
private final Map<KotlinType, KotlinType> primitiveKotlinTypeToKotlinArrayType; private final Map<KotlinType, KotlinType> primitiveKotlinTypeToKotlinArrayType;
private final Map<KotlinType, KotlinType> kotlinArrayTypeToPrimitiveKotlinType; private final Map<KotlinType, KotlinType> kotlinArrayTypeToPrimitiveKotlinType;
private final Map<FqName, PackageFragmentDescriptor> packageNameToPackageFragment;
public static final FqNames FQ_NAMES = new FqNames(); public static final FqNames FQ_NAMES = new FqNames();
protected KotlinBuiltIns() { protected KotlinBuiltIns(@NotNull StorageManager storageManager) {
LockBasedStorageManager storageManager = new LockBasedStorageManager();
builtInsModule = new ModuleDescriptorImpl( builtInsModule = new ModuleDescriptorImpl(
Name.special("<built-ins module>"), storageManager, ModuleParameters.Empty.INSTANCE, this Name.special("<built-ins module>"), storageManager, ModuleParameters.Empty.INSTANCE, this
); );
@@ -96,7 +94,7 @@ public abstract class KotlinBuiltIns {
builtInsModule.initialize(packageFragmentProvider); builtInsModule.initialize(packageFragmentProvider);
builtInsModule.setDependencies(builtInsModule); builtInsModule.setDependencies(builtInsModule);
packageNameToPackageFragment = new LinkedHashMap<FqName, PackageFragmentDescriptor>(); Map<FqName, PackageFragmentDescriptor> packageNameToPackageFragment = new LinkedHashMap<FqName, PackageFragmentDescriptor>();
builtInsPackageFragment = createPackage(packageFragmentProvider, packageNameToPackageFragment, BUILT_INS_PACKAGE_FQ_NAME); builtInsPackageFragment = createPackage(packageFragmentProvider, packageNameToPackageFragment, BUILT_INS_PACKAGE_FQ_NAME);
collectionsPackageFragment = createPackage(packageFragmentProvider, packageNameToPackageFragment, COLLECTIONS_PACKAGE_FQ_NAME); collectionsPackageFragment = createPackage(packageFragmentProvider, packageNameToPackageFragment, COLLECTIONS_PACKAGE_FQ_NAME);
@@ -290,23 +288,7 @@ public abstract class KotlinBuiltIns {
@Nullable @Nullable
public ClassDescriptor getBuiltInClassByFqNameNullable(@NotNull FqName fqName) { public ClassDescriptor getBuiltInClassByFqNameNullable(@NotNull FqName fqName) {
if (!fqName.isRoot()) { return DescriptorUtilKt.resolveClassByFqName(builtInsModule, fqName, NoLookupLocation.FROM_BUILTINS);
FqName parent = fqName.parent();
PackageFragmentDescriptor packageFragment = packageNameToPackageFragment.get(parent);
if (packageFragment != null) {
ClassDescriptor descriptor = getBuiltInClassByNameNullable(fqName.shortName(), packageFragment);
if (descriptor != null) {
return descriptor;
}
}
ClassDescriptor possiblyOuterClass = getBuiltInClassByFqNameNullable(parent);
if (possiblyOuterClass != null) {
return (ClassDescriptor) possiblyOuterClass.getUnsubstitutedInnerClassesScope().getContributedClassifier(
fqName.shortName(), NoLookupLocation.FROM_BUILTINS);
}
}
return null;
} }
@NotNull @NotNull
@@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.KotlinType;
import org.jetbrains.kotlin.types.TypeSubstitution;
import org.jetbrains.kotlin.types.TypeSubstitutor; import org.jetbrains.kotlin.types.TypeSubstitutor;
import java.util.Collection; import java.util.Collection;
@@ -109,6 +110,9 @@ public interface FunctionDescriptor extends CallableMemberDescriptor {
@NotNull @NotNull
CopyBuilder<D> setExtensionReceiverType(@Nullable KotlinType type); CopyBuilder<D> setExtensionReceiverType(@Nullable KotlinType type);
@NotNull
CopyBuilder<D> setDispatchReceiverParameter(@Nullable ReceiverParameterDescriptor dispatchReceiverParameter);
@NotNull @NotNull
CopyBuilder<D> setOriginal(@NotNull FunctionDescriptor original); CopyBuilder<D> setOriginal(@NotNull FunctionDescriptor original);
@@ -124,6 +128,9 @@ public interface FunctionDescriptor extends CallableMemberDescriptor {
@NotNull @NotNull
CopyBuilder<D> setHiddenToOvercomeSignatureClash(); CopyBuilder<D> setHiddenToOvercomeSignatureClash();
@NotNull
CopyBuilder<D> setSubstitution(@NotNull TypeSubstitution substitution);
@Nullable @Nullable
D build(); D build();
} }
@@ -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.descriptors
import org.jetbrains.kotlin.incremental.components.LookupLocation
import org.jetbrains.kotlin.name.FqName
fun ModuleDescriptor.resolveClassByFqName(fqName: FqName, lookupLocation: LookupLocation): ClassDescriptor? {
if (fqName.isRoot) return null
(getPackage(fqName.parent())
.memberScope.getContributedClassifier(fqName.shortName(), lookupLocation) as? ClassDescriptor)?.let { return it }
return resolveClassByFqName(fqName.parent(), lookupLocation)
?.unsubstitutedInnerClassesScope
?.getContributedClassifier(fqName.shortName(), lookupLocation) as? ClassDescriptor
}
@@ -299,6 +299,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
protected @NotNull Kind kind; protected @NotNull Kind kind;
protected @NotNull List<ValueParameterDescriptor> newValueParameterDescriptors; protected @NotNull List<ValueParameterDescriptor> newValueParameterDescriptors;
protected @Nullable KotlinType newExtensionReceiverParameterType; protected @Nullable KotlinType newExtensionReceiverParameterType;
protected @Nullable ReceiverParameterDescriptor dispatchReceiverParameter;
protected @NotNull KotlinType newReturnType; protected @NotNull KotlinType newReturnType;
protected @Nullable Name name; protected @Nullable Name name;
protected boolean copyOverrides = true; protected boolean copyOverrides = true;
@@ -326,6 +327,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
this.kind = kind; this.kind = kind;
this.newValueParameterDescriptors = newValueParameterDescriptors; this.newValueParameterDescriptors = newValueParameterDescriptors;
this.newExtensionReceiverParameterType = newExtensionReceiverParameterType; this.newExtensionReceiverParameterType = newExtensionReceiverParameterType;
this.dispatchReceiverParameter = FunctionDescriptorImpl.this.dispatchReceiverParameter;
this.newReturnType = newReturnType; this.newReturnType = newReturnType;
this.name = name; this.name = name;
this.isHiddenToOvercomeSignatureClash = isHiddenToOvercomeSignatureClash(); this.isHiddenToOvercomeSignatureClash = isHiddenToOvercomeSignatureClash();
@@ -401,6 +403,13 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
return this; return this;
} }
@Override
@NotNull
public CopyConfiguration setDispatchReceiverParameter(@Nullable ReceiverParameterDescriptor dispatchReceiverParameter) {
this.dispatchReceiverParameter = dispatchReceiverParameter;
return this;
}
@Override @Override
@NotNull @NotNull
public CopyConfiguration setOriginal(@NotNull FunctionDescriptor original) { public CopyConfiguration setOriginal(@NotNull FunctionDescriptor original) {
@@ -436,6 +445,13 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
return this; return this;
} }
@NotNull
@Override
public CopyConfiguration setSubstitution(@NotNull TypeSubstitution substitution) {
this.substitution = substitution;
return this;
}
@Override @Override
@Nullable @Nullable
public FunctionDescriptor build() { public FunctionDescriptor build() {
@@ -498,7 +514,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
} }
ReceiverParameterDescriptor substitutedExpectedThis = null; ReceiverParameterDescriptor substitutedExpectedThis = null;
if (dispatchReceiverParameter != null) { if (configuration.dispatchReceiverParameter != null) {
// When generating fake-overridden member it's dispatch receiver parameter has type of Base, and it's correct. // When generating fake-overridden member it's dispatch receiver parameter has type of Base, and it's correct.
// E.g. // E.g.
// class Base { fun foo() } // class Base { fun foo() }
@@ -509,7 +525,7 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorNonRoo
// // but it would if fake-overridden `foo` had `Derived` as it's dispatch receiver parameter type // // but it would if fake-overridden `foo` had `Derived` as it's dispatch receiver parameter type
// x.foo() // x.foo()
// } // }
substitutedExpectedThis = dispatchReceiverParameter.substitute(substitutor); substitutedExpectedThis = configuration.dispatchReceiverParameter.substitute(substitutor);
if (substitutedExpectedThis == null) { if (substitutedExpectedThis == null) {
return null; return null;
} }
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.types.ErrorUtils; import org.jetbrains.kotlin.types.ErrorUtils;
import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.KotlinType;
import org.jetbrains.kotlin.types.TypeSubstitution;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -103,6 +104,12 @@ public class ErrorSimpleFunctionDescriptorImpl extends SimpleFunctionDescriptorI
return this; return this;
} }
@NotNull
@Override
public CopyBuilder<SimpleFunctionDescriptor> setSubstitution(@NotNull TypeSubstitution substitution) {
return this;
}
@NotNull @NotNull
@Override @Override
public CopyBuilder<SimpleFunctionDescriptor> setTypeParameters(@NotNull List<TypeParameterDescriptor> parameters) { public CopyBuilder<SimpleFunctionDescriptor> setTypeParameters(@NotNull List<TypeParameterDescriptor> parameters) {
@@ -121,6 +128,12 @@ public class ErrorSimpleFunctionDescriptorImpl extends SimpleFunctionDescriptorI
return this; return this;
} }
@NotNull
@Override
public CopyBuilder<SimpleFunctionDescriptor> setDispatchReceiverParameter(@Nullable ReceiverParameterDescriptor dispatchReceiverParameter) {
return this;
}
@NotNull @NotNull
@Override @Override
public CopyBuilder<SimpleFunctionDescriptor> setOriginal(@NotNull FunctionDescriptor original) { public CopyBuilder<SimpleFunctionDescriptor> setOriginal(@NotNull FunctionDescriptor original) {
@@ -16,13 +16,19 @@
package org.jetbrains.kotlin.serialization.deserialization package org.jetbrains.kotlin.serialization.deserialization
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
interface AdditionalClassPartsProvider { interface AdditionalClassPartsProvider {
fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType> fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType>
fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor>
fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name>
object None : AdditionalClassPartsProvider { object None : AdditionalClassPartsProvider {
override fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType> = emptyList() override fun getSupertypes(classDescriptor: DeserializedClassDescriptor): Collection<KotlinType> = emptyList()
override fun getFunctions(name: Name, classDescriptor: DeserializedClassDescriptor): Collection<SimpleFunctionDescriptor> = emptyList()
override fun getFunctionsNames(classDescriptor: DeserializedClassDescriptor): Collection<Name> = emptyList()
} }
} }
@@ -199,6 +199,8 @@ class DeserializedClassDescriptor(
for (supertype in classDescriptor.getTypeConstructor().supertypes) { for (supertype in classDescriptor.getTypeConstructor().supertypes) {
fromSupertypes.addAll(supertype.memberScope.getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED)) fromSupertypes.addAll(supertype.memberScope.getContributedFunctions(name, NoLookupLocation.FOR_ALREADY_TRACKED))
} }
functions.addAll(c.components.additionalClassPartsProvider.getFunctions(name, this@DeserializedClassDescriptor))
generateFakeOverrides(name, fromSupertypes, functions) generateFakeOverrides(name, fromSupertypes, functions)
} }
@@ -229,7 +231,7 @@ class DeserializedClassDescriptor(
override fun getNonDeclaredFunctionNames(location: LookupLocation): Set<Name> { override fun getNonDeclaredFunctionNames(location: LookupLocation): Set<Name> {
return classDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) { return classDescriptor.typeConstructor.supertypes.flatMapTo(LinkedHashSet()) {
it.memberScope.getContributedDescriptors().filterIsInstance<SimpleFunctionDescriptor>().map { it.name } it.memberScope.getContributedDescriptors().filterIsInstance<SimpleFunctionDescriptor>().map { it.name }
} } + c.components.additionalClassPartsProvider.getFunctionsNames(this@DeserializedClassDescriptor)
} }
override fun getNonDeclaredVariableNames(location: LookupLocation): Set<Name> { override fun getNonDeclaredVariableNames(location: LookupLocation): Set<Name> {
@@ -33,7 +33,7 @@ class SmartSet<T> private constructor() : AbstractSet<T>() {
fun <T> create() = SmartSet<T>() fun <T> create() = SmartSet<T>()
@JvmStatic @JvmStatic
fun <T> create(set: Set<T>) = SmartSet<T>().apply { this.addAll(set) } fun <T> create(set: Collection<T>) = SmartSet<T>().apply { this.addAll(set) }
} }
// null if size = 0, object if size = 1, array of objects if size < threshold, linked hash set otherwise // null if size = 0, object if size = 1, array of objects if size < threshold, linked hash set otherwise
@@ -362,8 +362,11 @@ fun main(args: Array<String>) {
testClass<AbstractJvm8RuntimeDescriptorLoaderTest>() { testClass<AbstractJvm8RuntimeDescriptorLoaderTest>() {
model("loadJava8/compiledJava", extension = "java", excludeDirs = listOf("sam", "kotlinSignature/propagation")) model("loadJava8/compiledJava", extension = "java", excludeDirs = listOf("sam", "kotlinSignature/propagation"))
} }
}
testClass<AbstractCompileKotlinAgainstKotlinTest>() {
model("compileKotlinAgainstKotlinJava8")
}
}
testGroup("idea/tests", "idea/testData") { testGroup("idea/tests", "idea/testData") {
testClass<AbstractAdditionalResolveDescriptorRendererTest>() { testClass<AbstractAdditionalResolveDescriptorRendererTest>() {
@@ -874,6 +877,10 @@ fun main(args: Array<String>) {
testClass<AbstractJvmBasicCompletionTest>("org.jetbrains.kotlin.idea.completion.test.KDocCompletionTestGenerated") { testClass<AbstractJvmBasicCompletionTest>("org.jetbrains.kotlin.idea.completion.test.KDocCompletionTestGenerated") {
model("kdoc") model("kdoc")
} }
testClass<AbstractJava8BasicCompletionTest>() {
model("basic/java8")
}
} }
//TODO: move these tests into idea-completion module //TODO: move these tests into idea-completion module
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.openapi.roots.ProjectRootModificationTracker
import com.intellij.openapi.util.ModificationTracker import com.intellij.openapi.util.ModificationTracker
import com.intellij.psi.util.CachedValue import com.intellij.psi.util.CachedValue
@@ -44,8 +45,8 @@ import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import org.jetbrains.kotlin.utils.addToStdlib.sumByLong import org.jetbrains.kotlin.utils.addToStdlib.sumByLong
import org.jetbrains.kotlin.utils.keysToMap
internal val LOG = Logger.getInstance(KotlinCacheService::class.java) internal val LOG = Logger.getInstance(KotlinCacheService::class.java)
@@ -56,14 +57,20 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
override fun getSuppressionCache(): KotlinSuppressCache = kotlinSuppressCache.value override fun getSuppressionCache(): KotlinSuppressCache = kotlinSuppressCache.value
private val globalFacadesPerPlatform = listOf(JvmPlatform, JsPlatform).keysToMap { platform -> GlobalFacade(platform) } private val globalFacadesPerPlatformAndSdk: SLRUCache<Pair<TargetPlatform, Sdk?>, GlobalFacade> =
object : SLRUCache<Pair<TargetPlatform, Sdk?>, GlobalFacade>(2 * 3, 2 * 3) {
override fun createValue(key: Pair<TargetPlatform, Sdk?>): GlobalFacade {
return GlobalFacade(key.first, key.second)
}
}
private inner class GlobalFacade(platform: TargetPlatform) { private inner class GlobalFacade(platform: TargetPlatform, sdk: Sdk?) {
val facadeForLibraries = ProjectResolutionFacade(project) { val facadeForLibraries = ProjectResolutionFacade(project) {
globalResolveSessionProvider( globalResolveSessionProvider(
"project libraries for platform $platform", "project libraries for platform $platform",
project, project,
platform, platform,
sdk,
logProcessCanceled = true, logProcessCanceled = true,
moduleFilter = { it.isLibraryClasses() }, moduleFilter = { it.isLibraryClasses() },
dependencies = listOf( dependencies = listOf(
@@ -78,6 +85,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
"project source roots and libraries for platform $platform", "project source roots and libraries for platform $platform",
project, project,
platform, platform,
sdk,
reuseDataFrom = facadeForLibraries, reuseDataFrom = facadeForLibraries,
moduleFilter = { !it.isLibraryClasses() }, moduleFilter = { !it.isLibraryClasses() },
dependencies = listOf(PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)) dependencies = listOf(PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT))
@@ -86,17 +94,24 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
@Deprecated("Use JetElement.getResolutionFacade(), please avoid introducing new usages") @Deprecated("Use JetElement.getResolutionFacade(), please avoid introducing new usages")
fun <T : Any> getProjectService(platform: TargetPlatform, ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T { fun <T : Any> getProjectService(platform: TargetPlatform, ideaModuleInfo: IdeaModuleInfo, serviceClass: Class<T>): T {
return globalFacade(platform).resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass) return globalFacade(platform, ideaModuleInfo.sdk).resolverForModuleInfo(ideaModuleInfo).componentProvider.getService(serviceClass)
} }
private fun globalFacade(platform: TargetPlatform) = globalFacadesPerPlatform[platform]!!.facadeForModules private fun globalFacade(platform: TargetPlatform, sdk: Sdk?) =
getOrBuildGlobalFacade(platform, sdk).facadeForModules
private fun librariesFacade(platform: TargetPlatform) = globalFacadesPerPlatform[platform]!!.facadeForLibraries private fun librariesFacade(platform: TargetPlatform, sdk: Sdk?) = getOrBuildGlobalFacade(platform, sdk).facadeForLibraries
@Synchronized
private fun getOrBuildGlobalFacade(platform: TargetPlatform, sdk: Sdk?) = globalFacadesPerPlatformAndSdk[Pair(platform, sdk)]
private val IdeaModuleInfo.sdk: Sdk? get() = dependencies().firstIsInstanceOrNull<SdkInfo>()?.sdk
private fun createFacadeForSyntheticFiles(files: Set<KtFile>): ProjectResolutionFacade { private fun createFacadeForSyntheticFiles(files: Set<KtFile>): ProjectResolutionFacade {
// we assume that all files come from the same module // we assume that all files come from the same module
val targetPlatform = files.map { TargetPlatformDetector.getPlatform(it) }.toSet().single() val targetPlatform = files.map { TargetPlatformDetector.getPlatform(it) }.toSet().single()
val syntheticFileModule = files.map { it.getModuleInfo() }.toSet().single() val syntheticFileModule = files.map { it.getModuleInfo() }.toSet().single()
val sdk = syntheticFileModule.sdk
val filesModificationTracker = ModificationTracker { val filesModificationTracker = ModificationTracker {
files.sumByLong { it.outOfBlockModificationCount } files.sumByLong { it.outOfBlockModificationCount }
} }
@@ -110,8 +125,9 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
debugName, debugName,
project, project,
targetPlatform, targetPlatform,
sdk,
syntheticFiles = files, syntheticFiles = files,
reuseDataFrom = globalFacade(targetPlatform), reuseDataFrom = globalFacade(targetPlatform, sdk),
moduleFilter = { it in dependentModules }, moduleFilter = { it in dependentModules },
dependencies = dependenciesForSyntheticFileCache dependencies = dependenciesForSyntheticFileCache
) )
@@ -124,8 +140,9 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
debugName, debugName,
project, project,
targetPlatform, targetPlatform,
sdk,
syntheticFiles = files, syntheticFiles = files,
reuseDataFrom = librariesFacade(targetPlatform), reuseDataFrom = librariesFacade(targetPlatform, sdk),
moduleFilter = { it == syntheticFileModule }, moduleFilter = { it == syntheticFileModule },
dependencies = dependenciesForSyntheticFileCache dependencies = dependenciesForSyntheticFileCache
) )
@@ -142,6 +159,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
debugName, debugName,
project, project,
targetPlatform, targetPlatform,
sdk,
syntheticFiles = files, syntheticFiles = files,
moduleFilter = { true }, moduleFilter = { true },
dependencies = dependenciesForSyntheticFileCache dependencies = dependenciesForSyntheticFileCache
@@ -201,13 +219,14 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private fun getFacadeToAnalyzeFiles(files: Collection<KtFile>): ResolutionFacade { private fun getFacadeToAnalyzeFiles(files: Collection<KtFile>): ResolutionFacade {
val syntheticFiles = findSyntheticFiles(files) val syntheticFiles = findSyntheticFiles(files)
val file = files.first() val file = files.first()
val moduleInfo = file.getModuleInfo()
val projectFacade = if (syntheticFiles.isNotEmpty()) { val projectFacade = if (syntheticFiles.isNotEmpty()) {
getFacadeForSyntheticFiles(syntheticFiles) getFacadeForSyntheticFiles(syntheticFiles)
} }
else { else {
globalFacade(TargetPlatformDetector.getPlatform(file)) globalFacade(TargetPlatformDetector.getPlatform(file), moduleInfo.sdk)
} }
return ResolutionFacadeImpl(projectFacade, file.getModuleInfo()) return ResolutionFacadeImpl(projectFacade, moduleInfo)
} }
private fun findSyntheticFiles(files: Collection<KtFile>) = files.mapNotNull { private fun findSyntheticFiles(files: Collection<KtFile>) = files.mapNotNull {
@@ -228,6 +247,7 @@ private fun globalResolveSessionProvider(
debugName: String, debugName: String,
project: Project, project: Project,
platform: TargetPlatform, platform: TargetPlatform,
sdk: Sdk?,
dependencies: Collection<Any>, dependencies: Collection<Any>,
moduleFilter: (IdeaModuleInfo) -> Boolean, moduleFilter: (IdeaModuleInfo) -> Boolean,
reuseDataFrom: ProjectResolutionFacade? = null, reuseDataFrom: ProjectResolutionFacade? = null,
@@ -242,16 +262,24 @@ private fun globalResolveSessionProvider(
val builtIns: KotlinBuiltIns = when (platform) { val builtIns: KotlinBuiltIns = when (platform) {
is JsPlatform -> JsPlatform.builtIns is JsPlatform -> JsPlatform.builtIns
is JvmPlatform -> JvmBuiltIns.Instance is JvmPlatform -> JvmBuiltIns(globalContext.storageManager)
else -> DefaultBuiltIns.Instance else -> DefaultBuiltIns.Instance
} }
val moduleResolverProvider = createModuleResolverProvider( val moduleResolverProvider = createModuleResolverProvider(
debugName, project, globalContext, debugName, project, globalContext, sdk,
AnalyzerFacadeProvider.getAnalyzerFacade(platform), AnalyzerFacadeProvider.getAnalyzerFacade(platform),
syntheticFiles, delegateResolverForProject, moduleFilter, syntheticFiles, delegateResolverForProject, moduleFilter,
builtIns builtIns
) )
if (builtIns is JvmBuiltIns) {
val moduleInfoToUse = sdk?.let { SdkInfo(project, it) } ?: moduleResolverProvider.resolverForProject.allModules.firstOrNull()
if (moduleInfoToUse != null) {
builtIns.setOwnerModuleDescriptor(moduleResolverProvider.resolverForProject.descriptorForModule(moduleInfoToUse))
}
}
val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker) val allDependencies = dependencies + listOf(moduleResolverProvider.exceptionTracker)
return CachedValueProvider.Result.create(moduleResolverProvider, allDependencies) return CachedValueProvider.Result.create(moduleResolverProvider, allDependencies)
} }
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.module.ModuleManager
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.roots.JdkOrderEntry import com.intellij.openapi.roots.JdkOrderEntry
import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.LibraryOrderEntry
import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ModuleRootManager
@@ -38,6 +39,7 @@ fun createModuleResolverProvider(
debugName: String, debugName: String,
project: Project, project: Project,
globalContext: GlobalContextImpl, globalContext: GlobalContextImpl,
sdk: Sdk?,
analyzerFacade: AnalyzerFacade<JvmPlatformParameters>, analyzerFacade: AnalyzerFacade<JvmPlatformParameters>,
syntheticFiles: Collection<KtFile>, syntheticFiles: Collection<KtFile>,
delegateResolver: ResolverForProject<IdeaModuleInfo>, delegateResolver: ResolverForProject<IdeaModuleInfo>,
@@ -67,7 +69,8 @@ fun createModuleResolverProvider(
val resolverForProject = analyzerFacade.setupResolverForProject( val resolverForProject = analyzerFacade.setupResolverForProject(
debugName, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent, debugName, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent,
jvmPlatformParameters, IdeaEnvironment, builtIns, jvmPlatformParameters, IdeaEnvironment, builtIns,
delegateResolver, { m, c -> IDEPackagePartProvider(c.moduleContentScope) } delegateResolver, { m, c -> IDEPackagePartProvider(c.moduleContentScope) },
sdk?.let { SdkInfo(project, it) }
) )
return resolverForProject return resolverForProject
} }
@@ -0,0 +1,7 @@
fun foo(x: MutableList<String>) {
x.<caret>
}
// EXIST: {"lookupString":"stream","tailText":"()","typeText":"Stream<String!>!"}
// EXIST: {"lookupString":"removeIf","tailText":"(Predicate<in String!>!)","typeText":"Boolean"}
// EXIST: {"lookupString":"removeIf","tailText":" {...} (((String!) -> Boolean)!)","typeText":"Boolean"}
@@ -0,0 +1,7 @@
fun foo(x: List<String>) {
x.stream().<caret>
}
// EXIST: {"lookupString":"allMatch","tailText":" {...} (((String!) -> Boolean)!)","typeText":"Boolean","attributes":"bold"}
// EXIST: {"lookupString":"allMatch","tailText":"(Predicate<in String!>!)","typeText":"Boolean","attributes":"bold"}
// EXIST: {"lookupString":"count","tailText":"()","typeText":"Long","attributes":"bold"}
@@ -0,0 +1,29 @@
/*
* 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.idea.completion.test;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
public abstract class AbstractJava8BasicCompletionTest extends AbstractJvmBasicCompletionTest {
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK;
}
}
@@ -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.idea.completion.test;
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("idea/idea-completion/testData/basic/java8")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class Java8BasicCompletionTestGenerated extends AbstractJava8BasicCompletionTest {
public void testAllFilesPresentInJava8() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/java8"), Pattern.compile("^(.+)\\.kt$"), true);
}
@TestMetadata("CollectionMethods.kt")
public void testCollectionMethods() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/java8/CollectionMethods.kt");
doTest(fileName);
}
@TestMetadata("StreamMethods.kt")
public void testStreamMethods() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/java8/StreamMethods.kt");
doTest(fileName);
}
}
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.test; package org.jetbrains.kotlin.idea.test;
import com.intellij.openapi.projectRoots.Sdk;
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime;
public class KotlinWithJdkAndRuntimeLightProjectDescriptor extends KotlinJdkAndLibraryProjectDescriptor { public class KotlinWithJdkAndRuntimeLightProjectDescriptor extends KotlinJdkAndLibraryProjectDescriptor {
@@ -24,4 +25,10 @@ public class KotlinWithJdkAndRuntimeLightProjectDescriptor extends KotlinJdkAndL
} }
public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE = new KotlinWithJdkAndRuntimeLightProjectDescriptor(); public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE = new KotlinWithJdkAndRuntimeLightProjectDescriptor();
public static final KotlinWithJdkAndRuntimeLightProjectDescriptor INSTANCE_FULL_JDK = new KotlinWithJdkAndRuntimeLightProjectDescriptor() {
@Override
public Sdk getSdk() {
return PluginTestCaseBase.fullJdk();
}
};
} }
@@ -0,0 +1,3 @@
abstract class A : List<String> {
<caret>
}
@@ -0,0 +1,7 @@
import java.util.stream.Stream
abstract class A : List<String> {
override fun stream(): Stream<String>? {
<selection><caret>return super.stream()</selection>
}
}
@@ -0,0 +1,13 @@
package foo
fun mainJdk8(x: List<String>, j6List: Jdk6List<String>) {
x.stream().filter { it.length > 0 }
j6List.size
// TODO: stream should be available
j6List.stream()
buildList().stream()
myFile().toPath()
}
@@ -0,0 +1,54 @@
package foo
import java.io.File
class Jdk6List<F> : List<F> {
override val size: Int
get() = null!!
override fun contains(element: F): Boolean {
null!!
}
override fun containsAll(elements: Collection<F>): Boolean {
null!!
}
override fun get(index: Int): F {
null!!
}
override fun indexOf(element: F): Int {
null!!
}
override fun isEmpty(): Boolean {
null!!
}
override fun iterator(): Iterator<F> {
null!!
}
override fun lastIndexOf(element: F): Int {
null!!
}
override fun listIterator(): ListIterator<F> {
null!!
}
override fun listIterator(index: Int): ListIterator<F> {
null!!
}
override fun subList(fromIndex: Int, toIndex: Int): List<F> {
null!!
}
}
fun buildList(): List<String> = null!!
fun myFile(): File = null!!
fun mainJdk6(x: List<String>) {
x.<error descr="[UNRESOLVED_REFERENCE] Unresolved reference: stream">stream</error>().filter { <error descr="[UNRESOLVED_REFERENCE] Unresolved reference: it">it</error>.length > 0 }
}
@@ -0,0 +1,81 @@
/*
* 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.idea.caches.resolve
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import com.intellij.openapi.module.StdModuleTypes
import com.intellij.openapi.roots.ModuleRootModificationUtil
import org.jetbrains.kotlin.idea.project.PluginJetFilesProvider
import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase
import com.intellij.openapi.module.Module
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.testFramework.PsiTestUtil
import java.io.File
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.roots.DependencyScope
import com.intellij.testFramework.IdeaTestUtil
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
import org.junit.Assert
abstract class AbstractMultiModuleHighlightingTest : DaemonAnalyzerTestCase() {
private val TEST_DATA_PATH = PluginTestCaseBase.getTestDataPathBase() + "/multiModuleHighlighting/"
protected fun checkHighlightingInAllFiles() {
var atLeastOneFile = false
PluginJetFilesProvider.allFilesInProject(myProject!!).forEach { file ->
atLeastOneFile = true
configureByExistingFile(file.virtualFile!!)
checkHighlighting(myEditor, true, false)
}
Assert.assertTrue(atLeastOneFile)
}
protected fun module(name: String, hasTestRoot: Boolean = false, useFullJdk: Boolean = false): Module {
val srcDir = TEST_DATA_PATH + "${getTestName(true)}/$name"
val moduleWithSrcRootSet = createModuleFromTestData(srcDir, "$name", StdModuleTypes.JAVA, true)!!
if (hasTestRoot) {
setTestRoot(moduleWithSrcRootSet, name)
}
val jdkToUse = if (useFullJdk) PluginTestCaseBase.fullJdk() else PluginTestCaseBase.mockJdk()
ConfigLibraryUtil.configureSdk(moduleWithSrcRootSet, jdkToUse)
return moduleWithSrcRootSet
}
protected fun setTestRoot(module: Module, name: String) {
val testDir = TEST_DATA_PATH + "${getTestName(true)}/${name}Test"
val testRootDirInTestData = File(testDir)
val testRootDir = createTempDirectory()!!
FileUtil.copyDir(testRootDirInTestData, testRootDir)
val testRoot = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(testRootDir)!!
object : WriteCommandAction.Simple<Unit>(project) {
override fun run() {
testRoot.refresh(false, true)
}
}.execute().throwException()
PsiTestUtil.addSourceRoot(module, testRoot, true)
}
protected fun Module.addDependency(
other: Module,
dependencyScope: DependencyScope = DependencyScope.COMPILE,
exported: Boolean = false
) = ModuleRootModificationUtil.addDependency(this, other, dependencyScope, exported)
}
@@ -0,0 +1,28 @@
/*
* 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.idea.caches.resolve
class Java8MultiModuleHighlightingTest : AbstractMultiModuleHighlightingTest() {
fun testDifferentJdk() {
val module1 = module("jdk8", useFullJdk = true)
val module2 = module("mockJdk")
module1.addDependency(module2)
checkHighlightingInAllFiles()
}
}
@@ -16,24 +16,9 @@
package org.jetbrains.kotlin.idea.caches.resolve package org.jetbrains.kotlin.idea.caches.resolve
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import com.intellij.openapi.module.StdModuleTypes
import com.intellij.openapi.roots.ModuleRootModificationUtil
import org.jetbrains.kotlin.idea.project.PluginJetFilesProvider
import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase
import com.intellij.openapi.module.Module
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.testFramework.PsiTestUtil
import java.io.File
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.roots.DependencyScope import com.intellij.openapi.roots.DependencyScope
import org.junit.Assert
class MultiModuleHighlightingTest : DaemonAnalyzerTestCase() {
private val TEST_DATA_PATH = PluginTestCaseBase.getTestDataPathBase() + "/multiModuleHighlighting/"
class MultiModuleHighlightingTest : AbstractMultiModuleHighlightingTest() {
fun testVisibility() { fun testVisibility() {
val module1 = module("m1") val module1 = module("m1")
val module2 = module("m2") val module2 = module("m2")
@@ -73,43 +58,4 @@ class MultiModuleHighlightingTest : DaemonAnalyzerTestCase() {
checkHighlightingInAllFiles() checkHighlightingInAllFiles()
} }
private fun checkHighlightingInAllFiles() {
var atLeastOneFile = false
PluginJetFilesProvider.allFilesInProject(myProject!!).forEach { file ->
atLeastOneFile = true
configureByExistingFile(file.virtualFile!!)
checkHighlighting(myEditor, true, false)
}
Assert.assertTrue(atLeastOneFile)
}
private fun module(name: String, hasTestRoot: Boolean = false): Module {
val srcDir = TEST_DATA_PATH + "${getTestName(true)}/$name"
val moduleWithSrcRootSet = createModuleFromTestData(srcDir, "$name", StdModuleTypes.JAVA, true)!!
if (hasTestRoot) {
setTestRoot(moduleWithSrcRootSet, name)
}
return moduleWithSrcRootSet
}
private fun setTestRoot(module: Module, name: String) {
val testDir = TEST_DATA_PATH + "${getTestName(true)}/${name}Test"
val testRootDirInTestData = File(testDir)
val testRootDir = createTempDirectory()!!
FileUtil.copyDir(testRootDirInTestData, testRootDir)
val testRoot = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(testRootDir)!!
object : WriteCommandAction.Simple<Unit>(project) {
override fun run() {
testRoot.refresh(false, true)
}
}.execute().throwException()
PsiTestUtil.addSourceRoot(module, testRoot, true)
}
private fun Module.addDependency(
other: Module,
dependencyScope: DependencyScope = DependencyScope.COMPILE,
exported: Boolean = false
) = ModuleRootModificationUtil.addDependency(this, other, dependencyScope, exported)
} }
@@ -0,0 +1,37 @@
/*
* 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.idea.codeInsight
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
class Java8OverrideImplementTest : AbstractOverrideImplementTest() {
companion object {
private val TEST_PATH = PluginTestCaseBase.getTestDataPathBase() + "/codeInsight/overrideImplement/jdk8"
}
override fun setUp() {
super.setUp()
myFixture.testDataPath = TEST_PATH
}
override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
fun testOverrideCollectionStream() {
doOverrideFileTest("stream")
}
}
@@ -48,7 +48,7 @@ public final class TopDownAnalyzerFacadeForJS {
BindingTrace trace = new BindingTraceContext(); BindingTrace trace = new BindingTraceContext();
MutableModuleContext newModuleContext = ContextKt.ContextForNewModule( MutableModuleContext newModuleContext = ContextKt.ContextForNewModule(
config.getProject(), Name.special("<" + config.getModuleId() + ">"), JsPlatform.INSTANCE, ContextKt.ProjectContext(config.getProject()), Name.special("<" + config.getModuleId() + ">"), JsPlatform.INSTANCE,
JsPlatform.INSTANCE.getBuiltIns() JsPlatform.INSTANCE.getBuiltIns()
); );
newModuleContext.setDependencies(computeDependencies(newModuleContext.getModule(), config)); newModuleContext.setDependencies(computeDependencies(newModuleContext.getModule(), config));