Skip to content

Commit

Permalink
Allow duplicate configurations as an experimental feature
Browse files Browse the repository at this point in the history
  • Loading branch information
arkivanov committed Jul 1, 2024
1 parent 82275b3 commit 449ebc4
Show file tree
Hide file tree
Showing 28 changed files with 845 additions and 143 deletions.
38 changes: 34 additions & 4 deletions decompose/api/android/decompose.api
Original file line number Diff line number Diff line change
Expand Up @@ -5,34 +5,57 @@ public abstract interface class com/arkivanov/decompose/Cancellation {
public abstract class com/arkivanov/decompose/Child {
public abstract fun getConfiguration ()Ljava/lang/Object;
public abstract fun getInstance ()Ljava/lang/Object;
public abstract fun getKey-LXPJe6Q ()Ljava/lang/Object;
}

public final class com/arkivanov/decompose/Child$Created : com/arkivanov/decompose/Child {
public fun <init> (Ljava/lang/Object;Ljava/lang/Object;)V
public synthetic fun <init> (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/Object;
public final fun component2 ()Ljava/lang/Object;
public final fun copy (Ljava/lang/Object;Ljava/lang/Object;)Lcom/arkivanov/decompose/Child$Created;
public static synthetic fun copy$default (Lcom/arkivanov/decompose/Child$Created;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Lcom/arkivanov/decompose/Child$Created;
public final fun component3-LXPJe6Q ()Ljava/lang/Object;
public final synthetic fun copy (Ljava/lang/Object;Ljava/lang/Object;)Lcom/arkivanov/decompose/Child;
public final fun copy-qAgt5DY (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/arkivanov/decompose/Child$Created;
public static synthetic fun copy-qAgt5DY$default (Lcom/arkivanov/decompose/Child$Created;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Lcom/arkivanov/decompose/Child$Created;
public fun equals (Ljava/lang/Object;)Z
public fun getConfiguration ()Ljava/lang/Object;
public fun getInstance ()Ljava/lang/Object;
public fun getKey-LXPJe6Q ()Ljava/lang/Object;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/arkivanov/decompose/Child$Destroyed : com/arkivanov/decompose/Child {
public fun <init> (Ljava/lang/Object;)V
public synthetic fun <init> (Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/Object;
public final fun copy (Ljava/lang/Object;)Lcom/arkivanov/decompose/Child$Destroyed;
public static synthetic fun copy$default (Lcom/arkivanov/decompose/Child$Destroyed;Ljava/lang/Object;ILjava/lang/Object;)Lcom/arkivanov/decompose/Child$Destroyed;
public final fun component2-LXPJe6Q ()Ljava/lang/Object;
public final synthetic fun copy (Ljava/lang/Object;)Lcom/arkivanov/decompose/Child;
public final fun copy-21uEA-E (Ljava/lang/Object;Ljava/lang/Object;)Lcom/arkivanov/decompose/Child$Destroyed;
public static synthetic fun copy-21uEA-E$default (Lcom/arkivanov/decompose/Child$Destroyed;Ljava/lang/Object;Ljava/lang/Object;ILjava/lang/Object;)Lcom/arkivanov/decompose/Child$Destroyed;
public fun equals (Ljava/lang/Object;)Z
public fun getConfiguration ()Ljava/lang/Object;
public synthetic fun getInstance ()Ljava/lang/Object;
public fun getInstance ()Ljava/lang/Void;
public fun getKey-LXPJe6Q ()Ljava/lang/Object;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/arkivanov/decompose/ChildKey {
public static final synthetic fun box-impl (Ljava/lang/Object;)Lcom/arkivanov/decompose/ChildKey;
public static fun constructor-impl (Ljava/lang/Object;)Ljava/lang/Object;
public fun equals (Ljava/lang/Object;)Z
public static fun equals-impl (Ljava/lang/Object;Ljava/lang/Object;)Z
public static final fun equals-impl0 (Ljava/lang/Object;Ljava/lang/Object;)Z
public final fun getValue ()Ljava/lang/Object;
public fun hashCode ()I
public static fun hashCode-impl (Ljava/lang/Object;)I
public fun toString ()Ljava/lang/String;
public static fun toString-impl (Ljava/lang/Object;)Ljava/lang/String;
public final synthetic fun unbox-impl ()Ljava/lang/Object;
}

public abstract interface class com/arkivanov/decompose/ComponentContext : com/arkivanov/decompose/GenericComponentContext {
}

Expand All @@ -49,6 +72,12 @@ public abstract interface class com/arkivanov/decompose/ComponentContextFactoryO
public abstract fun getComponentContextFactory ()Lcom/arkivanov/decompose/ComponentContextFactory;
}

public final class com/arkivanov/decompose/DecomposeExperimentFlags {
public static final field INSTANCE Lcom/arkivanov/decompose/DecomposeExperimentFlags;
public final fun getDuplicateConfigurationsEnabled ()Z
public final fun setDuplicateConfigurationsEnabled (Z)V
}

public final class com/arkivanov/decompose/DeeplinkUtilsKt {
public static final fun handleDeepLink (Landroid/app/Activity;Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;
}
Expand Down Expand Up @@ -270,6 +299,7 @@ public final class com/arkivanov/decompose/router/stack/ChildStack {
public fun <init> (Lcom/arkivanov/decompose/Child$Created;Ljava/util/List;)V
public synthetic fun <init> (Lcom/arkivanov/decompose/Child$Created;Ljava/util/List;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/Object;Ljava/lang/Object;)V
public synthetic fun <init> (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lcom/arkivanov/decompose/Child$Created;
public final fun component2 ()Ljava/util/List;
public final fun copy (Lcom/arkivanov/decompose/Child$Created;Ljava/util/List;)Lcom/arkivanov/decompose/router/stack/ChildStack;
Expand Down
30 changes: 28 additions & 2 deletions decompose/api/decompose.klib.api
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ final class <#A: out kotlin/Any, #B: out kotlin/Any> com.arkivanov.decompose.rou
}
final class <#A: out kotlin/Any, #B: out kotlin/Any> com.arkivanov.decompose.router.stack/ChildStack { // com.arkivanov.decompose.router.stack/ChildStack|null[0]
constructor <init>(#A, #B) // com.arkivanov.decompose.router.stack/ChildStack.<init>|<init>(1:0;1:1){}[0]
constructor <init>(#A, #B, com.arkivanov.decompose/ChildKey) // com.arkivanov.decompose.router.stack/ChildStack.<init>|<init>(1:0;1:1;com.arkivanov.decompose.ChildKey){}[0]
constructor <init>(com.arkivanov.decompose/Child.Created<#A, #B>, kotlin.collections/List<com.arkivanov.decompose/Child.Created<#A, #B>> = ...) // com.arkivanov.decompose.router.stack/ChildStack.<init>|<init>(com.arkivanov.decompose.Child.Created<1:0,1:1>;kotlin.collections.List<com.arkivanov.decompose.Child.Created<1:0,1:1>>){}[0]
final fun component1(): com.arkivanov.decompose/Child.Created<#A, #B> // com.arkivanov.decompose.router.stack/ChildStack.component1|component1(){}[0]
final fun component2(): kotlin.collections/List<com.arkivanov.decompose/Child.Created<#A, #B>> // com.arkivanov.decompose.router.stack/ChildStack.component2|component2(){}[0]
Expand Down Expand Up @@ -233,6 +234,11 @@ final inline fun <#A: kotlin/Any> (com.arkivanov.decompose.router.stack/StackNav
final inline fun <#A: kotlin/Any> (com.arkivanov.decompose.router.stack/StackNavigator<#A>).com.arkivanov.decompose.router.stack/pushToFront(#A, crossinline kotlin/Function0<kotlin/Unit> = ...) // com.arkivanov.decompose.router.stack/pushToFront|[email protected]<0:0>(0:0;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>}[0]
final inline fun <#A: kotlin/Any> (com.arkivanov.decompose.router.stack/StackNavigator<#A>).com.arkivanov.decompose.router.stack/replaceAll(kotlin/Array<out #A>..., crossinline kotlin/Function0<kotlin/Unit> = ...) // com.arkivanov.decompose.router.stack/replaceAll|[email protected]<0:0>(kotlin.Array<out|0:0>...;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>}[0]
final inline fun <#A: kotlin/Any> (com.arkivanov.decompose.router.stack/StackNavigator<#A>).com.arkivanov.decompose.router.stack/replaceCurrent(#A, crossinline kotlin/Function0<kotlin/Unit> = ...) // com.arkivanov.decompose.router.stack/replaceCurrent|replaceCurrent@com.arkivanov.decompose.router.stack.StackNavigator<0:0>(0:0;kotlin.Function0<kotlin.Unit>){0§<kotlin.Any>}[0]
final object com.arkivanov.decompose/DecomposeExperimentFlags { // com.arkivanov.decompose/DecomposeExperimentFlags|null[0]
final var duplicateConfigurationsEnabled // com.arkivanov.decompose/DecomposeExperimentFlags.duplicateConfigurationsEnabled|{}duplicateConfigurationsEnabled[0]
final fun <get-duplicateConfigurationsEnabled>(): kotlin/Boolean // com.arkivanov.decompose/DecomposeExperimentFlags.duplicateConfigurationsEnabled.<get-duplicateConfigurationsEnabled>|<get-duplicateConfigurationsEnabled>(){}[0]
final fun <set-duplicateConfigurationsEnabled>(kotlin/Boolean) // com.arkivanov.decompose/DecomposeExperimentFlags.duplicateConfigurationsEnabled.<set-duplicateConfigurationsEnabled>|<set-duplicateConfigurationsEnabled>(kotlin.Boolean){}[0]
}
final val com.arkivanov.decompose.router.slot/child // com.arkivanov.decompose.router.slot/child|@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.slot.ChildSlot<0:0,0:1>>{0§<kotlin.Any>;1§<kotlin.Any>}child[0]
final fun <#A1: kotlin/Any, #B1: kotlin/Any> (com.arkivanov.decompose.value/Value<com.arkivanov.decompose.router.slot/ChildSlot<#A1, #B1>>).<get-child>(): com.arkivanov.decompose/Child.Created<#A1, #B1>? // com.arkivanov.decompose.router.slot/child.<get-child>|<get-child>@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.slot.ChildSlot<0:0,0:1>>(){0§<kotlin.Any>;1§<kotlin.Any>}[0]
final val com.arkivanov.decompose.router.stack/active // com.arkivanov.decompose.router.stack/active|@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.stack.ChildStack<0:0,0:1>>{0§<kotlin.Any>;1§<kotlin.Any>}active[0]
Expand All @@ -241,6 +247,14 @@ final val com.arkivanov.decompose.router.stack/backStack // com.arkivanov.decomp
final fun <#A1: kotlin/Any, #B1: kotlin/Any> (com.arkivanov.decompose.value/Value<com.arkivanov.decompose.router.stack/ChildStack<#A1, #B1>>).<get-backStack>(): kotlin.collections/List<com.arkivanov.decompose/Child.Created<#A1, #B1>> // com.arkivanov.decompose.router.stack/backStack.<get-backStack>|<get-backStack>@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.stack.ChildStack<0:0,0:1>>(){0§<kotlin.Any>;1§<kotlin.Any>}[0]
final val com.arkivanov.decompose.router.stack/items // com.arkivanov.decompose.router.stack/items|@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.stack.ChildStack<0:0,0:1>>{0§<kotlin.Any>;1§<kotlin.Any>}items[0]
final fun <#A1: kotlin/Any, #B1: kotlin/Any> (com.arkivanov.decompose.value/Value<com.arkivanov.decompose.router.stack/ChildStack<#A1, #B1>>).<get-items>(): kotlin.collections/List<com.arkivanov.decompose/Child.Created<#A1, #B1>> // com.arkivanov.decompose.router.stack/items.<get-items>|<get-items>@com.arkivanov.decompose.value.Value<com.arkivanov.decompose.router.stack.ChildStack<0:0,0:1>>(){0§<kotlin.Any>;1§<kotlin.Any>}[0]
final value class com.arkivanov.decompose/ChildKey { // com.arkivanov.decompose/ChildKey|null[0]
constructor <init>(kotlin/Any) // com.arkivanov.decompose/ChildKey.<init>|<init>(kotlin.Any){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // com.arkivanov.decompose/ChildKey.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // com.arkivanov.decompose/ChildKey.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // com.arkivanov.decompose/ChildKey.toString|toString(){}[0]
final val value // com.arkivanov.decompose/ChildKey.value|{}value[0]
final fun <get-value>(): kotlin/Any // com.arkivanov.decompose/ChildKey.value.<get-value>|<get-value>(){}[0]
}
final var com.arkivanov.decompose.errorhandler/onDecomposeError // com.arkivanov.decompose.errorhandler/onDecomposeError|{}onDecomposeError[0]
final fun <get-onDecomposeError>(): kotlin/Function1<kotlin/Exception, kotlin/Unit> // com.arkivanov.decompose.errorhandler/onDecomposeError.<get-onDecomposeError>|<get-onDecomposeError>(){}[0]
final fun <set-onDecomposeError>(kotlin/Function1<kotlin/Exception, kotlin/Unit>) // com.arkivanov.decompose.errorhandler/onDecomposeError.<set-onDecomposeError>|<set-onDecomposeError>(kotlin.Function1<kotlin.Exception,kotlin.Unit>){}[0]
Expand All @@ -258,31 +272,43 @@ sealed class <#A: out kotlin/Any, #B: out kotlin/Any> com.arkivanov.decompose/Ch
abstract fun <get-configuration>(): #A // com.arkivanov.decompose/Child.configuration.<get-configuration>|<get-configuration>(){}[0]
abstract val instance // com.arkivanov.decompose/Child.instance|{}instance[0]
abstract fun <get-instance>(): #B? // com.arkivanov.decompose/Child.instance.<get-instance>|<get-instance>(){}[0]
abstract val key // com.arkivanov.decompose/Child.key|{}key[0]
abstract fun <get-key>(): com.arkivanov.decompose/ChildKey // com.arkivanov.decompose/Child.key.<get-key>|<get-key>(){}[0]
constructor <init>() // com.arkivanov.decompose/Child.<init>|<init>(){}[0]
final class <#A1: out kotlin/Any, #B1: out kotlin/Any> Created : com.arkivanov.decompose/Child<#A1, #B1> { // com.arkivanov.decompose/Child.Created|null[0]
constructor <init>(#A1, #B1) // com.arkivanov.decompose/Child.Created.<init>|<init>(1:0;1:1){}[0]
constructor <init>(#A1, #B1, com.arkivanov.decompose/ChildKey) // com.arkivanov.decompose/Child.Created.<init>|<init>(1:0;1:1;com.arkivanov.decompose.ChildKey){}[0]
final fun component1(): #A1 // com.arkivanov.decompose/Child.Created.component1|component1(){}[0]
final fun component2(): #B1 // com.arkivanov.decompose/Child.Created.component2|component2(){}[0]
final fun copy(#A1 = ..., #B1 = ...): com.arkivanov.decompose/Child.Created<#A1, #B1> // com.arkivanov.decompose/Child.Created.copy|copy(1:0;1:1){}[0]
final fun component3(): com.arkivanov.decompose/ChildKey // com.arkivanov.decompose/Child.Created.component3|component3(){}[0]
final fun copy(#A1 = ..., #B1 = ..., com.arkivanov.decompose/ChildKey = ...): com.arkivanov.decompose/Child.Created<#A1, #B1> // com.arkivanov.decompose/Child.Created.copy|copy(1:0;1:1;com.arkivanov.decompose.ChildKey){}[0]
final fun copy(#A1, #B1): com.arkivanov.decompose/Child<#A1, #B1> // com.arkivanov.decompose/Child.Created.copy|copy(1:0;1:1){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // com.arkivanov.decompose/Child.Created.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // com.arkivanov.decompose/Child.Created.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // com.arkivanov.decompose/Child.Created.toString|toString(){}[0]
final val configuration // com.arkivanov.decompose/Child.Created.configuration|{}configuration[0]
final fun <get-configuration>(): #A1 // com.arkivanov.decompose/Child.Created.configuration.<get-configuration>|<get-configuration>(){}[0]
final val instance // com.arkivanov.decompose/Child.Created.instance|{}instance[0]
final fun <get-instance>(): #B1 // com.arkivanov.decompose/Child.Created.instance.<get-instance>|<get-instance>(){}[0]
final val key // com.arkivanov.decompose/Child.Created.key|{}key[0]
final fun <get-key>(): com.arkivanov.decompose/ChildKey // com.arkivanov.decompose/Child.Created.key.<get-key>|<get-key>(){}[0]
}
final class <#A1: out kotlin/Any> Destroyed : com.arkivanov.decompose/Child<#A1, kotlin/Nothing> { // com.arkivanov.decompose/Child.Destroyed|null[0]
constructor <init>(#A1) // com.arkivanov.decompose/Child.Destroyed.<init>|<init>(1:0){}[0]
constructor <init>(#A1, com.arkivanov.decompose/ChildKey) // com.arkivanov.decompose/Child.Destroyed.<init>|<init>(1:0;com.arkivanov.decompose.ChildKey){}[0]
final fun component1(): #A1 // com.arkivanov.decompose/Child.Destroyed.component1|component1(){}[0]
final fun copy(#A1 = ...): com.arkivanov.decompose/Child.Destroyed<#A1> // com.arkivanov.decompose/Child.Destroyed.copy|copy(1:0){}[0]
final fun component2(): com.arkivanov.decompose/ChildKey // com.arkivanov.decompose/Child.Destroyed.component2|component2(){}[0]
final fun copy(#A1 = ..., com.arkivanov.decompose/ChildKey = ...): com.arkivanov.decompose/Child.Destroyed<#A1> // com.arkivanov.decompose/Child.Destroyed.copy|copy(1:0;com.arkivanov.decompose.ChildKey){}[0]
final fun copy(#A1): com.arkivanov.decompose/Child<#A1, kotlin/Nothing> // com.arkivanov.decompose/Child.Destroyed.copy|copy(1:0){}[0]
final fun equals(kotlin/Any?): kotlin/Boolean // com.arkivanov.decompose/Child.Destroyed.equals|equals(kotlin.Any?){}[0]
final fun hashCode(): kotlin/Int // com.arkivanov.decompose/Child.Destroyed.hashCode|hashCode(){}[0]
final fun toString(): kotlin/String // com.arkivanov.decompose/Child.Destroyed.toString|toString(){}[0]
final val configuration // com.arkivanov.decompose/Child.Destroyed.configuration|{}configuration[0]
final fun <get-configuration>(): #A1 // com.arkivanov.decompose/Child.Destroyed.configuration.<get-configuration>|<get-configuration>(){}[0]
final val instance // com.arkivanov.decompose/Child.Destroyed.instance|{}instance[0]
final fun <get-instance>(): kotlin/Nothing? // com.arkivanov.decompose/Child.Destroyed.instance.<get-instance>|<get-instance>(){}[0]
final val key // com.arkivanov.decompose/Child.Destroyed.key|{}key[0]
final fun <get-key>(): com.arkivanov.decompose/ChildKey // com.arkivanov.decompose/Child.Destroyed.key.<get-key>|<get-key>(){}[0]
}
}
// Targets: [js, wasmJs]
Expand Down
Loading

0 comments on commit 449ebc4

Please sign in to comment.