Skip to content

Commit

Permalink
drop-in compatibility adjustments (#210)
Browse files Browse the repository at this point in the history
- bump copied generated code to 0.12.1, the last version that had the old package names (includes KtGeneratedFileDescriptor annotation)
- remove old protokt.proto file so that buf is happy that only one file has the protokt extension number
- consolidate jvm extensions modules into multiplatform modules (puts files back in those JARs that were there before the 1.0 reorganization)
- rename protokt outer class to be consistent with protobuf-java
- remove kotlin-reflect from dependencies of protokt-core
- remove interop between old and new generated code, as it is not needed for old generated code to function with the new runtime
- undo manual adjustments to copied generated code as part of the above
- kapt in multiplatform modules fails with: /Users/.../protokt/extensions/protokt-extensions-simple/build/tmp/kapt3/stubs/main/com/toasttab/protokt/ext/LocalDateStringConverter.java:3: error: incompatible types: NonExistentClass cannot be converted to Annotation @error.NonExistentClass(). Not sure what's up.
  • Loading branch information
andrewparmet authored Dec 5, 2023
1 parent 0554c61 commit eeb79a6
Show file tree
Hide file tree
Showing 125 changed files with 3,545 additions and 4,394 deletions.
4 changes: 4 additions & 0 deletions buildSrc/src/main/kotlin/JavaBasedProjectConventions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ fun Project.javaBasedProjectConventions() {
tasks.withType<KotlinCompile> {
kotlinOptions {
allWarningsAsErrors = true

// do not generate DefaultImpls objects since we do not target < JVM 1.8
// https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-m3-generating-default-methods-in-interfaces
freeCompilerArgs = listOf("-Xjvm-default=all")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,14 @@ kotlin {
}
}
}

jvm().compilations.all {
kotlinOptions {
// do not generate DefaultImpls objects since we do not target < JVM 1.8
// https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-m3-generating-default-methods-in-interfaces
freeCompilerArgs = listOf("-Xjvm-default=all")
}
}
}
}

Expand Down
19 changes: 6 additions & 13 deletions buildSrc/src/main/kotlin/protokt.spotless-conventions.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,11 @@ allprojects {
targetExclude(
"buildSrc/build/generated-sources/**",
"**/generated/**",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/compiler/plugin.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/any.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/api.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/descriptor.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/duration.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/empty.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/field_mask.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/source_context.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/struct.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/timestamp.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/type.kt",
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/wrappers.kt",
"extensions/protokt-jvm-extensions-lite/src/main/kotlin/com/toasttab/protokt/ext/inet_socket_address.kt"
"protokt-core-lite/src/jvmMain/kotlin/com/toasttab/protokt/**/*.kt",
"extensions/protokt-jvm-extensions-lite/src/main/kotlin/com/toasttab/protokt/ext/**.kt",
"extensions/protokt-extensions-lite/src/jvmMain/kotlin/com/toasttab/protokt/ext/**.kt",
"extensions/protokt-extensions/src/jvmMain/kotlin/com/toasttab/protokt/ext/**.kt",
"protokt-core/src/jvmMain/kotlin/com/toasttab/protokt/**/*.kt"
)
}

Expand All @@ -67,6 +59,7 @@ allprojects {
targetExclude(
"**/buildSrc/build/generated/source/buildConfig/main/main/**",
"**/build/generated-sources/kotlin-dsl-*/**",
"**/build/generated/source/**",
"**/protokt/v1/animals/**",
"**/protokt/v1/helloworld/**",
"**/protokt/v1/io/grpc/examples/**"
Expand Down
5 changes: 4 additions & 1 deletion extensions/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@
spotless {
kotlin {
targetExclude(
"protokt-jvm-extensions-lite/src/main/kotlin/com/toasttab/protokt/ext/inet_socket_address.kt"
"protokt-extensions/src/jvmMain/kotlin/com/toasttab/protokt/ext/inet_socket_address.kt",
"protokt-extensions/src/jvmMain/kotlin/com/toasttab/protokt/ext/protokt.kt",
"protokt-extensions-lite/src/jvmMain/kotlin/com/toasttab/protokt/ext/inet_socket_address.kt",
"protokt-extensions-lite/src/jvmMain/kotlin/com/toasttab/protokt/ext/protokt.kt"
)
}
}
25 changes: 6 additions & 19 deletions extensions/protokt-extensions-api/api/protokt-extensions-api.api
Original file line number Diff line number Diff line change
@@ -1,42 +1,29 @@
public abstract interface class com/toasttab/protokt/ext/Converter : protokt/v1/Converter {
}

public final class com/toasttab/protokt/ext/Converter$DefaultImpls {
public static fun getAcceptsDefaultValue (Lcom/toasttab/protokt/ext/Converter;)Z
public abstract interface class com/toasttab/protokt/ext/Converter {
public abstract fun getWrapped ()Lkotlin/reflect/KClass;
public abstract fun getWrapper ()Lkotlin/reflect/KClass;
public abstract fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
public abstract fun wrap (Ljava/lang/Object;)Ljava/lang/Object;
}

public abstract interface class com/toasttab/protokt/ext/OptimizedSizeofConverter : com/toasttab/protokt/ext/Converter {
public abstract fun sizeof (Ljava/lang/Object;)I
}

public final class com/toasttab/protokt/ext/OptimizedSizeofConverter$DefaultImpls {
public static fun getAcceptsDefaultValue (Lcom/toasttab/protokt/ext/OptimizedSizeofConverter;)Z
}

public abstract class protokt/v1/AbstractConverter : protokt/v1/Converter {
public fun <init> ()V
public fun getAcceptsDefaultValue ()Z
public final fun getWrapped ()Lkotlin/reflect/KClass;
public final fun getWrapper ()Lkotlin/reflect/KClass;
}

public abstract interface class protokt/v1/Converter {
public abstract fun getAcceptsDefaultValue ()Z
public fun getAcceptsDefaultValue ()Z
public abstract fun getWrapped ()Lkotlin/reflect/KClass;
public abstract fun getWrapper ()Lkotlin/reflect/KClass;
public abstract fun unwrap (Ljava/lang/Object;)Ljava/lang/Object;
public abstract fun wrap (Ljava/lang/Object;)Ljava/lang/Object;
}

public final class protokt/v1/Converter$DefaultImpls {
public static fun getAcceptsDefaultValue (Lprotokt/v1/Converter;)Z
}

public abstract interface class protokt/v1/OptimizedSizeOfConverter : protokt/v1/Converter {
public abstract fun sizeOf (Ljava/lang/Object;)I
}

public final class protokt/v1/OptimizedSizeOfConverter$DefaultImpls {
public static fun getAcceptsDefaultValue (Lprotokt/v1/OptimizedSizeOfConverter;)Z
}

Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@

package com.toasttab.protokt.ext

import protokt.v1.Converter
import kotlin.reflect.KClass

@Deprecated("for backwards compatibility only")
interface Converter<S : Any, T : Any> : Converter<T, S>
interface Converter<S : Any, T : Any> {
val wrapper: KClass<S>

val wrapped: KClass<T>

fun wrap(unwrapped: T): S

fun unwrap(wrapped: S): T
}
Loading

0 comments on commit eeb79a6

Please sign in to comment.