Files
kotlin-fork/compiler/testData/diagnostics/tests/generics/nullability/tpBoundsViolation.kt
T
Dmitriy Novozhilov e6b5cb5216 [TD] Update diagnostics test data due to new test runners
Update includes:
- Changing syntax of `OI/`NI` tags from `<!NI;TAG!>` to `<!TAG{NI}!>`
- Fix some incorrect directives
- Change order of diagnostics in some places
- Remove ignored diagnostics from FIR test data (previously `DIAGNOSTICS` didn't work)
- Update FIR dumps in some places and add `FIR_IDENTICAL` if needed
- Replace all JAVAC_SKIP with SKIP_JAVAC directive
2020-12-16 19:52:25 +03:00

50 lines
1.1 KiB
Kotlin
Vendored

// !WITH_NEW_INFERENCE
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
class A<F> {
fun <E : F> foo1(x: E) = x
fun <E : F?> foo2(x: E) = x
fun <Z : F, W : Z?> bar(x: F, y: F?, z: Z, w: W) {
foo1<F>(x)
val x1 = foo1(x)
x1.checkType { _<F>() }
foo2<F>(x)
val x2 = foo2(x)
x2.checkType { _<F>() }
foo1<<!UPPER_BOUND_VIOLATED!>F?<!>>(y)
<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>foo1<!>(<!TYPE_MISMATCH{NI}!>y<!>)
foo2<F?>(y)
val x3 = foo2(y)
x3.checkType { _<F?>() }
foo1<F>(<!TYPE_MISMATCH!>y<!>)
foo2<F>(<!TYPE_MISMATCH!>y<!>)
foo1<Z>(z)
val x4 = foo1(z)
x4.checkType { _<Z>() }
foo2<Z>(z)
val x5 = foo2(z)
x4.checkType { _<Z>() }
foo1<<!UPPER_BOUND_VIOLATED!>W<!>>(w)
<!TYPE_INFERENCE_UPPER_BOUND_VIOLATED{OI}!>foo1<!>(<!TYPE_MISMATCH{NI}!>w<!>)
foo2<W>(w)
val x6 = foo2(w)
x6.checkType { _<W>() }
foo1<<!UPPER_BOUND_VIOLATED!>W<!>>(w)
}
}