Skip to content

Commit 4c938ac

Browse files
renovate[bot]egorikftp
authored andcommitted
Update Kotlin 2.2.0, update compose destinations
1 parent 5b75a3b commit 4c938ac

File tree

7 files changed

+37
-35
lines changed

7 files changed

+37
-35
lines changed

example/content/src/commonMain/kotlin/composegears/tiamat/example/content/content/advanced/AdvSharedElementTransition.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private val AdvSharedElementTransitionScreen1 by navDestination<Unit> {
6868
"This is SHARED element on screen 1",
6969
modifier = Modifier
7070
.sharedElement(
71-
state = rememberSharedContentState("element"),
71+
sharedContentState = rememberSharedContentState("element"),
7272
animatedVisibilityScope = this@navDestination,
7373
)
7474
.renderInSharedTransitionScopeOverlay()
@@ -100,7 +100,7 @@ private val AdvSharedElementTransitionScreen2 by navDestination<Unit> {
100100
"This is SHARED element on screen 2",
101101
modifier = Modifier
102102
.sharedElement(
103-
state = rememberSharedContentState("element"),
103+
sharedContentState = rememberSharedContentState("element"),
104104
animatedVisibilityScope = this@navDestination,
105105
)
106106
.renderInSharedTransitionScopeOverlay()
@@ -140,7 +140,7 @@ private val AdvSharedElementTransitionScreen3 by navDestination<Unit> {
140140
"This is SHARED element on screen 3",
141141
modifier = Modifier
142142
.sharedElement(
143-
state = rememberSharedContentState("element"),
143+
sharedContentState = rememberSharedContentState("element"),
144144
animatedVisibilityScope = this@navDestination,
145145
)
146146
.renderInSharedTransitionScopeOverlay()

gradle/libs.versions.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
[versions]
2-
agp = "8.9.2"
2+
agp = "8.9.3"
33
android-compileSdk = "35"
44
android-minSdk = "21"
55
android-targetSdk = "35"
66

77
detekt = "1.23.8"
8-
jetbrains-compose = "1.8.1"
9-
kotlin = "2.1.21"
8+
jetbrains-compose = "1.8.2"
9+
kotlin = "2.2.0"
1010

1111
[libraries]
1212
androidx-activity-compose = "androidx.activity:activity-compose:1.10.1"
1313
androidx-camera-camera2 = "androidx.camera:camera-camera2:1.4.2"
1414
androidx-camera-lifecycle = "androidx.camera:camera-lifecycle:1.4.2"
1515
androidx-camera-view = "androidx.camera:camera-view:1.4.2"
16-
androidx-concurrent-futures = "androidx.concurrent:concurrent-futures-ktx:1.2.0"
17-
androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.9.1"
16+
androidx-concurrent-futures = "androidx.concurrent:concurrent-futures-ktx:1.3.0"
17+
androidx-lifecycle-runtime = "androidx.lifecycle:lifecycle-runtime-ktx:2.9.2"
1818

19-
detekt-compose = "io.nlopez.compose.rules:detekt:0.4.22"
19+
detekt-compose = "io.nlopez.compose.rules:detekt:0.4.26"
2020
detekt-formatting = { module = "io.gitlab.arturbosch.detekt:detekt-formatting", version.ref = "detekt" }
2121

2222
koin-compose = "io.insert-koin:koin-compose:4.1.0"
@@ -26,12 +26,12 @@ kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotl
2626
kotlin-compiler-embeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" }
2727
kotlin-gradle-plugin-api = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api", version.ref = "kotlin" }
2828

29-
zacsweers-kctfork = "dev.zacsweers.kctfork:core:0.7.1"
29+
zacsweers-kctfork = "dev.zacsweers.kctfork:core:0.8.0"
3030

3131
[plugins]
3232
android-application = { id = "com.android.application", version.ref = "agp" }
3333
android-library = { id = "com.android.library", version.ref = "agp" }
34-
binary-compatibility = "org.jetbrains.kotlinx.binary-compatibility-validator:0.17.0"
34+
binary-compatibility = "org.jetbrains.kotlinx.binary-compatibility-validator:0.18.1"
3535
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
3636
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
3737
jetbrains-compose = { id = "org.jetbrains.compose", version.ref = "jetbrains-compose" }

tiamat-destinations-compiler/compiler-plugin/src/main/kotlin/com/composegears/tiamat/destinations/TiamatDestinationsIrGenerationExtension.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
77
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
88
import org.jetbrains.kotlin.descriptors.Modality
99
import org.jetbrains.kotlin.ir.IrStatement
10-
import org.jetbrains.kotlin.ir.backend.js.utils.valueArguments
1110
import org.jetbrains.kotlin.ir.builders.*
1211
import org.jetbrains.kotlin.ir.builders.declarations.addFunction
1312
import org.jetbrains.kotlin.ir.declarations.IrClass
@@ -17,16 +16,14 @@ import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
1716
import org.jetbrains.kotlin.ir.expressions.IrClassReference
1817
import org.jetbrains.kotlin.ir.expressions.IrExpression
1918
import org.jetbrains.kotlin.ir.expressions.IrGetValue
20-
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
21-
import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
22-
import org.jetbrains.kotlin.ir.symbols.IrSymbol
23-
import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI
19+
import org.jetbrains.kotlin.ir.symbols.*
2420
import org.jetbrains.kotlin.ir.types.classFqName
2521
import org.jetbrains.kotlin.ir.types.classOrNull
2622
import org.jetbrains.kotlin.ir.types.defaultType
2723
import org.jetbrains.kotlin.ir.types.typeWith
2824
import org.jetbrains.kotlin.ir.util.isObject
2925
import org.jetbrains.kotlin.ir.util.isSubtypeOfClass
26+
import org.jetbrains.kotlin.ir.util.isVararg
3027
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
3128
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
3229
import org.jetbrains.kotlin.name.CallableId
@@ -81,15 +78,15 @@ class TiamatDestinationsIrGenerationExtension(val logger: Logger) : IrGeneration
8178
override fun visitProperty(declaration: IrProperty): IrStatement {
8279
declaration.annotations
8380
.filter { it.type.classFqName == installInAnnotation }
84-
.mapNotNull { it.valueArguments.firstOrNull()?.extractContainerClass()?.symbol }
81+
.mapNotNull { it.arguments.firstOrNull()?.extractContainerClass()?.symbol }
8582
.onEach { annotatedElements.getOrPut(it) { mutableListOf() }.add(declaration.symbol) }
8683
return super.visitProperty(declaration)
8784
}
8885

8986
override fun visitClass(declaration: IrClass): IrStatement {
9087
declaration.annotations
9188
.filter { it.type.classFqName == installInAnnotation }
92-
.mapNotNull { it.valueArguments.firstOrNull()?.extractContainerClass()?.symbol }
89+
.mapNotNull { it.arguments.firstOrNull()?.extractContainerClass()?.symbol }
9390
.onEach { annotatedElements.getOrPut(it) { mutableListOf() }.add(declaration.symbol) }
9491
return super.visitClass(declaration)
9592
}
@@ -173,7 +170,7 @@ class TiamatDestinationsIrGenerationExtension(val logger: Logger) : IrGeneration
173170
pluginContext: IrPluginContext
174171
) {
175172
val navDestinationType = pluginContext.referenceClass(
176-
ClassId(FqName("com.composegears.tiamat.navigation"), Name.identifier("NavDestination"))
173+
ClassId(FqName("com.composegears.tiamat"), Name.identifier("NavDestination"))
177174
)!!
178175

179176
// Remove defined function (cover from those who may try to override by their own)
@@ -193,12 +190,6 @@ class TiamatDestinationsIrGenerationExtension(val logger: Logger) : IrGeneration
193190
val irBuilder = DeclarationIrBuilder(pluginContext, this.symbol)
194191

195192
body = irBuilder.irBlockBody {
196-
val arrayOfCall = irCall(
197-
callee = pluginContext.referenceFunctions(
198-
CallableId(FqName("kotlin"), Name.identifier("arrayOf"))
199-
).first(),
200-
type = pluginContext.irBuiltIns.arrayClass.typeWith(navDestinationType.defaultType)
201-
)
202193
// Add each annotated element to the array
203194
val args: List<IrExpression> = elements.mapNotNull { symbol ->
204195
when (symbol) {
@@ -214,17 +205,26 @@ class TiamatDestinationsIrGenerationExtension(val logger: Logger) : IrGeneration
214205
else -> null
215206
}
216207
}
217-
218-
arrayOfCall.putTypeArgument(0, navDestinationType.defaultType)
219-
arrayOfCall.putValueArgument(0, irVararg(navDestinationType.defaultType, args))
208+
val arrayOfCall = irCall(findArrayOfSymbol(pluginContext))
209+
arrayOfCall.typeArguments[0] = navDestinationType.defaultType
210+
arrayOfCall.arguments[0] = irVararg(navDestinationType.defaultType, args)
220211
+irReturn(arrayOfCall)
221212
}
222213
}
223214
}
224215

216+
private fun findArrayOfSymbol(pluginContext: IrPluginContext): IrSimpleFunctionSymbol {
217+
val callableId = CallableId(FqName("kotlin"), Name.identifier("arrayOf"))
218+
// find `arrayOf<T>(vararg elements: T)`
219+
return pluginContext.referenceFunctions(callableId).singleOrNull {
220+
val params = it.owner.parameters
221+
params.size == 1 && params[0].isVararg
222+
} ?: error("arrayOf function not found")
223+
}
224+
225225
private fun isValidAnnotationTarget(symbol: IrSymbol, pluginContext: IrPluginContext): Boolean {
226226
val navDestinationType = pluginContext.referenceClass(
227-
ClassId(FqName("com.composegears.tiamat.navigation"), Name.identifier("NavDestination"))
227+
ClassId(FqName("com.composegears.tiamat"), Name.identifier("NavDestination"))
228228
)!!
229229
return when (symbol) {
230230
is IrPropertySymbol -> {

tiamat-destinations/api/android/tiamat-destinations.api

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public abstract interface annotation class com/composegears/tiamat/destinations/
77
}
88

99
public abstract interface class com/composegears/tiamat/destinations/TiamatGraph {
10-
public abstract fun destinations ()[Lcom/composegears/tiamat/NavDestination;
11-
public abstract fun plus (Lcom/composegears/tiamat/destinations/TiamatGraph;)Lcom/composegears/tiamat/destinations/TiamatGraph;
10+
public fun destinations ()[Lcom/composegears/tiamat/NavDestination;
11+
public fun plus (Lcom/composegears/tiamat/destinations/TiamatGraph;)Lcom/composegears/tiamat/destinations/TiamatGraph;
1212
}
1313

1414
public final class com/composegears/tiamat/destinations/TiamatGraph$DefaultImpls {

tiamat-destinations/api/jvm/tiamat-destinations.api

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ public abstract interface annotation class com/composegears/tiamat/destinations/
77
}
88

99
public abstract interface class com/composegears/tiamat/destinations/TiamatGraph {
10-
public abstract fun destinations ()[Lcom/composegears/tiamat/NavDestination;
11-
public abstract fun plus (Lcom/composegears/tiamat/destinations/TiamatGraph;)Lcom/composegears/tiamat/destinations/TiamatGraph;
10+
public fun destinations ()[Lcom/composegears/tiamat/NavDestination;
11+
public fun plus (Lcom/composegears/tiamat/destinations/TiamatGraph;)Lcom/composegears/tiamat/destinations/TiamatGraph;
1212
}
1313

1414
public final class com/composegears/tiamat/destinations/TiamatGraph$DefaultImpls {

tiamat/api/android/tiamat.api

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public final class com/composegears/tiamat/ComposeKt {
2424

2525
public abstract interface class com/composegears/tiamat/ContentExtension : com/composegears/tiamat/Extension {
2626
public abstract fun Content (Lcom/composegears/tiamat/NavDestinationScope;Landroidx/compose/runtime/Composer;I)V
27-
public abstract fun getType ()Lcom/composegears/tiamat/ContentExtension$Type;
27+
public fun getType ()Lcom/composegears/tiamat/ContentExtension$Type;
2828
}
2929

3030
public final class com/composegears/tiamat/ContentExtension$DefaultImpls {
@@ -140,6 +140,7 @@ public final class com/composegears/tiamat/NavDestinationKt {
140140

141141
public abstract class com/composegears/tiamat/NavDestinationScope : androidx/compose/animation/AnimatedVisibilityScope {
142142
public static final field $stable I
143+
public fun animateEnterExit (Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;)Landroidx/compose/ui/Modifier;
143144
}
144145

145146
public final class com/composegears/tiamat/NavEntry : com/composegears/tiamat/Route$Element {

tiamat/api/jvm/tiamat.api

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public final class com/composegears/tiamat/ComposeKt {
2424

2525
public abstract interface class com/composegears/tiamat/ContentExtension : com/composegears/tiamat/Extension {
2626
public abstract fun Content (Lcom/composegears/tiamat/NavDestinationScope;Landroidx/compose/runtime/Composer;I)V
27-
public abstract fun getType ()Lcom/composegears/tiamat/ContentExtension$Type;
27+
public fun getType ()Lcom/composegears/tiamat/ContentExtension$Type;
2828
}
2929

3030
public final class com/composegears/tiamat/ContentExtension$DefaultImpls {
@@ -146,6 +146,7 @@ public final class com/composegears/tiamat/NavDestinationKt {
146146

147147
public abstract class com/composegears/tiamat/NavDestinationScope : androidx/compose/animation/AnimatedVisibilityScope {
148148
public static final field $stable I
149+
public fun animateEnterExit (Landroidx/compose/ui/Modifier;Landroidx/compose/animation/EnterTransition;Landroidx/compose/animation/ExitTransition;Ljava/lang/String;)Landroidx/compose/ui/Modifier;
149150
}
150151

151152
public final class com/composegears/tiamat/NavEntry : com/composegears/tiamat/Route$Element {

0 commit comments

Comments
 (0)