Files
kotlin-fork/compiler/testData/resolve/Projections.resolve
T
Mikhail Glukhikh 53d6ac24e5 Switch kotlin version to 1.7
* Change 1.6 to 1.7 constants
* Fix SAFE_CALL_WILL_CHANGE_NULLABILITY for testData
* Change EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING to EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR
* Change NON_EXHAUSTIVE_WHEN_STATEMENT to NO_ELSE_IN_WHEN
* Fix testData for SafeCallsAreAlwaysNullable
* Change T -> T & Any in test dumps
* Change INVALID_CHARACTERS_NATIVE_WARNING -> INVALID_CHARACTERS_NATIVE_ERROR
* TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_WARNING -> TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM_ERROR
2022-02-25 11:46:27 +00:00

56 lines
1.5 KiB
Plaintext
Vendored

class In<in T>() {
~In.f:T->Unit~fun f(t : T) : Unit {}
~In.f:Int->Int~fun f(t : Int) : Int {}
~In.f1~fun f1(t : T) : Unit {}
}
class Out<out T>() {
~Out.f~fun f() : T {}
~Out.f(a)~fun f(a : Int) : Int {a}
}
class Inv<T>() {
~Inv.f~fun f(t : T) : T {t}
~Inv.inf~fun inf(t : T) : Unit {}
~Inv.outf~fun outf() : T {}
}
fun testInOut() {
In<String>().`In.f:T->Unit`f("1");
(return as In<in String>).`In.f:T->Unit`f("1");
(return as In<out String>).f("1")
(return as In<*>).f("1");
In<String>().`In.f:Int->Int`f(1);
(return as In<in String>).`In.f:Int->Int`f(1);
(return as In<out String>).`In.f:Int->Int`f(1)
(return as In<out String>).`In.f1`f1(1)
(return as In<*>).`In.f:Int->Int`f(1);
Out<Int>().`Out.f(a)`f(1)
(return as Out<out Int>).`Out.f(a)`f(1)
(return as Out<in Int>).`Out.f(a)`f(1)
(return as Out<*>).`Out.f(a)`f(1)
Out<Int>().`Out.f`f()
(return as Out<out Int>).`Out.f`f()
(return as Out<in Int>).`Out.f`f()
(return as Out<*>).`Out.f`f()
Inv<Int>().`Inv.f`f(1)
(return as Inv<in Int>).`Inv.f`f(1)
(return as Inv<out Int>).`Inv.f`f(1)
(return as Inv<*>).`Inv.f`f(1)
Inv<Int>().`Inv.inf`inf(1)
(return as Inv<in Int>).`Inv.inf`inf(1)
(return as Inv<out Int>).`Inv.inf`inf(1)
(return as Inv<*>).`Inv.inf`inf(1)
Inv<Int>().`Inv.outf`outf()
((return as Inv<in Int>).`Inv.outf`outf())`:kotlin::Any`
(return as Inv<out Int>).`Inv.outf`outf()
(return as Inv<*>).`Inv.outf`outf()
Inv<Int>().`Inv.outf`outf(1)
}