Skip to content

Commit

Permalink
Add addEnumConstant & remove addAnonymousClass
Browse files Browse the repository at this point in the history
  • Loading branch information
DRSchlaubi committed Sep 26, 2023
1 parent a0e66ae commit 46fc633
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 18 deletions.
9 changes: 5 additions & 4 deletions kotlinpoet/api/jvm/kotlinpoet.api
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) }
Expand Down Expand Up @@ -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) }
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
Expand Down
9 changes: 9 additions & 0 deletions kotlinpoet/src/commonMain/kotlin/EnumConstantHelper.kt
Original file line number Diff line number Diff line change
@@ -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))
4 changes: 2 additions & 2 deletions kotlinpoet/src/commonMain/kotlin/builders/TypeSpecBuilders.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
nameMapping = [
InlineConstructor.NameMapping("Annotation", "AnnotationClass")
],
ignoreBuilders = ["anonymousClass"]
ignoreBuilders = ["anonymousClassBuilder"]
)

@file:InlineConstructor(
Expand All @@ -13,7 +13,7 @@
nameMapping = [
InlineConstructor.NameMapping("Annotation", "AnnotationClass")
],
ignoreBuilders = ["anonymousClass"]
ignoreBuilders = ["anonymousClassBuilder"]
)

@file:InlineConstructor(
Expand Down

0 comments on commit 46fc633

Please sign in to comment.