diff --git a/build.gradle.kts b/build.gradle.kts index b62e01a..5ac0d1c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,6 +11,18 @@ allprojects { mavenCentral() maven("https://oss.sonatype.org/content/repositories/snapshots/") } + + configurations.all { + val conf = this + conf.resolutionStrategy.eachDependency { + if (requested.group == "dev.kord.codegen") { + when (requested.name) { + "kotlinpoet" -> useVersion("main-20240811.165308-18") + "ksp" -> useVersion("main-20240811.165308-20") + } + } + } + } } subprojects { @@ -22,3 +34,4 @@ tasks { outputDirectory = layout.projectDirectory.dir("docs/api") } } + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index be9831d..3ea4454 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,9 +11,9 @@ ksp-api = { group = "com.google.devtools.ksp", name = "symbol-processing-api", v kotlinpoet = { group = "com.squareup", name = "kotlinpoet-jvm", version.ref = "kotlinpoet" } kotlinpoet-ksp = { group = "com.squareup", name = "kotlinpoet-ksp", version.ref = "kotlinpoet" } -codegen-kotlinpoet = { group = "dev.kord.codegen", name = "kotlinpoet", version = "main-20230912.212936-5" } -codegen-ksp = { group = "dev.kord.codegen", name = "ksp", version = "main-20230912.211940-5" } -codegen-ksp-processor = { group = "dev.kord.codegen", name = "ksp-processor", version = "main-20230912.211940-7" } +codegen-kotlinpoet = { group = "dev.kord.codegen", name = "kotlinpoet", version = "main-20240811.165308-18" } +codegen-ksp = { group = "dev.kord.codegen", name = "ksp", version = "main-20240811.165308-20" } +codegen-ksp-processor = { group = "dev.kord.codegen", name = "ksp-processor", version = "main-20240811.165308-19" } mockk = { group = "io.mockk", name = "mockk", version = "1.13.12" } diff --git a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/AnnotationSpecBuilders.kt b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/AnnotationSpecBuilders.kt index af51990..9e17191 100644 --- a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/AnnotationSpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/AnnotationSpecBuilders.kt @@ -36,13 +36,13 @@ public inline fun Annotatable.Builder<*>.addAnnotation(type: KClass.addAnnotation(`annotation`: AnnotationMirror): AnnotationSpec = - AnnotationSpec(`annotation`).also(::addAnnotation) - @DelicateKotlinPoetApi(message = "Java reflection APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") public fun Annotatable.Builder<*>.addAnnotation(`annotation`: Annotation, includeDefaultValues: Boolean = false): AnnotationSpec = AnnotationSpec(`annotation`, includeDefaultValues).also(::addAnnotation) + +@DelicateKotlinPoetApi(message = + "Mirror APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") +public fun Annotatable.Builder<*>.addAnnotation(`annotation`: AnnotationMirror): AnnotationSpec = + AnnotationSpec(`annotation`).also(::addAnnotation) diff --git a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/FunctionSpecBuilders.kt b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/FunctionSpecBuilders.kt index 8632bc1..6f66f62 100644 --- a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/FunctionSpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/FunctionSpecBuilders.kt @@ -12,14 +12,14 @@ public inline fun TypeSpec.Builder.addConstructor(block: FunSpecBuilderScope = { return FunSpec.`constructor`(block).also(::addFunction) } -public inline fun MemberSpecHolder.Builder<*>.addFunction(memberName: MemberName, - block: FunSpecBuilderScope = {}): FunSpec { - contract { callsInPlace(block, EXACTLY_ONCE) } - return FunSpec(memberName, block).also(::addFunction) -} - public inline fun MemberSpecHolder.Builder<*>.addFunction(name: String, block: FunSpecBuilderScope = {}): FunSpec { contract { callsInPlace(block, EXACTLY_ONCE) } return FunSpec(name, block).also(::addFunction) } + +public inline fun MemberSpecHolder.Builder<*>.addFunction(memberName: MemberName, + block: FunSpecBuilderScope = {}): FunSpec { + contract { callsInPlace(block, EXACTLY_ONCE) } + return FunSpec(memberName, block).also(::addFunction) +} diff --git a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/ParameterSpecBuilders.kt b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/ParameterSpecBuilders.kt index cb92300..b7255f3 100644 --- a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/ParameterSpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/ParameterSpecBuilders.kt @@ -33,25 +33,25 @@ public fun FunSpec.Builder.addParameter( public inline fun FunSpec.Builder.addParameter( name: String, - type: TypeName, - modifiers: Iterable, + type: Type, + vararg modifiers: KModifier, block: ParameterSpecBuilderScope = {}, ): ParameterSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return ParameterSpec(name, type, modifiers, block).also(::addParameter) + return ParameterSpec(name, type, modifiers = modifiers, block).also(::addParameter) } public fun FunSpec.Builder.addParameter( - type: TypeName, - modifiers: Iterable, + type: Type, + vararg modifiers: KModifier, block: ParameterSpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> - ParameterSpec(name, type, modifiers, block).also(::addParameter) + ParameterSpec(name, type, modifiers = modifiers, block).also(::addParameter) } public inline fun FunSpec.Builder.addParameter( name: String, - type: Type, + type: KClass<*>, vararg modifiers: KModifier, block: ParameterSpecBuilderScope = {}, ): ParameterSpec { @@ -60,7 +60,7 @@ public inline fun FunSpec.Builder.addParameter( } public fun FunSpec.Builder.addParameter( - type: Type, + type: KClass<*>, vararg modifiers: KModifier, block: ParameterSpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> @@ -69,7 +69,7 @@ public fun FunSpec.Builder.addParameter( public inline fun FunSpec.Builder.addParameter( name: String, - type: Type, + type: TypeName, modifiers: Iterable, block: ParameterSpecBuilderScope = {}, ): ParameterSpec { @@ -78,7 +78,7 @@ public inline fun FunSpec.Builder.addParameter( } public fun FunSpec.Builder.addParameter( - type: Type, + type: TypeName, modifiers: Iterable, block: ParameterSpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> @@ -87,20 +87,20 @@ public fun FunSpec.Builder.addParameter( public inline fun FunSpec.Builder.addParameter( name: String, - type: KClass<*>, - vararg modifiers: KModifier, + type: Type, + modifiers: Iterable, block: ParameterSpecBuilderScope = {}, ): ParameterSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return ParameterSpec(name, type, modifiers = modifiers, block).also(::addParameter) + return ParameterSpec(name, type, modifiers, block).also(::addParameter) } public fun FunSpec.Builder.addParameter( - type: KClass<*>, - vararg modifiers: KModifier, + type: Type, + modifiers: Iterable, block: ParameterSpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> - ParameterSpec(name, type, modifiers = modifiers, block).also(::addParameter) + ParameterSpec(name, type, modifiers, block).also(::addParameter) } public inline fun FunSpec.Builder.addParameter( diff --git a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/PropertySpecBuilders.kt b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/PropertySpecBuilders.kt index 9d5ce0a..cf40440 100644 --- a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/PropertySpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/PropertySpecBuilders.kt @@ -32,25 +32,25 @@ public fun MemberSpecHolder.Builder<*>.addProperty( public inline fun MemberSpecHolder.Builder<*>.addProperty( name: String, - type: TypeName, - modifiers: Iterable, + type: Type, + vararg modifiers: KModifier, block: PropertySpecBuilderScope = {}, ): PropertySpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return PropertySpec(name, type, modifiers, block).also(::addProperty) + return PropertySpec(name, type, modifiers = modifiers, block).also(::addProperty) } public fun MemberSpecHolder.Builder<*>.addProperty( - type: TypeName, - modifiers: Iterable, + type: Type, + vararg modifiers: KModifier, block: PropertySpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> - PropertySpec(name, type, modifiers, block).also(::addProperty) + PropertySpec(name, type, modifiers = modifiers, block).also(::addProperty) } public inline fun MemberSpecHolder.Builder<*>.addProperty( name: String, - type: Type, + type: KClass<*>, vararg modifiers: KModifier, block: PropertySpecBuilderScope = {}, ): PropertySpec { @@ -59,18 +59,16 @@ public inline fun MemberSpecHolder.Builder<*>.addProperty( } public fun MemberSpecHolder.Builder<*>.addProperty( - type: Type, + type: KClass<*>, vararg modifiers: KModifier, block: PropertySpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> PropertySpec(name, type, modifiers = modifiers, block).also(::addProperty) } -@DelicateKotlinPoetApi(message = - "Java reflection APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") public inline fun MemberSpecHolder.Builder<*>.addProperty( name: String, - type: Type, + type: TypeName, modifiers: Iterable, block: PropertySpecBuilderScope = {}, ): PropertySpec { @@ -78,32 +76,34 @@ public inline fun MemberSpecHolder.Builder<*>.addProperty( return PropertySpec(name, type, modifiers, block).also(::addProperty) } -@DelicateKotlinPoetApi(message = - "Java reflection APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") public fun MemberSpecHolder.Builder<*>.addProperty( - type: Type, + type: TypeName, modifiers: Iterable, block: PropertySpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> PropertySpec(name, type, modifiers, block).also(::addProperty) } +@DelicateKotlinPoetApi(message = + "Java reflection APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") public inline fun MemberSpecHolder.Builder<*>.addProperty( name: String, - type: KClass<*>, - vararg modifiers: KModifier, + type: Type, + modifiers: Iterable, block: PropertySpecBuilderScope = {}, ): PropertySpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return PropertySpec(name, type, modifiers = modifiers, block).also(::addProperty) + return PropertySpec(name, type, modifiers, block).also(::addProperty) } +@DelicateKotlinPoetApi(message = + "Java reflection APIs don't give complete information on Kotlin types. Consider using the kotlinpoet-metadata APIs instead.") public fun MemberSpecHolder.Builder<*>.addProperty( - type: KClass<*>, - vararg modifiers: KModifier, + type: Type, + modifiers: Iterable, block: PropertySpecBuilderScope = {}, ): SubSpecDelegateProvider = produceByName { name -> - PropertySpec(name, type, modifiers = modifiers, block).also(::addProperty) + PropertySpec(name, type, modifiers, block).also(::addProperty) } public inline fun MemberSpecHolder.Builder<*>.addProperty( diff --git a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt index 97b3135..df76225 100644 --- a/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt +++ b/kotlinpoet/build/generated/ksp/main/kotlin/dev/kord/codegen/kotlinpoet/TypeSpecBuilders.kt @@ -7,22 +7,16 @@ import com.squareup.kotlinpoet.TypeSpecHolder import kotlin.contracts.InvocationKind.EXACTLY_ONCE import kotlin.contracts.contract -public inline fun TypeSpecHolder.Builder<*>.addAnnotationClass(className: ClassName, - block: TypeSpecBuilderScope = {}): TypeSpec { - contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.`annotation`(className, block).also(::addType) -} - public inline fun TypeSpecHolder.Builder<*>.addAnnotationClass(name: String, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } return TypeSpec.`annotation`(name, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addClass(className: ClassName, +public inline fun TypeSpecHolder.Builder<*>.addAnnotationClass(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.`class`(className, block).also(::addType) + return TypeSpec.`annotation`(className, block).also(::addType) } public inline fun TypeSpecHolder.Builder<*>.addClass(name: String, block: TypeSpecBuilderScope = @@ -31,16 +25,16 @@ public inline fun TypeSpecHolder.Builder<*>.addClass(name: String, block: TypeSp return TypeSpec.`class`(name, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addCompanionObject(name: String? = null, +public inline fun TypeSpecHolder.Builder<*>.addClass(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.companionObject(name, block).also(::addType) + return TypeSpec.`class`(className, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addEnum(className: ClassName, +public inline fun TypeSpecHolder.Builder<*>.addCompanionObject(name: String? = null, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.`enum`(className, block).also(::addType) + return TypeSpec.companionObject(name, block).also(::addType) } public inline fun TypeSpecHolder.Builder<*>.addEnum(name: String, block: TypeSpecBuilderScope = {}): @@ -49,17 +43,10 @@ public inline fun TypeSpecHolder.Builder<*>.addEnum(name: String, block: TypeSpe return TypeSpec.`enum`(name, block).also(::addType) } -@Deprecated( - replaceWith = ReplaceWith(expression = - "TypeSpec.classBuilder(className).addModifiers(KModifier.EXPECT)"), - message = "Use classBuilder() instead. This function will be removed in KotlinPoet 2.0.", - level = DeprecationLevel.WARNING, -) -@Suppress(names = arrayOf("DEPRECATION")) -public inline fun TypeSpecHolder.Builder<*>.addExpectClass(className: ClassName, +public inline fun TypeSpecHolder.Builder<*>.addEnum(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.expectClass(className, block).also(::addType) + return TypeSpec.`enum`(className, block).also(::addType) } @Deprecated( @@ -75,10 +62,17 @@ public inline fun TypeSpecHolder.Builder<*>.addExpectClass(name: String, block: return TypeSpec.expectClass(name, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addFunInterface(className: ClassName, +@Deprecated( + replaceWith = ReplaceWith(expression = + "TypeSpec.classBuilder(className).addModifiers(KModifier.EXPECT)"), + message = "Use classBuilder() instead. This function will be removed in KotlinPoet 2.0.", + level = DeprecationLevel.WARNING, +) +@Suppress(names = arrayOf("DEPRECATION")) +public inline fun TypeSpecHolder.Builder<*>.addExpectClass(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.funInterface(className, block).also(::addType) + return TypeSpec.expectClass(className, block).also(::addType) } public inline fun TypeSpecHolder.Builder<*>.addFunInterface(name: String, @@ -87,10 +81,10 @@ public inline fun TypeSpecHolder.Builder<*>.addFunInterface(name: String, return TypeSpec.funInterface(name, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addInterface(className: ClassName, +public inline fun TypeSpecHolder.Builder<*>.addFunInterface(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.`interface`(className, block).also(::addType) + return TypeSpec.funInterface(className, block).also(::addType) } public inline fun TypeSpecHolder.Builder<*>.addInterface(name: String, block: TypeSpecBuilderScope = @@ -99,10 +93,10 @@ public inline fun TypeSpecHolder.Builder<*>.addInterface(name: String, block: Ty return TypeSpec.`interface`(name, block).also(::addType) } -public inline fun TypeSpecHolder.Builder<*>.addObject(className: ClassName, +public inline fun TypeSpecHolder.Builder<*>.addInterface(className: ClassName, block: TypeSpecBuilderScope = {}): TypeSpec { contract { callsInPlace(block, EXACTLY_ONCE) } - return TypeSpec.`object`(className, block).also(::addType) + return TypeSpec.`interface`(className, block).also(::addType) } public inline fun TypeSpecHolder.Builder<*>.addObject(name: String, block: TypeSpecBuilderScope = @@ -111,6 +105,12 @@ public inline fun TypeSpecHolder.Builder<*>.addObject(name: String, block: TypeS return TypeSpec.`object`(name, block).also(::addType) } +public inline fun TypeSpecHolder.Builder<*>.addObject(className: ClassName, + block: TypeSpecBuilderScope = {}): TypeSpec { + contract { callsInPlace(block, EXACTLY_ONCE) } + return TypeSpec.`object`(className, block).also(::addType) +} + @Deprecated( replaceWith = ReplaceWith(expression = "TypeSpec.classBuilder(name).addModifiers(KModifier.VALUE)"), diff --git a/ksp/build.gradle.kts b/ksp/build.gradle.kts index b5d7c54..469e433 100644 --- a/ksp/build.gradle.kts +++ b/ksp/build.gradle.kts @@ -11,7 +11,21 @@ kotlin { dependencies { api(libs.ksp.api) - ksp(libs.codegen.ksp.processor) + ksp(libs.codegen.kotlinpoet) { + version { + strictly("main-20240811.165308-18") + } + } + ksp(libs.codegen.ksp) { + version { + strictly("main-20240811.165308-20") + } + } + ksp(libs.codegen.ksp.processor) { + version { + strictly("main-20240811.165308-19") + } + } testImplementation(libs.mockk) testImplementation(kotlin("test-junit5")) } diff --git a/ksp/processor/src/main/kotlin/generator/DataClassRepresentation.kt b/ksp/processor/src/main/kotlin/generator/DataClassRepresentation.kt index 515acc4..aed2541 100644 --- a/ksp/processor/src/main/kotlin/generator/DataClassRepresentation.kt +++ b/ksp/processor/src/main/kotlin/generator/DataClassRepresentation.kt @@ -74,7 +74,7 @@ private fun KSClassDeclaration.dataClassSpec( packageName: String, additionalBuilder: TypeSpec.Builder.() -> Unit = {} ): TypeSpec { - return `class`(simpleName.asString()) clazz@{ + return TypeSpec. `class`(simpleName.asString()) clazz@{ addKdoc( """Data class representation of [%T]. |@see Companion.%L diff --git a/settings.gradle.kts b/settings.gradle.kts index 734cb25..d921d6e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,7 +8,7 @@ pluginManagement { enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version "0.6.0" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" } rootProject.name = "codegen-kt"