diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Extras.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Extras.kt index dd777de84a7..8786a7cffb9 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Extras.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Extras.kt @@ -65,7 +65,7 @@ import java.io.Serializable interface Extras : Collection> { /* Not implemented as data class to ensure more controllable binary compatibility */ class Key @PublishedApi internal constructor( - internal val type: ReifiedTypeSignature, + val type: Type, val name: String? = null, ) : Serializable { @@ -95,8 +95,8 @@ interface Extras : Collection> { fun fromString(stableString: String): Key<*> { @OptIn(UnsafeApi::class) return if (stableString.contains(';')) { val split = stableString.split(';', limit = 2) - Key(ReifiedTypeSignature(split[0]), split[1]) - } else Key(ReifiedTypeSignature(stableString)) + Key(Type(split[0]), split[1]) + } else Key(Type(stableString)) } private const val serialVersionUID = 0L diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasUtils.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasUtils.kt index 6324691ac1a..ec1a364096d 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasUtils.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ExtrasUtils.kt @@ -25,7 +25,7 @@ package org.jetbrains.kotlin.tooling.core * ``` */ inline fun extrasKeyOf(name: String? = null): Extras.Key = - Extras.Key(ReifiedTypeSignature(), name) + Extras.Key(Type(), name) fun emptyExtras(): Extras = EmptyExtras diff --git a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignature.kt b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Type.kt similarity index 85% rename from libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignature.kt rename to libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Type.kt index f676996f341..9904cdf7d3f 100644 --- a/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignature.kt +++ b/libraries/tools/kotlin-tooling-core/src/main/kotlin/org/jetbrains/kotlin/tooling/core/Type.kt @@ -13,20 +13,18 @@ import kotlin.reflect.KType import kotlin.reflect.KVariance import kotlin.reflect.typeOf -@PublishedApi -internal inline fun ReifiedTypeSignature(): ReifiedTypeSignature { +inline fun Type(): Type { @OptIn(UnsafeApi::class, ExperimentalStdlibApi::class) - return ReifiedTypeSignature(renderReifiedTypeSignatureString(typeOf())) + return Type(renderReifiedTypeSignatureString(typeOf())) } -@PublishedApi -internal class ReifiedTypeSignature -@UnsafeApi("Use 'reifiedTypeSignatureOf' instead") -@PublishedApi internal constructor(val signature: String) : Serializable { +class Type +@UnsafeApi("Use 'Type' instead") +@PublishedApi internal constructor(internal val signature: String) : Serializable { override fun equals(other: Any?): Boolean { if (this === other) return true - if (other !is ReifiedTypeSignature<*>) return false + if (other !is Type<*>) return false if (other.signature != this.signature) return false return true } diff --git a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignatureTest.kt b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignatureTest.kt deleted file mode 100644 index 86a8f202520..00000000000 --- a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/ReifiedTypeSignatureTest.kt +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.tooling.core - -import kotlin.test.Test -import kotlin.test.assertEquals -import kotlin.test.assertNotEquals - -class ReifiedTypeSignatureTest { - - class Box - - class Outer { - inner class Inner - } - - open class Recursive> - - class AnyRecursive : Recursive() - - @Test - fun `test - sample 0`() { - assertEquals( - "kotlin.collections.List", ReifiedTypeSignature>().signature - ) - } - - @Test - fun `test - sample 1`() { - assertEquals( - "kotlin.collections.List<*>", ReifiedTypeSignature>().signature - ) - } - - @Test - fun `test - sample 2`() { - assertEquals( - "kotlin.String", ReifiedTypeSignature().signature - ) - } - - @Test - fun `test - sample 3`() { - assertEquals( - "kotlin.collections.Map>>", - ReifiedTypeSignature>>>().signature - ) - } - - - @Test - fun `test - sample 5 - inner class`() { - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest.Outer.Inner", - ReifiedTypeSignature().signature - ) - } - - @Test - fun `test - sample 6 - recursive types`() { - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest.Recursive<*>", - ReifiedTypeSignature>().signature - ) - - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest.AnyRecursive", - ReifiedTypeSignature().signature - ) - - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest" + - ".Recursive", - ReifiedTypeSignature>().signature - ) - } - - @Test - fun `test sample 7 - nullable`() { - assertEquals("kotlin.collections.List<*>?", ReifiedTypeSignature?>().signature) - assertEquals("kotlin.collections.List", ReifiedTypeSignature>().signature) - } - - @Test - fun `test sample 8 - variance`() { - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest.Box", - ReifiedTypeSignature>().signature - ) - assertEquals( - "org.jetbrains.kotlin.tooling.core.ReifiedTypeSignatureTest.Box", - ReifiedTypeSignature>().signature - ) - } - - @Suppress("RemoveExplicitTypeArguments", "TYPE_INFERENCE_ONLY_INPUT_TYPES_WARNING") - @Test - fun `test - equals`() { - assertEquals(ReifiedTypeSignature>(), ReifiedTypeSignature>()) - assertNotEquals(ReifiedTypeSignature>(), ReifiedTypeSignature>()) - } -} diff --git a/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/TypeTest.kt b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/TypeTest.kt new file mode 100644 index 00000000000..18301340080 --- /dev/null +++ b/libraries/tools/kotlin-tooling-core/src/test/kotlin/org/jetbrains/kotlin/tooling/core/TypeTest.kt @@ -0,0 +1,105 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.tooling.core + +import kotlin.test.Test +import kotlin.test.assertEquals +import kotlin.test.assertNotEquals + +class TypeTest { + + class Box + + class Outer { + inner class Inner + } + + open class Recursive> + + class AnyRecursive : Recursive() + + @Test + fun `test - sample 0`() { + assertEquals( + "kotlin.collections.List", Type>().signature + ) + } + + @Test + fun `test - sample 1`() { + assertEquals( + "kotlin.collections.List<*>", Type>().signature + ) + } + + @Test + fun `test - sample 2`() { + assertEquals( + "kotlin.String", Type().signature + ) + } + + @Test + fun `test - sample 3`() { + assertEquals( + "kotlin.collections.Map>>", + Type>>>().signature + ) + } + + + @Test + fun `test - sample 5 - inner class`() { + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest.Outer.Inner", + Type().signature + ) + } + + @Test + fun `test - sample 6 - recursive types`() { + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest.Recursive<*>", + Type>().signature + ) + + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest.AnyRecursive", + Type().signature + ) + + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest" + + ".Recursive", + Type>().signature + ) + } + + @Test + fun `test sample 7 - nullable`() { + assertEquals("kotlin.collections.List<*>?", Type?>().signature) + assertEquals("kotlin.collections.List", Type>().signature) + } + + @Test + fun `test sample 8 - variance`() { + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest.Box", + Type>().signature + ) + assertEquals( + "org.jetbrains.kotlin.tooling.core.TypeTest.Box", + Type>().signature + ) + } + + @Suppress("RemoveExplicitTypeArguments", "TYPE_INFERENCE_ONLY_INPUT_TYPES_WARNING") + @Test + fun `test - equals`() { + assertEquals(Type>(), Type>()) + assertNotEquals(Type>(), Type>()) + } +}