[tests] BI (1P&1TV/1TIO): add tests for basic cases
single builder parameter single postponed type variable single origin of type information relevant issues: KT-59551
This commit is contained in:
committed by
Space Team
parent
1eda35a59c
commit
b13a225949
+37
@@ -0,0 +1,37 @@
|
||||
// DIAGNOSTICS: -UNCHECKED_CAST
|
||||
|
||||
// CHECK_TYPE_WITH_EXACT
|
||||
|
||||
// ISSUE: KT-59551
|
||||
// (also see an analogous codegen test)
|
||||
|
||||
class Buildee<CT> {
|
||||
fun yield(arg: CT) {}
|
||||
fun materialize(): CT = UserKlass() as CT
|
||||
}
|
||||
|
||||
fun <FT> build(
|
||||
instructions: Buildee<FT>.() -> Unit
|
||||
): Buildee<FT> {
|
||||
return Buildee<FT>().apply(instructions)
|
||||
}
|
||||
|
||||
class UserKlass
|
||||
|
||||
// test 1: PTV is in consuming position (yield-case)
|
||||
fun testYield() {
|
||||
val arg: UserKlass = UserKlass()
|
||||
val buildee = build(fun(it) {
|
||||
it.yield(arg)
|
||||
})
|
||||
checkExactType<Buildee<UserKlass>>(buildee)
|
||||
}
|
||||
|
||||
// test 2: PTV is in producing position (materialize-case)
|
||||
fun testMaterialize() {
|
||||
fun consume(arg: UserKlass) {}
|
||||
val buildee = build(fun(it) {
|
||||
consume(it.materialize())
|
||||
})
|
||||
checkExactType<Buildee<UserKlass>>(buildee)
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
// DIAGNOSTICS: -UNCHECKED_CAST
|
||||
|
||||
// CHECK_TYPE_WITH_EXACT
|
||||
|
||||
// ISSUE: KT-59551
|
||||
// (also see an analogous codegen test)
|
||||
|
||||
class Buildee<CT> {
|
||||
fun yield(arg: CT) {}
|
||||
fun materialize(): CT = UserKlass() as CT
|
||||
}
|
||||
|
||||
fun <FT> build(
|
||||
instructions: Buildee<FT>.() -> Unit
|
||||
): Buildee<FT> {
|
||||
return Buildee<FT>().apply(instructions)
|
||||
}
|
||||
|
||||
class UserKlass
|
||||
|
||||
// test 1: PTV is in consuming position (yield-case)
|
||||
fun testYield() {
|
||||
val arg: UserKlass = UserKlass()
|
||||
val buildee = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!>(fun(it) {
|
||||
it.<!UNRESOLVED_REFERENCE!>yield<!>(arg)
|
||||
})
|
||||
checkExactType<Buildee<UserKlass>>(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>buildee<!>)
|
||||
}
|
||||
|
||||
// test 2: PTV is in producing position (materialize-case)
|
||||
fun testMaterialize() {
|
||||
fun consume(arg: UserKlass) {}
|
||||
val buildee = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>build<!>(fun(it) {
|
||||
consume(it.<!UNRESOLVED_REFERENCE!>materialize<!>())
|
||||
})
|
||||
checkExactType<Buildee<UserKlass>>(<!DEBUG_INFO_ELEMENT_WITH_ERROR_TYPE!>buildee<!>)
|
||||
}
|
||||
Reference in New Issue
Block a user