fun javaToKotlinType()

in compiler/src/main/kotlin/motif/compiler/KotlinTypeWorkaround.kt [39:74]


  fun javaToKotlinType(
      className: com.squareup.kotlinpoet.ClassName,
      env: XProcessingEnv?,
  ): TypeName = javaToKotlinType(className as TypeName, env)

  private fun asTypeName(mirror: XType): TypeName = mirror.typeName.toKTypeName()

  /** https://github.com/square/kotlinpoet/issues/236#issuecomment-437961476 */
  private fun javaToKotlinType(typeName: TypeName, env: XProcessingEnv?): TypeName =
      when (typeName) {
        is ParameterizedTypeName ->
            (javaToKotlinType(typeName.rawType, null) as com.squareup.kotlinpoet.ClassName)
                .parameterizedBy(
                    *typeName.typeArguments.map { javaToKotlinType(it, env) }.toTypedArray(),
                )
        is WildcardTypeName ->
            when {
              typeName.inTypes.isNotEmpty() ->
                  WildcardTypeName.consumerOf(javaToKotlinType(typeName.inTypes.single(), env))
              typeName.outTypes.isNotEmpty() ->
                  WildcardTypeName.producerOf(javaToKotlinType(typeName.outTypes.single(), env))
              else -> throw IllegalStateException()
            }
        is TypeVariableName -> STAR
        else -> {
          val className =
              JavaToKotlinClassMap.INSTANCE.mapJavaToKotlin(FqName(typeName.toString()))
                  ?.asSingleFqName()
                  ?.asString()
          if (className == null) {
            typeName.withRawTypeFix(env)
          } else {
            com.squareup.kotlinpoet.ClassName.bestGuess(className)
          }
        }
      }