Skip to content

Commit

Permalink
Internalize non-KP-type-returning APIs in KM artifact
Browse files Browse the repository at this point in the history
These were useful in a time where kotlinx-metadata didn't offer easy entry point APIs for these, but it's come a long way now and we can better focus the artifact by only exposing kotlinpoet-specific APIs
  • Loading branch information
ZacSweers committed Apr 17, 2024
1 parent cdb5426 commit 3eeba5a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 21 deletions.
8 changes: 0 additions & 8 deletions interop/kotlinx-metadata/api/kotlinx-metadata.api
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
public final class com/squareup/kotlinpoet/metadata/KotlinPoetMetadata {
public static final fun readKotlinClassMetadata (Lkotlin/Metadata;Z)Lkotlinx/metadata/jvm/KotlinClassMetadata;
public static final fun toKmClass (Ljava/lang/Class;Z)Lkotlinx/metadata/KmClass;
public static final fun toKmClass (Ljavax/lang/model/element/TypeElement;Z)Lkotlinx/metadata/KmClass;
public static final fun toKmClass (Lkotlin/Metadata;Z)Lkotlinx/metadata/KmClass;
public static final fun toKmClass (Lkotlin/reflect/KClass;Z)Lkotlinx/metadata/KmClass;
}

public abstract interface annotation class com/squareup/kotlinpoet/metadata/KotlinPoetMetadataPreview : java/lang/annotation/Annotation {
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import kotlin.annotation.AnnotationTarget.PROPERTY
import kotlin.reflect.KClass
import kotlinx.metadata.KmClass
import kotlinx.metadata.jvm.KotlinClassMetadata
import kotlinx.metadata.jvm.Metadata

/**
* Indicates that a given API is part of the experimental KotlinPoet metadata support. This exists
Expand All @@ -39,37 +38,32 @@ public annotation class KotlinPoetMetadataPreview
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
* @return a new [KmClass] representation of the Kotlin metadata for [this] class.
*/
@KotlinPoetMetadataPreview
public fun KClass<*>.toKmClass(lenient: Boolean): KmClass = java.toKmClass(lenient)
internal fun KClass<*>.toKmClass(lenient: Boolean): KmClass = java.toKmClass(lenient)

/**
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
* @return a new [KmClass] representation of the Kotlin metadata for [this] class.
*/
@KotlinPoetMetadataPreview
public fun Class<*>.toKmClass(lenient: Boolean): KmClass = readMetadata(::getAnnotation).toKmClass(lenient)
internal fun Class<*>.toKmClass(lenient: Boolean): KmClass = readMetadata(::getAnnotation).toKmClass(lenient)

/**
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
* @return a new [KmClass] representation of the Kotlin metadata for [this] type.
*/
@KotlinPoetMetadataPreview
public fun TypeElement.toKmClass(lenient: Boolean): KmClass = readMetadata(::getAnnotation).toKmClass(lenient)
internal fun TypeElement.toKmClass(lenient: Boolean): KmClass = readMetadata(::getAnnotation).toKmClass(lenient)

/**
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
*/
@KotlinPoetMetadataPreview
public fun Metadata.toKmClass(lenient: Boolean): KmClass {
internal fun Metadata.toKmClass(lenient: Boolean): KmClass {
return toKotlinClassMetadata<KotlinClassMetadata.Class>(lenient)
.kmClass
}

/**
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
*/
@KotlinPoetMetadataPreview
public inline fun <reified T : KotlinClassMetadata> Metadata.toKotlinClassMetadata(
internal inline fun <reified T : KotlinClassMetadata> Metadata.toKotlinClassMetadata(
lenient: Boolean,
): T {
val expectedType = T::class
Expand Down Expand Up @@ -102,8 +96,7 @@ public inline fun <reified T : KotlinClassMetadata> Metadata.toKotlinClassMetada
*
* @param lenient see docs on [KotlinClassMetadata.readStrict] and [KotlinClassMetadata.readLenient] for more details.
*/
@KotlinPoetMetadataPreview
public fun Metadata.readKotlinClassMetadata(lenient: Boolean): KotlinClassMetadata {
internal fun Metadata.readKotlinClassMetadata(lenient: Boolean): KotlinClassMetadata {
return if (lenient) {
KotlinClassMetadata.readLenient(this)
} else {
Expand Down

0 comments on commit 3eeba5a

Please sign in to comment.