diff --git a/compiler/testData/codegen/box/reflection/classes/nestedClasses.kt b/compiler/testData/codegen/box/reflection/classes/nestedClasses.kt index 2f1182ca68d..c0e014d9da7 100644 --- a/compiler/testData/codegen/box/reflection/classes/nestedClasses.kt +++ b/compiler/testData/codegen/box/reflection/classes/nestedClasses.kt @@ -48,15 +48,14 @@ fun box(): String { assertEquals(listOf("Entry"), nestedNames(MutableMap::class)) // Primitives - for (primitive in listOf(Byte::class, Double::class, Float::class, Int::class, Long::class, Short::class, Char::class)) { + for (primitive in listOf(Byte::class, Double::class, Float::class, Int::class, Long::class, Short::class, Char::class, Boolean::class)) { assertEquals(listOf("Companion"), nestedNames(primitive)) } - assertEquals(emptyList(), nestedNames(Boolean::class)) // Primitive arrays for (primitiveArray in listOf( - ByteArray::class, DoubleArray::class, FloatArray::class, IntArray::class, - LongArray::class, ShortArray::class, CharArray::class, BooleanArray::class + ByteArray::class, DoubleArray::class, FloatArray::class, IntArray::class, + LongArray::class, ShortArray::class, CharArray::class, BooleanArray::class )) { assertEquals(emptyList(), nestedNames(primitiveArray)) } diff --git a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.java b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.java index 5a89decf711..23f9750016b 100644 --- a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.java +++ b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.java @@ -6,5 +6,6 @@ public interface IntrinsicCompanionObject { void testInt(IntCompanionObject i); void testChar(CharCompanionObject c); void testString(StringCompanionObject s); + void testBoolean(BooleanCompanionObject b); void testEnum(EnumCompanionObject e); } diff --git a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.txt b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.txt index a73092b50eb..36668458952 100644 --- a/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.txt +++ b/compiler/testData/loadJava/compiledJava/IntrinsicCompanionObject.txt @@ -1,6 +1,7 @@ package test public interface IntrinsicCompanionObject { + public abstract fun testBoolean(/*0*/ p0: kotlin.Boolean.Companion!): kotlin.Unit public abstract fun testChar(/*0*/ p0: kotlin.Char.Companion!): kotlin.Unit public abstract fun testEnum(/*0*/ p0: kotlin.Enum.Companion!): kotlin.Unit public abstract fun testInt(/*0*/ p0: kotlin.Int.Companion!): kotlin.Unit diff --git a/core/builtins/native/kotlin/Boolean.kt b/core/builtins/native/kotlin/Boolean.kt index bfcdfc9b7b0..f3912f12e99 100644 --- a/core/builtins/native/kotlin/Boolean.kt +++ b/core/builtins/native/kotlin/Boolean.kt @@ -21,6 +21,8 @@ package kotlin * represented as values of the primitive type `boolean`. */ public class Boolean private constructor() : Comparable { + companion object {} + /** * Returns the inverse of this boolean. */ diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/CompanionObjectMapping.kt b/core/descriptors/src/org/jetbrains/kotlin/builtins/CompanionObjectMapping.kt index 2438009b30c..756db80dc81 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/CompanionObjectMapping.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/CompanionObjectMapping.kt @@ -24,13 +24,14 @@ import java.util.* object CompanionObjectMapping { private val classIds = - (PrimitiveType.NUMBER_TYPES.map(KotlinBuiltIns::getPrimitiveFqName) + - KotlinBuiltIns.FQ_NAMES.string.toSafe() + - KotlinBuiltIns.FQ_NAMES._enum.toSafe()).mapTo(linkedSetOf(), ClassId::topLevel) + (PrimitiveType.NUMBER_TYPES.map(KotlinBuiltIns::getPrimitiveFqName) + + KotlinBuiltIns.FQ_NAMES.string.toSafe() + + KotlinBuiltIns.FQ_NAMES._boolean.toSafe() + + KotlinBuiltIns.FQ_NAMES._enum.toSafe()).mapTo(linkedSetOf(), ClassId::topLevel) fun allClassesWithIntrinsicCompanions(): Set = - Collections.unmodifiableSet(classIds) + Collections.unmodifiableSet(classIds) fun isMappedIntrinsicCompanionObject(classDescriptor: ClassDescriptor): Boolean = - DescriptorUtils.isCompanionObject(classDescriptor) && classDescriptor.classId?.outerClassId in classIds + DescriptorUtils.isCompanionObject(classDescriptor) && classDescriptor.classId?.outerClassId in classIds } diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/ClassMapperLite.kt b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/ClassMapperLite.kt index 35d3d0a38bd..21360ac2130 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/ClassMapperLite.kt +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/deserialization/ClassMapperLite.kt @@ -63,7 +63,7 @@ object ClassMapperLite { add("reflect/KFunction$i", "kotlin/reflect/KFunction") } - for (klass in listOf("Char", "Byte", "Short", "Int", "Float", "Long", "Double", "String", "Enum")) { + for (klass in listOf("Char", "Byte", "Short", "Int", "Float", "Long", "Double", "String", "Enum", "Boolean")) { add("$klass.Companion", "kotlin/jvm/internal/${klass}CompanionObject") } } diff --git a/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt b/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt index 292b68c039c..1657021be10 100644 --- a/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt +++ b/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt @@ -100,3 +100,5 @@ private object CharCompanionObject { private object StringCompanionObject {} +private object BooleanCompanionObject {} + diff --git a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt index 1fc1352c3a5..69cf48af9f7 100644 --- a/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt +++ b/libraries/stdlib/jvm/runtime/kotlin/jvm/internal/PrimitiveCompanionObjects.kt @@ -52,4 +52,5 @@ internal object CharCompanionObject { } internal object StringCompanionObject {} -internal object EnumCompanionObject {} \ No newline at end of file +internal object EnumCompanionObject {} +internal object BooleanCompanionObject {} \ No newline at end of file diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt index 40184a865b4..72e10064499 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt @@ -365,6 +365,10 @@ public final class kotlin/jvm/internal/ArrayIteratorsKt { public static final fun iterator ([Z)Lkotlin/collections/BooleanIterator; } +public final class kotlin/jvm/internal/BooleanCompanionObject { + public static final field INSTANCE Lkotlin/jvm/internal/BooleanCompanionObject; +} + public final class kotlin/jvm/internal/BooleanSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder { public fun (I)V public final fun add (Z)V diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 0c8f04fd27c..9cb46124c08 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -3179,6 +3179,10 @@ public final class kotlin/jvm/internal/ArrayIteratorsKt { public static final fun iterator ([Z)Lkotlin/collections/BooleanIterator; } +public final class kotlin/jvm/internal/BooleanCompanionObject { + public static final field INSTANCE Lkotlin/jvm/internal/BooleanCompanionObject; +} + public final class kotlin/jvm/internal/BooleanSpreadBuilder : kotlin/jvm/internal/PrimitiveSpreadBuilder { public fun (I)V public final fun add (Z)V