FIR: Support deserialization for built-in classes content

This commit is contained in:
Denis Zharkov
2019-03-25 17:24:07 +03:00
parent f03c5e0583
commit aec5ec89e7
10 changed files with 1398 additions and 16 deletions
@@ -11,7 +11,10 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.java.declarations.*
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
import org.jetbrains.kotlin.fir.java.declarations.FirJavaConstructor
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
import org.jetbrains.kotlin.fir.resolve.AbstractFirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.constructType
import org.jetbrains.kotlin.fir.symbols.CallableId
@@ -22,6 +25,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.load.java.JavaClassFinder
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -66,7 +70,7 @@ class JavaSymbolProvider(
override fun getClassLikeSymbolByFqName(classId: ClassId): ConeClassLikeSymbol? {
return classCache.lookupCacheOrCalculateWithPostCompute(classId, {
val foundClass = findClass(classId)
if (foundClass == null) {
if (foundClass == null || foundClass.annotations.any { it.classId?.asSingleFqName() == JvmAnnotationNames.METADATA_FQ_NAME }) {
null to null
} else {
FirClassSymbol(classId) to foundClass
@@ -28,6 +28,10 @@ interface FirSymbolProvider {
fun getCallableSymbols(callableId: CallableId): List<ConeCallableSymbol>
fun getAllCallableNamesInPackage(fqName: FqName): Set<Name> = emptySet()
fun getClassNamesInPackage(fqName: FqName): Set<Name> = emptySet()
fun getAllCallableNamesInClass(classId: ClassId): Set<Name> = emptySet()
fun getNestedClassesNamesInClass(classId: ClassId): Set<Name> = emptySet()
fun getPackage(fqName: FqName): FqName? // TODO: Replace to symbol sometime
@@ -30,4 +30,16 @@ class FirCompositeSymbolProvider(val providers: List<FirSymbolProvider>) : FirSy
override fun getAllCallableNamesInPackage(fqName: FqName): Set<Name> {
return providers.flatMapTo(mutableSetOf()) { it.getAllCallableNamesInPackage(fqName) }
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return providers.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
}
override fun getAllCallableNamesInClass(classId: ClassId): Set<Name> {
return providers.flatMapTo(mutableSetOf()) { it.getAllCallableNamesInClass(classId) }
}
override fun getNestedClassesNamesInClass(classId: ClassId): Set<Name> {
return providers.flatMapTo(mutableSetOf()) { it.getNestedClassesNamesInClass(classId) }
}
}
@@ -56,4 +56,16 @@ class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSy
override fun getAllCallableNamesInPackage(fqName: FqName): Set<Name> {
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getAllCallableNamesInPackage(fqName) }
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getClassNamesInPackage(fqName) }
}
override fun getAllCallableNamesInClass(classId: ClassId): Set<Name> {
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getAllCallableNamesInClass(classId) }
}
override fun getNestedClassesNamesInClass(classId: ClassId): Set<Name> {
return dependencyProviders.flatMapTo(mutableSetOf()) { it.getNestedClassesNamesInClass(classId) }
}
}
@@ -12,6 +12,9 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.impl.FirClassImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirTypeParameterImpl
import org.jetbrains.kotlin.fir.deserialization.FirDeserializationComponents
@@ -19,10 +22,7 @@ import org.jetbrains.kotlin.fir.deserialization.FirDeserializationContext
import org.jetbrains.kotlin.fir.deserialization.FirTypeDeserializer
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.getOrPut
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassSymbol
import org.jetbrains.kotlin.fir.symbols.*
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
@@ -90,7 +90,6 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
}
fun getClassLikeSymbolByFqName(classId: ClassId): ConeClassLikeSymbol? {
if (classId !in classDataFinder.allClassIds) return null
return lookup.getOrPut(classId, { FirClassSymbol(classId) }) { symbol ->
val classData = classDataFinder.findClassData(classId)!!
@@ -130,7 +129,26 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
if (it == null) return@mapNotNullTo null
FirResolvedTypeRefImpl(this@BuiltInsPackageFragment.session, null, it, false, emptyList())
}
// TODO: declarations (probably should be done later)
val classTypeTable = TypeTable(classProto.typeTable)
val classDeserializer = FirDeserializationContext(
nameResolver, classTypeTable,
VersionRequirementTable.EMPTY, // TODO:
this@BuiltInsPackageFragment.session,
fqName,
null,
FirTypeDeserializer(
nameResolver,
classTypeTable,
classProto.typeParameterList,
null
),
FirDeserializationComponents()
).memberDeserializer
// TODO: properties + nested classes
declarations += classData.classProto.functionList.map(classDeserializer::loadFunction)
}
}
}
@@ -144,6 +162,10 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
fun getAllCallableNames(): Set<Name> {
return packageProto.`package`.functionList.mapTo(mutableSetOf()) { nameResolver.getName(it.name) }
}
fun getAllClassNames(): Set<Name> {
return classDataFinder.allClassIds.mapTo(mutableSetOf()) { it.shortClassName }
}
}
override fun getPackage(fqName: FqName): FqName? {
@@ -199,8 +221,9 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
override fun getCallableSymbols(callableId: CallableId): List<ConeCallableSymbol> {
if (callableId.classId != null) {
// TODO: Support classes
return emptyList()
return getClassDeclarations(callableId.classId!!).filterIsInstance<FirCallableMemberDeclaration>()
.filter { it.name == callableId.callableName }
.map { it.symbol }
}
return allPackageFragments[callableId.packageName]?.flatMap {
@@ -213,4 +236,24 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
it.getAllCallableNames()
} ?: emptySet()
}
override fun getClassNamesInPackage(fqName: FqName): Set<Name> {
return allPackageFragments[fqName]?.flatMapTo(mutableSetOf()) {
it.getAllClassNames()
} ?: emptySet()
}
override fun getAllCallableNamesInClass(classId: ClassId): Set<Name> {
return getClassDeclarations(classId).filterIsInstance<FirCallableMemberDeclaration>().mapTo(mutableSetOf()) { it.name }
}
private fun getClassDeclarations(classId: ClassId): List<FirDeclaration> {
@Suppress("UNCHECKED_CAST")
val classSymbol = getClassLikeSymbolByFqName(classId) as? FirBasedSymbol<FirRegularClass> ?: return emptyList()
return classSymbol.fir.declarations
}
override fun getNestedClassesNamesInClass(classId: ClassId): Set<Name> {
return getClassDeclarations(classId).filterIsInstance<FirRegularClass>().mapTo(mutableSetOf()) { it.name }
}
}
@@ -1 +1,240 @@
public abstract class BooleanIterator : R|kotlin/collections/Iterator<kotlin/Boolean>| {
public final operator fun next(): R|kotlin/Boolean|
public abstract fun nextBoolean(): R|kotlin/Boolean|
}
public abstract class ByteIterator : R|kotlin/collections/Iterator<kotlin/Byte>| {
public final operator fun next(): R|kotlin/Byte|
public abstract fun nextByte(): R|kotlin/Byte|
}
public abstract class CharIterator : R|kotlin/collections/Iterator<kotlin/Char>| {
public final operator fun next(): R|kotlin/Char|
public abstract fun nextChar(): R|kotlin/Char|
}
<E> public abstract interface Collection : R|kotlin/collections/Iterable<E>| {
public abstract operator fun contains(element: R|E|): R|kotlin/Boolean|
public abstract fun containsAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun isEmpty(): R|kotlin/Boolean|
public abstract operator fun iterator(): R|kotlin/collections/Iterator<E>|
}
public abstract class DoubleIterator : R|kotlin/collections/Iterator<kotlin/Double>| {
public final operator fun next(): R|kotlin/Double|
public abstract fun nextDouble(): R|kotlin/Double|
}
public abstract class FloatIterator : R|kotlin/collections/Iterator<kotlin/Float>| {
public final operator fun next(): R|kotlin/Float|
public abstract fun nextFloat(): R|kotlin/Float|
}
public abstract class IntIterator : R|kotlin/collections/Iterator<kotlin/Int>| {
public final operator fun next(): R|kotlin/Int|
public abstract fun nextInt(): R|kotlin/Int|
}
<T> public abstract interface Iterable : R|kotlin/Any| {
public abstract operator fun iterator(): R|kotlin/collections/Iterator<T>|
}
<T> public abstract interface Iterator : R|kotlin/Any| {
public abstract operator fun hasNext(): R|kotlin/Boolean|
public abstract operator fun next(): R|T|
}
<E> public abstract interface List : R|kotlin/collections/Collection<E>| {
public abstract operator fun contains(element: R|E|): R|kotlin/Boolean|
public abstract fun containsAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract operator fun get(index: R|kotlin/Int|): R|E|
public abstract fun indexOf(element: R|E|): R|kotlin/Int|
public abstract fun isEmpty(): R|kotlin/Boolean|
public abstract operator fun iterator(): R|kotlin/collections/Iterator<E>|
public abstract fun lastIndexOf(element: R|E|): R|kotlin/Int|
public abstract fun listIterator(): R|kotlin/collections/ListIterator<E>|
public abstract fun listIterator(index: R|kotlin/Int|): R|kotlin/collections/ListIterator<E>|
public abstract fun subList(fromIndex: R|kotlin/Int|, toIndex: R|kotlin/Int|): R|kotlin/collections/List<E>|
}
<T> public abstract interface ListIterator : R|kotlin/collections/Iterator<T>| {
public abstract operator fun hasNext(): R|kotlin/Boolean|
public abstract fun hasPrevious(): R|kotlin/Boolean|
public abstract operator fun next(): R|T|
public abstract fun nextIndex(): R|kotlin/Int|
public abstract fun previous(): R|T|
public abstract fun previousIndex(): R|kotlin/Int|
}
public abstract class LongIterator : R|kotlin/collections/Iterator<kotlin/Long>| {
public final operator fun next(): R|kotlin/Long|
public abstract fun nextLong(): R|kotlin/Long|
}
<K, V> public abstract interface Map : R|kotlin/Any| {
public abstract fun containsKey(key: R|K|): R|kotlin/Boolean|
public abstract fun containsValue(value: R|V|): R|kotlin/Boolean|
public abstract operator fun get(key: R|K|): R|V|
public open fun getOrDefault(key: R|K|, defaultValue: R|V|): R|V|
public abstract fun isEmpty(): R|kotlin/Boolean|
}
<E> public abstract interface MutableCollection : R|kotlin/collections/Collection<E>|, R|kotlin/collections/MutableIterable<E>| {
public abstract fun add(element: R|E|): R|kotlin/Boolean|
public abstract fun addAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun clear(): R|kotlin/Unit|
public abstract operator fun iterator(): R|kotlin/collections/MutableIterator<E>|
public abstract fun remove(element: R|E|): R|kotlin/Boolean|
public abstract fun removeAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun retainAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
}
<T> public abstract interface MutableIterable : R|kotlin/collections/Iterable<T>| {
public abstract operator fun iterator(): R|kotlin/collections/MutableIterator<T>|
}
<T> public abstract interface MutableIterator : R|kotlin/collections/Iterator<T>| {
public abstract fun remove(): R|kotlin/Unit|
}
<E> public abstract interface MutableList : R|kotlin/collections/List<E>|, R|kotlin/collections/MutableCollection<E>| {
public abstract fun add(element: R|E|): R|kotlin/Boolean|
public abstract fun add(index: R|kotlin/Int|, element: R|E|): R|kotlin/Unit|
public abstract fun addAll(index: R|kotlin/Int|, elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun addAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun clear(): R|kotlin/Unit|
public abstract fun listIterator(): R|kotlin/collections/MutableListIterator<E>|
public abstract fun listIterator(index: R|kotlin/Int|): R|kotlin/collections/MutableListIterator<E>|
public abstract fun remove(element: R|E|): R|kotlin/Boolean|
public abstract fun removeAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun removeAt(index: R|kotlin/Int|): R|E|
public abstract fun retainAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract operator fun set(index: R|kotlin/Int|, element: R|E|): R|E|
public abstract fun subList(fromIndex: R|kotlin/Int|, toIndex: R|kotlin/Int|): R|kotlin/collections/MutableList<E>|
}
<T> public abstract interface MutableListIterator : R|kotlin/collections/ListIterator<T>|, R|kotlin/collections/MutableIterator<T>| {
public abstract fun add(element: R|T|): R|kotlin/Unit|
public abstract operator fun hasNext(): R|kotlin/Boolean|
public abstract operator fun next(): R|T|
public abstract fun remove(): R|kotlin/Unit|
public abstract fun set(element: R|T|): R|kotlin/Unit|
}
<K, V> public abstract interface MutableMap : R|kotlin/collections/Map<K, V>| {
public abstract fun clear(): R|kotlin/Unit|
public abstract fun put(key: R|K|, value: R|V|): R|V|
public abstract fun putAll(from: R|kotlin/collections/Map<out K, V>|): R|kotlin/Unit|
public abstract fun remove(key: R|K|): R|V|
public open fun remove(key: R|K|, value: R|V|): R|kotlin/Boolean|
}
<E> public abstract interface MutableSet : R|kotlin/collections/Set<E>|, R|kotlin/collections/MutableCollection<E>| {
public abstract fun add(element: R|E|): R|kotlin/Boolean|
public abstract fun addAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun clear(): R|kotlin/Unit|
public abstract operator fun iterator(): R|kotlin/collections/MutableIterator<E>|
public abstract fun remove(element: R|E|): R|kotlin/Boolean|
public abstract fun removeAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun retainAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
}
<E> public abstract interface Set : R|kotlin/collections/Collection<E>| {
public abstract operator fun contains(element: R|E|): R|kotlin/Boolean|
public abstract fun containsAll(elements: R|kotlin/collections/Collection<E>|): R|kotlin/Boolean|
public abstract fun isEmpty(): R|kotlin/Boolean|
public abstract operator fun iterator(): R|kotlin/collections/Iterator<E>|
}
public abstract class ShortIterator : R|kotlin/collections/Iterator<kotlin/Short>| {
public final operator fun next(): R|kotlin/Short|
public abstract fun nextShort(): R|kotlin/Short|
}
+105
View File
@@ -1 +1,106 @@
public open class CharProgression : R|kotlin/collections/Iterable<kotlin/Char>| {
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open operator fun iterator(): R|kotlin/collections/CharIterator|
public open fun toString(): R|kotlin/String|
}
internal final class CharProgressionIterator : R|kotlin/collections/CharIterator| {
public open operator fun hasNext(): R|kotlin/Boolean|
public open fun nextChar(): R|kotlin/Char|
}
public final class CharRange : R|kotlin/ranges/CharProgression|, R|kotlin/ranges/ClosedRange<kotlin/Char>| {
public open operator fun contains(value: R|kotlin/Char|): R|kotlin/Boolean|
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open fun toString(): R|kotlin/String|
}
<T> public abstract interface ClosedRange : R|kotlin/Any| {
public open operator fun contains(value: R|T|): R|kotlin/Boolean|
public open fun isEmpty(): R|kotlin/Boolean|
}
public open class IntProgression : R|kotlin/collections/Iterable<kotlin/Int>| {
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open operator fun iterator(): R|kotlin/collections/IntIterator|
public open fun toString(): R|kotlin/String|
}
internal final class IntProgressionIterator : R|kotlin/collections/IntIterator| {
public open operator fun hasNext(): R|kotlin/Boolean|
public open fun nextInt(): R|kotlin/Int|
}
public final class IntRange : R|kotlin/ranges/IntProgression|, R|kotlin/ranges/ClosedRange<kotlin/Int>| {
public open operator fun contains(value: R|kotlin/Int|): R|kotlin/Boolean|
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open fun toString(): R|kotlin/String|
}
public open class LongProgression : R|kotlin/collections/Iterable<kotlin/Long>| {
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open operator fun iterator(): R|kotlin/collections/LongIterator|
public open fun toString(): R|kotlin/String|
}
internal final class LongProgressionIterator : R|kotlin/collections/LongIterator| {
public open operator fun hasNext(): R|kotlin/Boolean|
public open fun nextLong(): R|kotlin/Long|
}
public final class LongRange : R|kotlin/ranges/LongProgression|, R|kotlin/ranges/ClosedRange<kotlin/Long>| {
public open operator fun contains(value: R|kotlin/Long|): R|kotlin/Boolean|
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun isEmpty(): R|kotlin/Boolean|
public open fun toString(): R|kotlin/String|
}
+953
View File
@@ -28,3 +28,956 @@ public final operator fun R|kotlin/String|.plus(other: R|kotlin/Any|): R|kotlin/
public final fun R|kotlin/Any|.toString(): R|kotlin/String|
public abstract interface Annotation : R|kotlin/Any| {
}
public open class Any {
public open operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public open fun hashCode(): R|kotlin/Int|
public open fun toString(): R|kotlin/String|
}
<T> public final class Array : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|T|
public final operator fun iterator(): R|kotlin/collections/Iterator<T>|
public final operator fun set(index: R|kotlin/Int|, value: R|T|): R|kotlin/Unit|
}
public final class Boolean : R|kotlin/Comparable<kotlin/Boolean>| {
public final infix fun and(other: R|kotlin/Boolean|): R|kotlin/Boolean|
public open operator fun compareTo(other: R|kotlin/Boolean|): R|kotlin/Int|
public final operator fun not(): R|kotlin/Boolean|
public final infix fun or(other: R|kotlin/Boolean|): R|kotlin/Boolean|
public final infix fun xor(other: R|kotlin/Boolean|): R|kotlin/Boolean|
}
public final class BooleanArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Boolean|
public final operator fun iterator(): R|kotlin/collections/BooleanIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Boolean|): R|kotlin/Unit|
}
public final class Byte : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Byte>| {
public open operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Byte|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun inc(): R|kotlin/Byte|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun rangeTo(other: R|kotlin/Byte|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Int|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Long|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Int|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Int|
public final operator fun unaryPlus(): R|kotlin/Int|
}
public final class ByteArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Byte|
public final operator fun iterator(): R|kotlin/collections/ByteIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Byte|): R|kotlin/Unit|
}
public final class Char : R|kotlin/Comparable<kotlin/Char>| {
public open operator fun compareTo(other: R|kotlin/Char|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Char|
public final operator fun inc(): R|kotlin/Char|
public final operator fun minus(other: R|kotlin/Char|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Char|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Char|
public final operator fun rangeTo(other: R|kotlin/Char|): R|kotlin/ranges/CharRange|
public final fun toByte(): R|kotlin/Byte|
public final fun toChar(): R|kotlin/Char|
public final fun toDouble(): R|kotlin/Double|
public final fun toFloat(): R|kotlin/Float|
public final fun toInt(): R|kotlin/Int|
public final fun toLong(): R|kotlin/Long|
public final fun toShort(): R|kotlin/Short|
}
public final class CharArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Char|
public final operator fun iterator(): R|kotlin/collections/CharIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Char|): R|kotlin/Unit|
}
public abstract interface CharSequence : R|kotlin/Any| {
public abstract operator fun get(index: R|kotlin/Int|): R|kotlin/Char|
public abstract fun subSequence(startIndex: R|kotlin/Int|, endIndex: R|kotlin/Int|): R|kotlin/CharSequence|
}
public abstract interface Cloneable : R|kotlin/Any| {
protected open fun clone(): R|kotlin/Any|
}
<T> public abstract interface Comparable : R|kotlin/Any| {
public abstract operator fun compareTo(other: R|T|): R|kotlin/Int|
}
public final annotation class Deprecated : R|kotlin/Annotation| {
}
public final enum class DeprecationLevel : R|kotlin/Enum<kotlin/DeprecationLevel>| {
}
public final class Double : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Double>| {
public final operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public open operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Double|
public final operator fun inc(): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Double|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Double|
public final operator fun unaryPlus(): R|kotlin/Double|
}
public final class DoubleArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Double|
public final operator fun iterator(): R|kotlin/collections/DoubleIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Double|): R|kotlin/Unit|
}
public final annotation class DslMarker : R|kotlin/Annotation| {
}
<E> public abstract class Enum : R|kotlin/Comparable<E>| {
protected final fun clone(): R|kotlin/Any|
public final operator fun compareTo(other: R|E|): R|kotlin/Int|
public final operator fun equals(other: R|kotlin/Any|): R|kotlin/Boolean|
public final fun hashCode(): R|kotlin/Int|
public open fun toString(): R|kotlin/String|
}
public final annotation class ExtensionFunctionType : R|kotlin/Annotation| {
}
public final class Float : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Float>| {
public final operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public open operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Float|
public final operator fun inc(): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Float|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Float|
public final operator fun unaryPlus(): R|kotlin/Float|
}
public final class FloatArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Float|
public final operator fun iterator(): R|kotlin/collections/FloatIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Float|): R|kotlin/Unit|
}
<R> public abstract interface Function : R|kotlin/Any| {
}
public final class Int : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Int>| {
public final infix fun and(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public open operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun inc(): R|kotlin/Int|
public final fun inv(): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int|
public final infix fun or(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun rangeTo(other: R|kotlin/Byte|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Int|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Long|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int|
public final infix fun shl(bitCount: R|kotlin/Int|): R|kotlin/Int|
public final infix fun shr(bitCount: R|kotlin/Int|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Int|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Int|
public final operator fun unaryPlus(): R|kotlin/Int|
public final infix fun ushr(bitCount: R|kotlin/Int|): R|kotlin/Int|
public final infix fun xor(other: R|kotlin/Int|): R|kotlin/Int|
}
public final class IntArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Int|
public final operator fun iterator(): R|kotlin/collections/IntIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Int|): R|kotlin/Unit|
}
public final class Long : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Long>| {
public final infix fun and(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public open operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Long|
public final operator fun inc(): R|kotlin/Long|
public final fun inv(): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Long|
public final infix fun or(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Long|
public final operator fun rangeTo(other: R|kotlin/Byte|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Int|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Long|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/LongRange|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Long|
public final infix fun shl(bitCount: R|kotlin/Int|): R|kotlin/Long|
public final infix fun shr(bitCount: R|kotlin/Int|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Long|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Long|
public final operator fun unaryPlus(): R|kotlin/Long|
public final infix fun ushr(bitCount: R|kotlin/Int|): R|kotlin/Long|
public final infix fun xor(other: R|kotlin/Long|): R|kotlin/Long|
}
public final class LongArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Long|
public final operator fun iterator(): R|kotlin/collections/LongIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Long|): R|kotlin/Unit|
}
public final class Nothing {
}
public abstract class Number : R|kotlin/Any| {
public abstract fun toByte(): R|kotlin/Byte|
public abstract fun toChar(): R|kotlin/Char|
public abstract fun toDouble(): R|kotlin/Double|
public abstract fun toFloat(): R|kotlin/Float|
public abstract fun toInt(): R|kotlin/Int|
public abstract fun toLong(): R|kotlin/Long|
public abstract fun toShort(): R|kotlin/Short|
}
public final annotation class ParameterName : R|kotlin/Annotation| {
}
public final annotation class PublishedApi : R|kotlin/Annotation| {
}
public final annotation class ReplaceWith : R|kotlin/Annotation| {
}
public final class Short : R|kotlin/Number|, R|kotlin/Comparable<kotlin/Short>| {
public final operator fun compareTo(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Double|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Float|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun compareTo(other: R|kotlin/Long|): R|kotlin/Int|
public open operator fun compareTo(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun dec(): R|kotlin/Short|
public final operator fun div(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun div(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun div(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun div(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun div(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun inc(): R|kotlin/Short|
public final operator fun minus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun minus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun minus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun minus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun minus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun mod(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun mod(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun mod(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun mod(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun plus(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun plus(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun plus(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun plus(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun rangeTo(other: R|kotlin/Byte|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Int|): R|kotlin/ranges/IntRange|
public final operator fun rangeTo(other: R|kotlin/Long|): R|kotlin/ranges/LongRange|
public final operator fun rangeTo(other: R|kotlin/Short|): R|kotlin/ranges/IntRange|
public final operator fun rem(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun rem(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun rem(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun rem(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun rem(other: R|kotlin/Short|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Byte|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Double|): R|kotlin/Double|
public final operator fun times(other: R|kotlin/Float|): R|kotlin/Float|
public final operator fun times(other: R|kotlin/Int|): R|kotlin/Int|
public final operator fun times(other: R|kotlin/Long|): R|kotlin/Long|
public final operator fun times(other: R|kotlin/Short|): R|kotlin/Int|
public open fun toByte(): R|kotlin/Byte|
public open fun toChar(): R|kotlin/Char|
public open fun toDouble(): R|kotlin/Double|
public open fun toFloat(): R|kotlin/Float|
public open fun toInt(): R|kotlin/Int|
public open fun toLong(): R|kotlin/Long|
public open fun toShort(): R|kotlin/Short|
public final operator fun unaryMinus(): R|kotlin/Int|
public final operator fun unaryPlus(): R|kotlin/Int|
}
public final class ShortArray : R|kotlin/Any| {
public final operator fun get(index: R|kotlin/Int|): R|kotlin/Short|
public final operator fun iterator(): R|kotlin/collections/ShortIterator|
public final operator fun set(index: R|kotlin/Int|, value: R|kotlin/Short|): R|kotlin/Unit|
}
public final annotation class SinceKotlin : R|kotlin/Annotation| {
}
public final class String : R|kotlin/Comparable<kotlin/String>|, R|kotlin/CharSequence| {
public open operator fun compareTo(other: R|kotlin/String|): R|kotlin/Int|
public open operator fun get(index: R|kotlin/Int|): R|kotlin/Char|
public final operator fun plus(other: R|kotlin/Any|): R|kotlin/String|
public open fun subSequence(startIndex: R|kotlin/Int|, endIndex: R|kotlin/Int|): R|kotlin/CharSequence|
}
public final annotation class Suppress : R|kotlin/Annotation| {
}
public open class Throwable : R|kotlin/Any| {
}
public final object Unit : R|kotlin/Any| {
public open fun toString(): R|kotlin/String|
}
public final annotation class UnsafeVariance : R|kotlin/Annotation| {
}
@@ -11,6 +11,8 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -22,31 +24,39 @@ class BuiltInsDeserializationForFirTestCase : AbstractFirResolveWithSessionTestC
return createEnvironmentWithJdk(ConfigurationKind.ALL, TestJdkKind.FULL_JDK)
}
fun testCallables() {
fun testBuiltInPackagesContent() {
for (packageFqName in listOf(
KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME,
KotlinBuiltIns.COLLECTIONS_PACKAGE_FQ_NAME,
KotlinBuiltIns.RANGES_PACKAGE_FQ_NAME
)) {
checkCallablesInPackage(packageFqName)
checkPackageContent(packageFqName)
}
}
private fun checkCallablesInPackage(packageFqName: FqName) {
private fun checkPackageContent(packageFqName: FqName) {
val session = createSession(project, GlobalSearchScope.allScope(project))
val provider = session.getService(FirSymbolProvider::class)
val names = provider.getAllCallableNamesInPackage(packageFqName)
val builder = StringBuilder()
val firRenderer = FirRenderer(builder)
for (name in names) {
for (name in provider.getAllCallableNamesInPackage(packageFqName)) {
for (symbol in provider.getCallableSymbols(CallableId(packageFqName, null, name))) {
(symbol as FirCallableSymbol).fir.accept(firRenderer)
builder.appendln()
}
}
for (name in provider.getClassNamesInPackage(packageFqName)) {
val classLikeSymbol =
provider.getClassLikeSymbolByFqName(ClassId.topLevel(packageFqName.child(name))) as FirClassSymbol?
?: continue
classLikeSymbol.fir.accept(firRenderer)
builder.appendln()
}
KotlinTestUtils.assertEqualsToFile(
File("compiler/fir/resolve/testData/builtIns/" + packageFqName.asString().replace('.', '-') + ".txt"),
builder.toString()
@@ -17,7 +17,7 @@ FILE: common.kt
}
public open fun baz(arg: R|kotlin/CharSequence|): R|kotlin/String| {
^baz R|<local>/arg|.<Unresolved name: toString>#()
^baz R|<local>/arg|.R|kotlin/Any.toString|()
}
}