Introduce FIR_IDENTICAL for FIR vs old frontend tests #KT-36879 Fixed
This commit is contained in:
-17
@@ -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
|
||||
|
||||
|
||||
-19
@@ -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
@@ -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
|
||||
|
||||
-16
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
|
||||
-16
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
|
||||
-9
@@ -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
@@ -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
|
||||
|
||||
-10
@@ -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
|
||||
|
||||
-12
@@ -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
@@ -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
|
||||
|
||||
-13
@@ -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
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: importFunctionWithAllUnderImport.kt
|
||||
package test
|
||||
|
||||
|
||||
Vendored
-22
@@ -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
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
//FILE:mainFile.kt
|
||||
//----------------------------------------------------------------------------------
|
||||
package test
|
||||
|
||||
Reference in New Issue
Block a user