// TARGET_BACKEND: JVM_IR // WITH_STDLIB // RENDER_DIAGNOSTICS_FULL_TEXT // ISSUE: KT-62525 // MODULE: m1 // FILE: Request.kt package com.request sealed class Result { class Success(val value: Success) : Result() class Error(val error: Error) : Result() inline fun mapError(transform: (Error) -> Mapped): Result = when (this) { is Result.Success -> this is Result.Error -> Error(transform(error)) } } fun request(success: T, error: U): Result { if (1 + 1 + 2 == 4) { return Result.Success(success) } else { return Result.Error(error) } } // MODULE: m2 // FILE: Result.kt package com.result class A {} sealed class B { class HttpError(val response: T) : B() {} class Exception(val exception: Throwable) : B() {} } class C {} class Owner { inner class Nested { inner class VeryNested } } // MODULE: m3(m1, m2) // FILE: Repo.kt package com.repo import com.request.Result import com.request.request import com.result.A import com.result.B import com.result.C import com.result.Owner import java.lang.RuntimeException fun request_a(): Result> { return request>(A(), B.Exception(RuntimeException("Error"))) } fun request_withNested(): Result.Nested, Owner.Nested.VeryNested> { return request.Nested, Owner.Nested.VeryNested>(Owner().Nested(), Owner().Nested().VeryNested()) } // MODULE: m4(m3, m1) // FILE: Call.kt package com.call import com.repo.request_a import com.repo.request_withNested class Model { fun call() { request_a().mapError { 1 + 1 } request_a().mapError { it -> 1 + 1 } request_withNested().mapError { 1 + 1 } } } fun simple(b: com.result.B<*>) {}