diff --git a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/commons/Utils.kt b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/commons/Utils.kt index b22d91be..0a905d30 100644 --- a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/commons/Utils.kt +++ b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/commons/Utils.kt @@ -249,7 +249,14 @@ fun KSValueParameter.toParameter( ) } -fun KSType.toGenVisibility(): Visibility { +fun Any.toGenVisibility(): Visibility { + // Enum entries in annotation arguments are evaluated as KSClassDeclaration instead of KSType in KSP2 + // https://github.com/google/ksp/blob/main/docs/ksp2api.md#evaluation-of-enum-entries-in-annotation-arguments + val declaration = when (this) { + is KSType -> declaration + is KSClassDeclaration -> this + else -> error("Unexpected type for 'visibility' param $this") + } return when (val visibility = declaration.simpleName.asString()) { "PUBLIC" -> Visibility.PUBLIC "INTERNAL" -> Visibility.INTERNAL diff --git a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenDestinationsMapper.kt b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenDestinationsMapper.kt index 65196ca2..71f9dbd8 100644 --- a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenDestinationsMapper.kt +++ b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenDestinationsMapper.kt @@ -204,7 +204,7 @@ internal class KspToCodeGenDestinationsMapper( } private fun KSAnnotation.getDestinationVisibility(): Visibility? { - return findArgumentValue("visibility")?.toGenVisibility() + return findArgumentValue("visibility")?.toGenVisibility() } private val activityType by lazy { diff --git a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenNavGraphsMapper.kt b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenNavGraphsMapper.kt index 9aaf6513..2ed8d7b3 100644 --- a/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenNavGraphsMapper.kt +++ b/compose-destinations-ksp/src/main/kotlin/com/ramcosta/composedestinations/ksp/processors/KspToCodeGenNavGraphsMapper.kt @@ -71,7 +71,7 @@ internal class KspToCodeGenNavGraphsMapper( val navGraphAnnotationNameArg = navGraphAnnotation .findArgumentValue(DESTINATION_ANNOTATION_ROUTE_ARGUMENT) val navGraphVisibility = navGraphAnnotation - .findArgumentValue("visibility")!! + .findArgumentValue("visibility")!! .toGenVisibility() val navGraphDefaultTransitions = navGraphAnnotation .findArgumentValue("defaultTransitions")