diff --git a/kotlinpoet/api/jvm/kotlinpoet.api b/kotlinpoet/api/jvm/kotlinpoet.api index e9be868..87235f4 100644 --- a/kotlinpoet/api/jvm/kotlinpoet.api +++ b/kotlinpoet/api/jvm/kotlinpoet.api @@ -57,6 +57,11 @@ public abstract interface annotation class dev/kord/codegen/kotlinpoet/CodeGenDs public abstract interface annotation class dev/kord/codegen/kotlinpoet/CodeGenInternal : java/lang/annotation/Annotation { } +public final class dev/kord/codegen/kotlinpoet/EnumConstantHelperKt { + public static final fun addEnumConstant (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec$Builder; + public static synthetic fun addEnumConstant$default (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec$Builder; +} + public final class dev/kord/codegen/kotlinpoet/FileSpecFactoriesKt { public static final fun FileSpec (Lcom/squareup/kotlinpoet/ClassName;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/FileSpec; public static final fun FileSpec (Ljava/lang/String;Lcom/squareup/kotlinpoet/TypeSpec;)Lcom/squareup/kotlinpoet/FileSpec; @@ -237,10 +242,6 @@ public final class dev/kord/codegen/kotlinpoet/TypeSpecBuildersKt { public static synthetic fun addAnnotationClass$default (Lcom/squareup/kotlinpoet/FileSpec$Builder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec; public static synthetic fun addAnnotationClass$default (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Lcom/squareup/kotlinpoet/ClassName;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec; public static synthetic fun addAnnotationClass$default (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec; - public static final fun addAnonymousClass (Lcom/squareup/kotlinpoet/FileSpec$Builder;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec; - public static final fun addAnonymousClass (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec; - public static synthetic fun addAnonymousClass$default (Lcom/squareup/kotlinpoet/FileSpec$Builder;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec; - public static synthetic fun addAnonymousClass$default (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lcom/squareup/kotlinpoet/TypeSpec; public static final fun addClass (Lcom/squareup/kotlinpoet/FileSpec$Builder;Lcom/squareup/kotlinpoet/ClassName;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec; public static final fun addClass (Lcom/squareup/kotlinpoet/FileSpec$Builder;Ljava/lang/String;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec; public static final fun addClass (Lcom/squareup/kotlinpoet/TypeSpec$Builder;Lcom/squareup/kotlinpoet/ClassName;Lkotlin/jvm/functions/Function1;)Lcom/squareup/kotlinpoet/TypeSpec; diff --git a/kotlinpoet/build/generated/ksp/generationSource/generationSourceMain/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt b/kotlinpoet/build/generated/ksp/generationSource/generationSourceMain/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt index 7716be7..cd7deb0 100644 --- a/kotlinpoet/build/generated/ksp/generationSource/generationSourceMain/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/generationSource/generationSourceMain/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt @@ -91,11 +91,6 @@ public inline fun TypeSpec.Builder.addEnum(className: ClassName, block: TypeSpec return TypeSpec.`enum`(className, block).also(::addType) } -public inline fun TypeSpec.Builder.addAnonymousClass(block: TypeSpecBuilderScope = {}): TypeSpec { - contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.anonymousClass(block).also(::addType) -} - public inline fun TypeSpec.Builder.addAnnotationClass(name: String, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } @@ -192,11 +187,6 @@ public inline fun FileSpec.Builder.addEnum(className: ClassName, block: TypeSpec return TypeSpec.`enum`(className, block).also(::addType) } -public inline fun FileSpec.Builder.addAnonymousClass(block: TypeSpecBuilderScope = {}): TypeSpec { - contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.anonymousClass(block).also(::addType) -} - public inline fun FileSpec.Builder.addAnnotationClass(name: String, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } diff --git a/kotlinpoet/processor/src/main/kotlin/reification/IsReifyable.kt b/kotlinpoet/processor/src/main/kotlin/reification/IsReifyable.kt index 81ca004..2e5ba41 100644 --- a/kotlinpoet/processor/src/main/kotlin/reification/IsReifyable.kt +++ b/kotlinpoet/processor/src/main/kotlin/reification/IsReifyable.kt @@ -1,7 +1,6 @@ package dev.kord.codegen.generator.reification import com.google.devtools.ksp.symbol.KSClassDeclaration -import com.google.devtools.ksp.symbol.KSClassifierReference import com.google.devtools.ksp.symbol.KSFunctionDeclaration import com.squareup.kotlinpoet.* import kotlin.reflect.KClass @@ -24,7 +23,7 @@ fun KSFunctionDeclaration.isReifiable( // We cannot add two receivers at this point if (parentDeclaration is KSClassDeclaration && extensionReceiver != null) return false return parameters.any { - val name = it.type.resolve().declaration.qualifiedName!!.asString() + val name = it.type.resolve().declaration.qualifiedName?.asString() ?: return@any false !it.isVararg && (name == KClass::class.qualifiedName && includeKClass || (name == ClassName::class.qualifiedName && includeClassName) diff --git a/kotlinpoet/src/commonMain/kotlin/EnumConstantHelper.kt b/kotlinpoet/src/commonMain/kotlin/EnumConstantHelper.kt new file mode 100644 index 0000000..afef126 --- /dev/null +++ b/kotlinpoet/src/commonMain/kotlin/EnumConstantHelper.kt @@ -0,0 +1,9 @@ +package dev.kord.codegen.kotlinpoet + +import com.squareup.kotlinpoet.TypeSpec + +/** + * Adds an enum constant with [name] to this [TypeSpec]. + */ +public fun TypeSpec.Builder.addEnumConstant(name: String, builder: TypeSpecBuilderScope = {}): TypeSpec.Builder = + addEnumConstant(name, TypeSpec.anonymousClass(builder)) diff --git a/kotlinpoet/src/commonMain/kotlin/builders/TypeSpecBuilders.kt b/kotlinpoet/src/commonMain/kotlin/builders/TypeSpecBuilders.kt index 80ea88a..f4be779 100644 --- a/kotlinpoet/src/commonMain/kotlin/builders/TypeSpecBuilders.kt +++ b/kotlinpoet/src/commonMain/kotlin/builders/TypeSpecBuilders.kt @@ -4,7 +4,7 @@ nameMapping = [ InlineConstructor.NameMapping("Annotation", "AnnotationClass") ], - ignoreBuilders = ["anonymousClass"] + ignoreBuilders = ["anonymousClassBuilder"] ) @file:InlineConstructor( @@ -13,7 +13,7 @@ nameMapping = [ InlineConstructor.NameMapping("Annotation", "AnnotationClass") ], - ignoreBuilders = ["anonymousClass"] + ignoreBuilders = ["anonymousClassBuilder"] ) @file:InlineConstructor(