[tests] Change builder inference tests in accordance with new K2 BI diagnostics

Related to KT-59369, KT-59390
This commit is contained in:
Stanislav Ruban
2023-12-02 17:41:55 +01:00
committed by Space Team
parent da0c3090a9
commit 7515efc52c
23 changed files with 37 additions and 134 deletions
@@ -2,9 +2,7 @@
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: ANY
// REASON: red code in K1 (see corresponding diagnostic test)
// REASON: compile-time failure in K2/JVM (java.lang.IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter PTV)
// REASON: compile-time failure in K2/Native, K2/WASM, K2/JS (org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed)
// REASON: red code (see corresponding diagnostic test)
fun box(): String {
val buildee = initializeAndBuild(
@@ -1,12 +1,9 @@
// ISSUE: KT-53740
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND_K1: ANY
// IGNORE_BACKEND: ANY
// REASON: red code (see corresponding diagnostic test)
// IGNORE_BACKEND_K2: JVM_IR, WASM
// REASON: run-time failure (java.lang.ClassCastException: TargetType cannot be cast to DifferentType @ Kt53740aKt$box$2.invoke)
fun box(): String {
parallelBuild(
{
@@ -1,12 +1,9 @@
// ISSUE: KT-53740
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND_K1: ANY
// IGNORE_BACKEND: ANY
// REASON: red code (see corresponding diagnostic test)
// IGNORE_BACKEND_K2: JVM_IR, WASM
// REASON: run-time failure (java.lang.ClassCastException: TargetType cannot be cast to DifferentType @ Kt53740bKt$box$2.invoke)
fun box(): String {
parallelInOutBuild(
{
@@ -1,7 +1,7 @@
// ISSUE: KT-59798
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND_K1: ANY
// IGNORE_BACKEND: ANY
// REASON: red code (see corresponding diagnostic test)
fun box(): String {
@@ -3,9 +3,7 @@
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: ANY
// REASON: red code in K1 (see corresponding diagnostic test)
// REASON: compile-time failure in K2/JVM (java.lang.IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter PTV)
// REASON: compile-time failure in K2/Native, K2/WASM, K2/JS (org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed)
// REASON: red code (see corresponding diagnostic test)
fun box(): String {
selectBuildee(
@@ -1,12 +1,9 @@
// ISSUE: KT-60291
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND_K1: ANY
// IGNORE_BACKEND: ANY
// REASON: red code (see corresponding diagnostic test)
// IGNORE_BACKEND_K2: NATIVE, WASM, JS_IR, JS_IR_ES6
// REASON: compile-time failure (org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed)
fun box(): String {
if (true)
build { setTypeVariable(TargetType()) }
@@ -2,9 +2,7 @@
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND: ANY
// REASON: red code in K1 (see corresponding diagnostic test)
// REASON: compile-time failure in K2/JVM (java.lang.IllegalStateException: Cannot serialize error type: ERROR CLASS: Cannot infer argument for type parameter PTV)
// REASON: compile-time failure in K2/Native, K2/WASM, K2/JS (org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode: Class found but error nodes are not allowed)
// REASON: red code (see corresponding diagnostic test)
fun box(): String {
when ("") {
@@ -1,12 +1,9 @@
// ISSUE: KT-63648
// IGNORE_LIGHT_ANALYSIS
// IGNORE_BACKEND_K1: ANY
// IGNORE_BACKEND: ANY
// REASON: red code (see corresponding diagnostic test)
// IGNORE_BACKEND_K2: JVM_IR, WASM
// REASON: run-time failure (java.lang.ClassCastException: TargetType cannot be cast to DifferentType @ Kt63648Kt$box$1.invoke)
fun box(): String {
build {
setTypeVariable(TargetType())
@@ -4,7 +4,7 @@
fun test() {
val buildee = build {
setTypeVariable(TargetType())
letForTypeVariable { it.<!OVERLOAD_RESOLUTION_AMBIGUITY!>extensionProduceConcreteType<!>() }
letForTypeVariable { it.<!NONE_APPLICABLE!>extensionProduceConcreteType<!>() }
}
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,8 +3,8 @@
fun test() {
val buildee = buildFromValue(
innerBuild { setInnerTypeVariable(TargetType()) },
{ it.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>placeholderExtensionInvokeOnInnerBuildee<!>() }
innerBuild <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ setInnerTypeVariable(TargetType()) }<!>,
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ <!BUILDER_INFERENCE_STUB_RECEIVER!>it.placeholderExtensionInvokeOnInnerBuildee()<!> }<!>
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,17 +3,17 @@
fun test() {
val buildee = stepByStepBuild(
{
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
it.<!UNRESOLVED_REFERENCE!>concreteTypeMemberProperty<!>
TargetType()
},
{
}<!>,
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
consumeTargetTypeBase(it)
}
}<!>
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
checkExactType<Buildee<TargetType>>(buildee)
checkExactType<Buildee<TargetType>>(<!ARGUMENT_TYPE_MISMATCH("Buildee<TargetType>; Buildee<TargetTypeBase>")!>buildee<!>)
}
@@ -3,12 +3,12 @@
fun test() {
val buildee = parallelBuild(
{
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
consumeTargetTypeBase(it)
},
{
}<!>,
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
consumeTargetType(it)
}
}<!>
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,8 +3,8 @@
fun test() {
val buildee = initializeAndBuild(
{ build { setTypeVariable(TargetType()) } },
{ placeholderExtensionInvokeOnBuildee() },
{ build <!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ setTypeVariable(TargetType()) }<!> },
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{ placeholderExtensionInvokeOnBuildee() }<!>,
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,12 +3,12 @@
fun test() {
val buildee = parallelBuild(
{
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
setTypeVariable(TargetType())
},
{
}<!>,
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
consumeDifferentType(getTypeVariable())
}
}<!>
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -3,12 +3,12 @@
fun test() {
val buildee = parallelInOutBuild(
{
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
setInProjectedTypeVariable(TargetType())
},
{
}<!>,
<!BUILDER_INFERENCE_MULTI_LAMBDA_RESTRICTION!>{
consumeDifferentType(getOutProjectedTypeVariable())
}
}<!>
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -4,7 +4,7 @@
fun test() {
val buildee = build {
setTypeVariable(TargetType())
getTypeVariable().let {}
<!BUILDER_INFERENCE_STUB_RECEIVER!>getTypeVariable().let {}<!>
}
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -24,4 +24,4 @@ class Buildee<TV> {
fun <PTV> build(instructions: Buildee<PTV>.() -> Unit): Buildee<PTV> {
return Buildee<PTV>().apply(instructions)
}
}
@@ -1,29 +0,0 @@
// ISSUE: KT-60291
// CHECK_TYPE_WITH_EXACT
// WITH_STDLIB
fun test() {
val buildee = selectBuildee(
build { setTypeVariable(TargetType()) },
build {}
)
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
checkExactType<Buildee<TargetType>>(buildee)
}
fun <T> selectBuildee(vararg values: Buildee<T>): Buildee<T> = values.first()
class TargetType
class Buildee<TV> {
fun setTypeVariable(value: TV) { storage = value }
private var storage: TV = null!!
}
fun <PTV> build(instructions: Buildee<PTV>.() -> Unit): Buildee<PTV> {
return Buildee<PTV>().apply(instructions)
}
@@ -1,4 +1,5 @@
// ISSUE: KT-60291
// FIR_IDENTICAL
// CHECK_TYPE_WITH_EXACT
// WITH_STDLIB
@@ -1,26 +0,0 @@
// ISSUE: KT-60291
// CHECK_TYPE_WITH_EXACT
fun test() {
val buildee = if (true)
build { setTypeVariable(TargetType()) }
else
build {}
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
checkExactType<Buildee<TargetType>>(buildee)
}
class TargetType
class Buildee<TV> {
fun setTypeVariable(value: TV) { storage = value }
private var storage: TV = null!!
}
fun <PTV> build(instructions: Buildee<PTV>.() -> Unit): Buildee<PTV> {
return Buildee<PTV>().apply(instructions)
}
@@ -1,4 +1,5 @@
// ISSUE: KT-60291
// FIR_IDENTICAL
// CHECK_TYPE_WITH_EXACT
fun test() {
@@ -1,27 +0,0 @@
// ISSUE: KT-60291
// CHECK_TYPE_WITH_EXACT
fun test() {
val buildee = when ("") {
"true" -> build { setTypeVariable(TargetType()) }
"false" -> build {}
else -> Buildee()
}
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
checkExactType<Buildee<TargetType>>(buildee)
}
class TargetType
class Buildee<TV> {
fun setTypeVariable(value: TV) { storage = value }
private var storage: TV = null!!
}
fun <PTV> build(instructions: Buildee<PTV>.() -> Unit): Buildee<PTV> {
return Buildee<PTV>().apply(instructions)
}
@@ -1,4 +1,5 @@
// ISSUE: KT-60291
// FIR_IDENTICAL
// CHECK_TYPE_WITH_EXACT
fun test() {
@@ -4,7 +4,7 @@
fun test() {
val buildee = build {
setTypeVariable(TargetType())
getTypeVariable().consumeDifferentTypeReceiver()
<!BUILDER_INFERENCE_STUB_RECEIVER!>getTypeVariable().consumeDifferentTypeReceiver()<!>
}
// exact type equality check — turns unexpected compile-time behavior into red code
// considered to be non-user-reproducible code for the purposes of these tests
@@ -27,4 +27,4 @@ class Buildee<TV> {
fun <PTV> build(instructions: Buildee<PTV>.() -> Unit): Buildee<PTV> {
return Buildee<PTV>().apply(instructions)
}
}