[FIR] Apply GOOD testData changes after type parameters support

This commit is contained in:
simon.ogorodnik
2020-04-07 00:15:40 +03:00
parent 797b58669b
commit 132c8ee210
45 changed files with 185 additions and 225 deletions
@@ -17,7 +17,7 @@ class Q {
x = foo<CharSequence>()
y = foo<String>()
x.prop.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><CharSequence>() }
y.prop.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><String>() }
x.prop.checkType { _<CharSequence>() }
y.prop.checkType { _<String>() }
}
}
@@ -27,12 +27,12 @@ fun main() {
val outer = Outer<String>()
checkSubtype<Outer<String>.Inner<String>>(outer.bar())
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Outer<String>.Inner<Int>>(outer.Inner<Int>())
checkSubtype<Outer<String>.Inner<Int>>(outer.Inner<Int>())
checkSubtype<Outer<*>.Inner<*>>(outer.bar())
checkSubtype<Outer<*>.Inner<*>>(outer.Inner<Int>())
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Outer<CharSequence>.Inner<CharSequence>>(outer.bar())
checkSubtype<Outer<CharSequence>.Inner<CharSequence>>(outer.Inner())
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Outer<CharSequence>.Inner<CharSequence>>(outer.Inner())
outer.set(outer.bar())
outer.set(outer.Inner())
@@ -15,12 +15,12 @@ class Outer<E> {
if (y is Inner) return
if (z is Inner) {
z.prop.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Any?>() }
z.prop.checkType { _<Any?>() }
return
}
if (y is Outer<*>.Inner<*>) {
y.prop.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Any?>() }
y.prop.checkType { _<Any?>() }
}
}
@@ -33,5 +33,5 @@ fun foo() {
val csIt: Iterator<CharSequence> = A<String>().iterator()
commonSupertype(A<String>().iterator(), A<Int>().iterator()).checkType { _<A<out Any>.MyIt>() }
commonSupertype(A<String>().iterator(), A<Int>().iterator()).checkType { <!INAPPLICABLE_CANDIDATE!>_<!><A<out Any>.MyIt>() }
}
@@ -23,6 +23,6 @@ fun main() {
val strInt: Outer<String>.Inner<Int> = outerStr.Inner()
strInt.foo().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><String>() }
strInt.bar().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Int>() }
strInt.bar().checkType { _<Int>() }
strInt.outer().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Outer<String>>() }
}
@@ -1,21 +0,0 @@
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
class Outer<T> {
inner class Inner<R> {
fun <S> newInner(): Inner<S> = Inner()
//type mismatch
fun <U, S> newOuterInner(): Outer<U>.Inner<S> = Outer<U>().Inner<S>()
//^ U here is not analyzed
fun foo(t: T, r: R) {}
}
}
fun test0() {
val inner: Outer<Int>.Inner<String> = Outer<Int>().Inner<String>()
Outer<Int>().Inner<String>().foo(1, "") // type mismatch on second argument
}
fun test1() {
Outer<Int>().Inner<String>().newOuterInner<Double, Boolean>().<!UNRESOLVED_REFERENCE!>foo<!>(1.0, true) // type mismatch on 1.0
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
class Outer<T> {
@@ -1,18 +0,0 @@
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER
class Outer<E> {
inner class Inner<E> {
fun foo(): E = null!!
fun outerE() = baz()
}
fun baz(): E = null!!
}
fun main() {
val inner = Outer<String>().Inner<Int>()
inner.foo().checkType { _<Int>() }
inner.outerE().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><String>() }
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !CHECK_TYPE
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER
@@ -7,7 +7,7 @@ class Outer<T> {
fun foo(x: Outer<String>.Inner, y: Outer.Inner, z: Inner) {
var inner = Inner()
x.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Inner>() }
x.checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Outer<String>.Inner>() }
x.checkType { _<Outer<String>.Inner>() }
z.checkType { _<Inner>() }
z.checkType { _<Outer<T>.Inner>() }
@@ -25,8 +25,8 @@ fun main() {
checkSubtype<Outer<*>.Inner>(outer.bar())
checkSubtype<Outer<*>.Inner>(outer.Inner())
checkSubtype<Outer<CharSequence>.Inner>(outer.bar())
checkSubtype<Outer<CharSequence>.Inner>(outer.Inner())
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Outer<CharSequence>.Inner>(outer.bar())
<!INAPPLICABLE_CANDIDATE!>checkSubtype<!><Outer<CharSequence>.Inner>(outer.Inner())
outer.set(outer.bar())
outer.set(outer.Inner())
@@ -29,9 +29,9 @@ fun main() {
checkSubtype<Outer<out CharSequence>.Inner>(outer.bar())
checkSubtype<Outer<out CharSequence>.Inner>(outer.Inner())
outer.set(outer.bar())
outer.set(outer.Inner())
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(outer.bar())
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(outer.Inner())
val x: Outer<String>.Inner = factoryString()
outer.set(x)
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(x)
}
@@ -36,13 +36,13 @@ fun topLevel(): Outer<String> = null!!
fun foo() {
val strInt: Outer<String>.Inner<Int> = Outer<String>().Inner()
strInt.foo().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><String>() }
strInt.baz().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Int>() }
strInt.foo().checkType { _<String>() }
strInt.baz().checkType { _<Int>() }
strInt.instance().<!INAPPLICABLE_CANDIDATE!>setE<!>("")
strInt.instance().outerE().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><String>() }
strInt.instance().setE("")
strInt.instance().outerE().checkType { _<String>() }
strInt.instance().Inner<Double>().checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Outer<String>.Inner<Double>>() }
strInt.instance().Inner<Double>().checkType { _<Outer<String>.Inner<Double>>() }
Outer<String>().<!INAPPLICABLE_CANDIDATE!>setInner<!>(strInt)
Outer<CharSequence>().<!INAPPLICABLE_CANDIDATE!>setInner<!>(strInt)