Introduce FIR_IDENTICAL for FIR vs old frontend tests #KT-36879 Fixed
This commit is contained in:
-15
@@ -1,15 +0,0 @@
|
||||
class A<T> {
|
||||
fun foo() {
|
||||
val q = object {
|
||||
open inner class B
|
||||
inner class C : B()
|
||||
|
||||
// No WRONG_NUMBER_OF_TYPE_ARGUMENTS should be reported on these types
|
||||
val x: B = B()
|
||||
val y: C = C()
|
||||
}
|
||||
|
||||
q.x
|
||||
q.y
|
||||
}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
class A<T> {
|
||||
fun foo() {
|
||||
val q = object {
|
||||
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
open class Super<T> {
|
||||
inner open class Inner {
|
||||
}
|
||||
}
|
||||
|
||||
class Sub : Super<String>() {
|
||||
// TODO: it would be nice to have a possibility to omit explicit type argument in supertype
|
||||
inner class SubInner : Super<String>.Inner() {}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
open class Super<T> {
|
||||
inner open class Inner {
|
||||
}
|
||||
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
open class Super<T> {
|
||||
inner open class Inner {
|
||||
}
|
||||
}
|
||||
|
||||
class Sub : Super<String>() {
|
||||
inner class SubInner : Super<String>.Inner {
|
||||
constructor()
|
||||
constructor(x: Int) : super() {}
|
||||
}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
open class Super<T> {
|
||||
inner open class Inner {
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
|
||||
open class Super<T> {
|
||||
inner open class Inner {
|
||||
open fun getOuter(): Super<T> = throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
|
||||
class Sub<T1>(): Super<T1>() {
|
||||
inner class SubInner : Super<T1>.Inner() { // 'Inner' is unresolved
|
||||
// Also, T1 is not resolved to anything, and not marked as resolved
|
||||
init {
|
||||
val x: Super<T1>.Inner = this // T1 is not resolved to anything
|
||||
}
|
||||
|
||||
override fun getOuter(): Sub<T1> = throw UnsupportedOperationException()
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
|
||||
open class Super<T> {
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
interface T<E> {
|
||||
fun f() : E = null!!
|
||||
}
|
||||
open class A<X>() {
|
||||
inner class B() : T<X> {}
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val a = A<Int>()
|
||||
val b : A<Int>.B = a.B()
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_VARIABLE
|
||||
interface T<E> {
|
||||
fun f() : E = null!!
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
// !CHECK_TYPE
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER
|
||||
|
||||
class Outer<out E> {
|
||||
inner class Inner {
|
||||
fun foo() = this
|
||||
fun baz(): Inner = this
|
||||
}
|
||||
|
||||
fun bar() = Inner()
|
||||
|
||||
// Should be unsafe variance error here
|
||||
fun set(inner: Inner) {}
|
||||
}
|
||||
|
||||
fun factoryString(): Outer<String>.Inner = null!!
|
||||
|
||||
fun <T> infer(x: T): Outer<T>.Inner = null!!
|
||||
val inferred = infer("")
|
||||
|
||||
fun main() {
|
||||
val outer = Outer<String>()
|
||||
|
||||
checkSubtype<Outer<String>.Inner>(outer.bar())
|
||||
checkSubtype<Outer<String>.Inner>(outer.Inner())
|
||||
checkSubtype<Outer<*>.Inner>(outer.bar())
|
||||
checkSubtype<Outer<*>.Inner>(outer.Inner())
|
||||
|
||||
checkSubtype<Outer<CharSequence>.Inner>(outer.bar())
|
||||
checkSubtype<Outer<CharSequence>.Inner>(outer.Inner())
|
||||
|
||||
outer.set(outer.bar())
|
||||
outer.set(outer.Inner())
|
||||
|
||||
val x: Outer<String>.Inner = factoryString()
|
||||
outer.set(x)
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !CHECK_TYPE
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER
|
||||
|
||||
|
||||
Reference in New Issue
Block a user