diff --git a/buildSrc/src/main/kotlin/androidLibrary.gradle.kts b/buildSrc/src/main/kotlin/androidLibrary.gradle.kts index 54cd2896..90886b18 100644 --- a/buildSrc/src/main/kotlin/androidLibrary.gradle.kts +++ b/buildSrc/src/main/kotlin/androidLibrary.gradle.kts @@ -90,6 +90,19 @@ tasks.withType() } } +// https://youtrack.jetbrains.com/issue/KT-37652 +tasks + .matching { it is KotlinCompile && !it.name.contains("test", ignoreCase = true) } + .configureEach { + val task = this + if (!project.hasProperty("kotlin.optOutExplicitApi")) { + val kotlinCompile = task as KotlinCompile + if ("-Xexplicit-api=strict" !in kotlinCompile.kotlinOptions.freeCompilerArgs) { + kotlinCompile.kotlinOptions.freeCompilerArgs += "-Xexplicit-api=strict" + } + } + } + tasks.withType { useJUnitPlatform() diff --git a/tangle-fragment-api/src/main/java/tangle/fragment/FragmentInject.kt b/tangle-fragment-api/src/main/java/tangle/fragment/FragmentInject.kt index f23a9833..dd459954 100644 --- a/tangle-fragment-api/src/main/java/tangle/fragment/FragmentInject.kt +++ b/tangle-fragment-api/src/main/java/tangle/fragment/FragmentInject.kt @@ -37,4 +37,4 @@ public annotation class ContributesFragment( ) @Retention(AnnotationRetention.RUNTIME) @MapKey -annotation class FragmentKey(val value: KClass) +public annotation class FragmentKey(val value: KClass) diff --git a/tangle-fragment-api/src/main/java/tangle/fragment/TangleFragmentFactory.kt b/tangle-fragment-api/src/main/java/tangle/fragment/TangleFragmentFactory.kt index ef0dbfc1..d1ca3ffd 100644 --- a/tangle-fragment-api/src/main/java/tangle/fragment/TangleFragmentFactory.kt +++ b/tangle-fragment-api/src/main/java/tangle/fragment/TangleFragmentFactory.kt @@ -4,7 +4,7 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentFactory import javax.inject.Provider -class TangleFragmentFactory( +public class TangleFragmentFactory( private val providerMap: Map, Provider<@JvmSuppressWildcards Fragment>>, @TangleFragmentProviderMap private val assistedProviderMap: Map, Provider<@JvmSuppressWildcards Fragment>> diff --git a/tangle-fragment-api/src/main/java/tangle/fragment/arg.kt b/tangle-fragment-api/src/main/java/tangle/fragment/arg.kt index 55e50cca..4f237e86 100644 --- a/tangle-fragment-api/src/main/java/tangle/fragment/arg.kt +++ b/tangle-fragment-api/src/main/java/tangle/fragment/arg.kt @@ -1,8 +1,8 @@ -package tangle.inject.api +package tangle.fragment import androidx.fragment.app.Fragment -fun Fragment.arg(bundleKey: String) = lazy { +public fun Fragment.arg(bundleKey: String): Lazy = lazy { @Suppress("UNCHECKED_CAST") (arguments?.get(bundleKey) as? A) ?: throw IllegalStateException("Bundle does not contain key: $bundleKey") diff --git a/tangle-viewmodel-api/src/main/java/tangle/viewmodel/TangleViewModelFactory.kt b/tangle-viewmodel-api/src/main/java/tangle/viewmodel/TangleViewModelFactory.kt index c57d0c3b..44cc8c44 100644 --- a/tangle-viewmodel-api/src/main/java/tangle/viewmodel/TangleViewModelFactory.kt +++ b/tangle-viewmodel-api/src/main/java/tangle/viewmodel/TangleViewModelFactory.kt @@ -24,7 +24,7 @@ import androidx.savedstate.SavedStateRegistryOwner import tangle.inject.InternalTangleApi @InternalTangleApi -class TangleViewModelFactory( +public class TangleViewModelFactory( owner: SavedStateRegistryOwner, defaultArgs: Bundle?, private val tangleViewModelKeys: Set>, @@ -65,9 +65,9 @@ class TangleViewModelFactory( } } - companion object { + public companion object { - operator fun invoke( + public operator fun invoke( owner: SavedStateRegistryOwner, defaultArgs: Bundle?, defaultFactory: ViewModelProvider.Factory diff --git a/tangle-viewmodel-api/src/main/java/tangle/viewmodel/ViewModelKey.kt b/tangle-viewmodel-api/src/main/java/tangle/viewmodel/ViewModelKey.kt index caabc094..ad7b69c6 100644 --- a/tangle-viewmodel-api/src/main/java/tangle/viewmodel/ViewModelKey.kt +++ b/tangle-viewmodel-api/src/main/java/tangle/viewmodel/ViewModelKey.kt @@ -27,4 +27,4 @@ import kotlin.reflect.KClass ) @Retention(AnnotationRetention.RUNTIME) @MapKey -annotation class ViewModelKey(val value: KClass) +public annotation class ViewModelKey(val value: KClass) diff --git a/tangle-viewmodel-compose/src/main/java/tangle/inject/compose/compose.kt b/tangle-viewmodel-compose/src/main/java/tangle/inject/compose/compose.kt index 3d9052d8..9ba1c66b 100644 --- a/tangle-viewmodel-compose/src/main/java/tangle/inject/compose/compose.kt +++ b/tangle-viewmodel-compose/src/main/java/tangle/inject/compose/compose.kt @@ -32,7 +32,7 @@ import tangle.viewmodel.tangle * the NavController back stack. */ @Composable -inline fun tangle( +public inline fun tangle( viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) { "No ViewModelStoreOwner was provided via LocalViewModelStoreOwner" }