usageOfResultTypeInReturnType.fir.kt 3.0 KB
Newer Older
1
// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION, -UNUSED_VARIABLE
2
// !LANGUAGE: +InlineClasses -AllowResultInReturnType, -JvmInlineValueClasses
3 4 5 6 7 8 9 10 11 12 13

typealias ResultAlias<T> = Result<T>

inline class InlineResult<out T>(private val r: Result<T>)

fun params(
    r1: Result<Int>,
    r2: Result<Int>?,
    r3: ResultAlias<String>,
    r4: List<Result<Int>>,
    r5: InlineResult<Int>,
14
    <!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> r6: Result<Int>
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
) {}

class CtorParams(r1: Result<Int>)

fun returnTypePublic(): Result<Int> = TODO()
internal fun returnTypeInternal(): Result<Int> = TODO()
private fun returnTypePrivate(): Result<Int> = TODO()
fun returnTypeNullable(): Result<Int>? = TODO()
fun returnTypeAlias(): ResultAlias<Int> = TODO()
fun returnInferred(r1: Result<Int>, r2: ResultAlias<Int>, b: Boolean) = if (b) r1 else r2

fun returnTypeInline(): InlineResult<Int> = TODO()
fun returnContainer(): List<Result<Int>> = TODO()

val topLevelP: Result<Int> = TODO()
val topLevelPInferred = topLevelP
internal val topLevelPInternal: Result<Int> = TODO()

private val topLevelPPrivate: Result<Int> = TODO()
private val topLevelPPrivateInferred = topLevelP

private val topLevelPPrivateCustomGetter: Result<Int>
    get() = TODO()

val asFunctional: () -> Result<Int> = TODO()

open class PublicCls(
    val r1: Result<String>,
    val r2: Result<Int>?,
    val r3: ResultAlias<Int>,
    val r4: ResultAlias<Int>?,

    val r5: InlineResult<Int>,

    internal val r6: Result<Int>,

    private val r7: Result<Int>,
    val r8: List<Result<Int>>
) {
    val p1: Result<Int> = TODO()
    var p2: Result<Int> = TODO()
    val p3: ResultAlias<Int>? = TODO()

    val p4 = p1

    internal val p5: Result<Int> = TODO()

    private var p6: Result<Int> = TODO()

    internal val p7 = p1
    protected val p8 = p1

    fun returnInCls(): Result<Int> = TODO()
    protected fun returnInClsProtected(): Result<Int> = TODO()
    private fun returnInClsPrivate(): Result<Int> = TODO()
}

internal open class InternalCls(
    val r1: Result<Int>,
    val r2: ResultAlias<Int>?,

    val r3: List<Result<Int>>
) {
    companion object {
        val cr1: Result<Int> = TODO()

        private val cr2: Result<Int> = TODO()
    }

    val p1 = r1
    val p2: Result<String> = TODO()

    protected val p3 = p1

    fun returnInInternal(): Result<Int> = TODO()
    protected fun returnInClsProtected(): Result<Int> = TODO()
}

private class PrivateCls(
    val r1: Result<Int>,
    val r2: ResultAlias<Int>?,
    val r3: List<Result<Int>>
) {
    companion object {
        val cr1: Result<Int> = TODO()
        private val cr2: Result<Int> = TODO()
    }

    val p1 = r1
    val p2: Result<String> = TODO()

    fun returnInPrivate(): Result<Int> = TODO()
}

fun local(r: Result<Int>) {
    val l1: Result<Int>? = null
    val l2 = r

    fun localFun(): Result<Int> = TODO()

    class F {
        val p1: Result<Int> = r
        val p2 = r
    }
}

fun <T> resultInGenericFun(r: Result<Int>): T = r as T

val asFunPublic: () -> Result<Int> = TODO()
private val asFun: () -> Result<Int>? = TODO()