Introduce FIR_IDENTICAL for FIR vs old frontend tests #KT-36879 Fixed

This commit is contained in:
Mikhail Glukhikh
2020-03-04 17:54:33 +03:00
parent 186e0b0cba
commit 8884cbe415
2268 changed files with 1175 additions and 19754 deletions
@@ -1,17 +0,0 @@
// FILE: a.kt
package a
open class X
// FILE: b.kt
package b
class X
// FILE: c.kt
package c
import a.X
import b.*
class Y : X()
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -1,19 +0,0 @@
// FILE: a.kt
package a
var X: Int = 1
// FILE: b.kt
package b
var X: String = ""
// FILE: c.kt
package c
import a.X
import b.*
fun foo() {
X = 1
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -1,81 +0,0 @@
// MODULE: m1
// FILE: a.kt
package a
class B {
fun m1() {}
}
// MODULE: m2
// FILE: b.kt
package a
class B {
fun m2() {}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.B
fun test(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
val b_1: a.B = B()
b_1.m1()
val b_2: B = a.B()
b_2.m1()
val b_3: B = B()
b_3.m1()
val b_4: B = a.B()
b_4.m1()
}
//----------------------------TOP LEVEL---------------------
// MODULE: top_m1
// FILE: top_a.kt
class B {
fun m1() {}
}
// MODULE: top_m2
// FILE: top_b.kt
class B {
fun m2() {}
}
// MODULE: top_m3(top_m1, top_m2)
// FILE: top_c.kt
import B
fun test(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
val b_2 = B()
b_2.m1()
}
// FILE: top_d.kt
fun test2(b: B) {
b.m1()
b.<!UNRESOLVED_REFERENCE!>m2<!>()
val b_: B = B()
b_.m1()
val b_2 = B()
b_2.m1()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// MODULE: m1
// FILE: a.kt
package a
@@ -1,16 +0,0 @@
// FILE: a.kt
package a
class X
// FILE: b.kt
package b
open class X
// FILE: b1.kt
package b
import a.*
class Y : X() // class from the current package should take priority
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -1,16 +0,0 @@
// FILE: a.kt
package a
open class Y
// FILE: b.kt
package b
class X
// FILE: b1.kt
package b
import a.Y as X
class Y : X() // class from explicit import should take priority
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -1,9 +0,0 @@
// ResolveSession.resolveToDescriptor used to crash on such code, so we just check that it's ok now
import kotlin.Double
import kotlin.collections.List
import kotlin.arrayOfNulls
class List {}
fun arrayOfNulls(){}
val arrayOfNulls: Int = 0
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// ResolveSession.resolveToDescriptor used to crash on such code, so we just check that it's ok now
import kotlin.Double
import kotlin.collections.List
@@ -1,10 +0,0 @@
package a
import a.A.Nested as X
interface A {
class Nested
val a: Nested
val b: X
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
package a
import a.A.Nested as X
@@ -1,12 +0,0 @@
//FILE:a.kt
package a
// no error is reported
import b.a
fun foo() = a
//FILE:b.kt
package b
object a {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
//FILE:a.kt
package a
@@ -1,23 +0,0 @@
// FILE: b.kt
// KT-355 Resolve imports after all symbols are built
package a
import b.*
val x : X = X()
// FILE: b.kt
package b
class X() {
}
// FILE: b.kt
package c
import d.X
val x : X = X()
// FILE: b.kt
package d
class X() {
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: b.kt
// KT-355 Resolve imports after all symbols are built
@@ -1,14 +0,0 @@
// FILE: a.kt
package weatherForecast
fun weatherToday() = "snow"
// FILE: b.kt
package myApp
import weatherForecast.weatherToday
import weatherForecast.weatherToday
fun needUmbrella() = weatherToday() == "rain"
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package weatherForecast
@@ -1,14 +0,0 @@
// FILE: a.kt
package weatherForecast
fun weatherToday() = "snow"
// FILE: b.kt
package myApp
import weatherForecast.*
import weatherForecast.*
fun needUmbrella() = weatherToday() == "rain"
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: a.kt
package weatherForecast
@@ -1,15 +0,0 @@
//FILE:a.kt
package a
import b.foo
import c.foo // TODO: need warning here
//FILE:b.kt
package b
fun foo() = 2
//FILE:c.kt
package c
fun foo() = 1
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
//FILE:a.kt
package a
@@ -1,152 +0,0 @@
// MODULE: m1
// FILE: a.kt
package a.b
fun ab_fun() {}
class c {
fun ab_c() {}
class d {
fun ab_cd() {}
}
}
// MODULE: m2
// FILE: b.kt
package a
fun a_fun() {}
class b {
fun a_b() {}
class c {
fun a_bc() {}
}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.a_fun
import a.b
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
val a_bc2 = b.c()
a_bc2.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
val ab_cd2 = c.d()
ab_cd2.ab_cd()
ab_fun()
}
// FILE: d.kt
package a
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
val a_bc2 = b.c()
a_bc2.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
val ab_cd2 = c.d()
ab_cd2.ab_cd()
ab_fun()
}
//---- Changed dependence order
// MODULE: m4(m2, m1)
// FILE: c.kt
import a.a_fun
import a.b
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
val a_bc2 = b.c()
a_bc2.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
val ab_cd2 = c.d()
ab_cd2.ab_cd()
ab_fun()
}
// FILE: d.kt
package a
import a.b.ab_fun
import a.b.c
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
val a_bc2 = b.c()
a_bc2.a_bc()
a_fun()
}
fun test2(ab_c: c) {
ab_c.ab_c()
val ab_cd: c.d = c.d()
ab_cd.ab_cd()
val ab_cd2 = c.d()
ab_cd2.ab_cd()
ab_fun()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// MODULE: m1
// FILE: a.kt
package a.b
@@ -1,68 +0,0 @@
// MODULE: m1
// FILE: a.kt
package a
fun a_fun() {}
class b {
fun a_b() {}
class c {
fun a_bc() {}
}
}
// MODULE: m2
// FILE: b.kt
fun _fun() {}
class a {
fun _a() {}
class b {
fun _ab() {}
}
}
// MODULE: m3(m1, m2)
// FILE: c.kt
import a.a_fun
import a.b
fun test(a_b: b) {
a_b.a_b()
val a_bc: b.c = b.c()
a_bc.a_bc()
a_fun()
}
// FILE: d.kt
fun test2(_a: a) {
_a._a()
val _ab: a.b = a.b()
_ab._ab()
val _ab2 = a.b()
_ab2._ab()
_fun()
}
// FILE: e.kt
import a
import _fun
fun test3(_a: a) {
_a._a()
val _ab: a.b = a.b()
_ab._ab()
val _ab2 = a.b()
_ab2._ab()
_fun()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// MODULE: m1
// FILE: a.kt
package a
@@ -1,13 +0,0 @@
// FILE: importFunctionWithAllUnderImport.kt
package test
import testOther.*
class B: A()
val inferTypeFromImportedFun = testFun()
// FILE: importFunctionWithAllUnderImportOther.kt
package testOther
open class A
fun testFun() = 1
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: importFunctionWithAllUnderImport.kt
package test
@@ -1,22 +0,0 @@
//FILE:mainFile.kt
//----------------------------------------------------------------------------------
package test
import testing.other.*
import testing.TestFun
// Resolve shouldn't be ambiguous
val a = TestFun()
//FILE:testing.kt
//----------------------------------------------------------------------------------
package testing
class TestFun
//FILE:testingOther.kt
//----------------------------------------------------------------------------------
package testing.other
fun TestFun() = 12
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
//FILE:mainFile.kt
//----------------------------------------------------------------------------------
package test