[FIR] Support old FE-like multifile tests
This commit is contained in:
@@ -1,12 +0,0 @@
|
|||||||
package annotations
|
|
||||||
|
|
||||||
@Target(AnnotationTarget.FILE, AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.PROPERTY_GETTER)
|
|
||||||
annotation class Simple
|
|
||||||
|
|
||||||
annotation class WithInt(val value: Int)
|
|
||||||
|
|
||||||
annotation class WithString(val s: String)
|
|
||||||
|
|
||||||
annotation class Complex(val wi: WithInt, val ws: WithString)
|
|
||||||
|
|
||||||
annotation class VeryComplex(val f: Float, val d: Double, val b: Boolean, val l: Long, val n: Int?)
|
|
||||||
@@ -1,3 +1,20 @@
|
|||||||
|
// FILE: annotations.kt
|
||||||
|
|
||||||
|
package annotations
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.FILE, AnnotationTarget.FUNCTION, AnnotationTarget.TYPE, AnnotationTarget.PROPERTY_GETTER)
|
||||||
|
annotation class Simple
|
||||||
|
|
||||||
|
annotation class WithInt(val value: Int)
|
||||||
|
|
||||||
|
annotation class WithString(val s: String)
|
||||||
|
|
||||||
|
annotation class Complex(val wi: WithInt, val ws: WithString)
|
||||||
|
|
||||||
|
annotation class VeryComplex(val f: Float, val d: Double, val b: Boolean, val l: Long, val n: Int?)
|
||||||
|
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
@file:Simple
|
@file:Simple
|
||||||
package test
|
package test
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,62 @@
|
|||||||
FILE: Annotations.kt
|
FILE: annotations.kt
|
||||||
|
@R|kotlin/annotation/Target|(Q|kotlin/annotation/AnnotationTarget.FILE|, Q|kotlin/annotation/AnnotationTarget.FUNCTION|, Q|kotlin/annotation/AnnotationTarget.TYPE|, Q|kotlin/annotation/AnnotationTarget.PROPERTY_GETTER|) public final annotation class Simple : R|kotlin/Annotation| {
|
||||||
|
public constructor(): R|annotations/Simple| {
|
||||||
|
super<R|kotlin/Annotation|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final annotation class WithInt : R|kotlin/Annotation| {
|
||||||
|
public constructor(value: R|kotlin/Int|): R|annotations/WithInt| {
|
||||||
|
super<R|kotlin/Annotation|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final val value: R|kotlin/Int| = R|<local>/value|
|
||||||
|
public get(): R|kotlin/Int|
|
||||||
|
|
||||||
|
}
|
||||||
|
public final annotation class WithString : R|kotlin/Annotation| {
|
||||||
|
public constructor(s: R|kotlin/String|): R|annotations/WithString| {
|
||||||
|
super<R|kotlin/Annotation|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final val s: R|kotlin/String| = R|<local>/s|
|
||||||
|
public get(): R|kotlin/String|
|
||||||
|
|
||||||
|
}
|
||||||
|
public final annotation class Complex : R|kotlin/Annotation| {
|
||||||
|
public constructor(wi: R|annotations/WithInt|, ws: R|annotations/WithString|): R|annotations/Complex| {
|
||||||
|
super<R|kotlin/Annotation|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final val wi: R|annotations/WithInt| = R|<local>/wi|
|
||||||
|
public get(): R|annotations/WithInt|
|
||||||
|
|
||||||
|
public final val ws: R|annotations/WithString| = R|<local>/ws|
|
||||||
|
public get(): R|annotations/WithString|
|
||||||
|
|
||||||
|
}
|
||||||
|
public final annotation class VeryComplex : R|kotlin/Annotation| {
|
||||||
|
public constructor(f: R|kotlin/Float|, d: R|kotlin/Double|, b: R|kotlin/Boolean|, l: R|kotlin/Long|, n: R|kotlin/Int?|): R|annotations/VeryComplex| {
|
||||||
|
super<R|kotlin/Annotation|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final val f: R|kotlin/Float| = R|<local>/f|
|
||||||
|
public get(): R|kotlin/Float|
|
||||||
|
|
||||||
|
public final val d: R|kotlin/Double| = R|<local>/d|
|
||||||
|
public get(): R|kotlin/Double|
|
||||||
|
|
||||||
|
public final val b: R|kotlin/Boolean| = R|<local>/b|
|
||||||
|
public get(): R|kotlin/Boolean|
|
||||||
|
|
||||||
|
public final val l: R|kotlin/Long| = R|<local>/l|
|
||||||
|
public get(): R|kotlin/Long|
|
||||||
|
|
||||||
|
public final val n: R|kotlin/Int?| = R|<local>/n|
|
||||||
|
public get(): R|kotlin/Int?|
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: main.kt
|
||||||
@FILE:R|annotations/Simple|()
|
@FILE:R|annotations/Simple|()
|
||||||
@R|annotations/WithInt|(Int(42)) public abstract class First : R|kotlin/Any| {
|
@R|annotations/WithInt|(Int(42)) public abstract class First : R|kotlin/Any| {
|
||||||
public constructor(): R|test/First| {
|
public constructor(): R|test/First| {
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package Test
|
|
||||||
|
|
||||||
interface ByteArray {
|
|
||||||
val array: ByteArray
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,13 @@
|
|||||||
|
// FILE: byteArray.kt
|
||||||
|
|
||||||
|
package Test
|
||||||
|
|
||||||
|
interface ByteArray {
|
||||||
|
val array: ByteArray
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
package use
|
package use
|
||||||
|
|
||||||
import test.*
|
import test.*
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
FILE: ByteArray.kt
|
FILE: byteArray.kt
|
||||||
|
public abstract interface ByteArray : R|kotlin/Any| {
|
||||||
|
public abstract val array: R|Test/ByteArray|
|
||||||
|
public get(): R|Test/ByteArray|
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: main.kt
|
||||||
public abstract interface My : R|kotlin/Any| {
|
public abstract interface My : R|kotlin/Any| {
|
||||||
public abstract val array: R|kotlin/ByteArray|
|
public abstract val array: R|kotlin/ByteArray|
|
||||||
public get(): R|kotlin/ByteArray|
|
public get(): R|kotlin/ByteArray|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package b
|
|
||||||
|
|
||||||
import c.C
|
|
||||||
|
|
||||||
open class B : C() {
|
|
||||||
open class NestedInB : NestedInC()
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package c
|
|
||||||
|
|
||||||
open class C {
|
|
||||||
open class NestedInC
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,23 @@
|
|||||||
|
// FILE: C.kt
|
||||||
|
|
||||||
|
package c
|
||||||
|
|
||||||
|
open class C {
|
||||||
|
open class NestedInC
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
|
package b
|
||||||
|
|
||||||
|
import c.C
|
||||||
|
|
||||||
|
open class B : C() {
|
||||||
|
open class NestedInB : NestedInC()
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
package a
|
package a
|
||||||
|
|
||||||
import b.B
|
import b.B
|
||||||
|
|||||||
@@ -1,4 +1,32 @@
|
|||||||
FILE: NestedSuperType.kt
|
FILE: C.kt
|
||||||
|
public open class C : R|kotlin/Any| {
|
||||||
|
public constructor(): R|c/C| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open class NestedInC : R|kotlin/Any| {
|
||||||
|
public constructor(): R|c/C.NestedInC| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: B.kt
|
||||||
|
public open class B : R|c/C| {
|
||||||
|
public constructor(): R|b/B| {
|
||||||
|
super<R|c/C|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open class NestedInB : R|c/C.NestedInC| {
|
||||||
|
public constructor(): R|b/B.NestedInB| {
|
||||||
|
super<R|c/C.NestedInC|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: A.kt
|
||||||
public final class A : R|b/B| {
|
public final class A : R|b/B| {
|
||||||
public constructor(): R|a/A| {
|
public constructor(): R|a/A| {
|
||||||
super<R|b/B|>()
|
super<R|b/B|>()
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package b
|
|
||||||
|
|
||||||
class A
|
|
||||||
|
|
||||||
typealias TA = A
|
|
||||||
|
|
||||||
// analyzePriority: 1
|
|
||||||
@@ -1,7 +1,15 @@
|
|||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
|
package b
|
||||||
|
|
||||||
|
class A
|
||||||
|
|
||||||
|
typealias TA = A
|
||||||
|
|
||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
package a
|
package a
|
||||||
|
|
||||||
import b.TA
|
import b.TA
|
||||||
|
|
||||||
class MyClass : TA()
|
class MyClass : TA()
|
||||||
|
|
||||||
// analyzePriority: 0
|
|
||||||
@@ -1,4 +1,12 @@
|
|||||||
FILE: TypeAliasExpansion.kt
|
FILE: B.kt
|
||||||
|
public final class A : R|kotlin/Any| {
|
||||||
|
public constructor(): R|b/A| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final typealias TA = R|b/A|
|
||||||
|
FILE: A.kt
|
||||||
public final class MyClass : R|b/TA| {
|
public final class MyClass : R|b/TA| {
|
||||||
public constructor(): R|a/MyClass| {
|
public constructor(): R|a/MyClass| {
|
||||||
super<R|b/TA|>()
|
super<R|b/TA|>()
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
package a
|
|
||||||
|
|
||||||
object A {
|
|
||||||
fun foo() {}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,3 +1,13 @@
|
|||||||
|
// FILE: a.kt
|
||||||
|
|
||||||
|
package a
|
||||||
|
|
||||||
|
object A {
|
||||||
|
fun foo() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: b.kt
|
||||||
|
|
||||||
package b
|
package b
|
||||||
import a.A.foo
|
import a.A.foo
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,14 @@
|
|||||||
FILE: importFromObject.kt
|
FILE: a.kt
|
||||||
|
public final object A : R|kotlin/Any| {
|
||||||
|
private constructor(): R|a/A| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final fun foo(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: b.kt
|
||||||
public final fun bar(): R|kotlin/Unit| {
|
public final fun bar(): R|kotlin/Unit| {
|
||||||
this@R|a/A|.R|a/A.foo|()
|
this@R|a/A|.R|a/A.foo|()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package test
|
|
||||||
|
|
||||||
sealed class Test {
|
|
||||||
object O : Test()
|
|
||||||
|
|
||||||
class Extra(val x: Int): Test
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,15 @@
|
|||||||
|
// FILE: test.kt
|
||||||
|
|
||||||
|
package test
|
||||||
|
|
||||||
|
sealed class Test {
|
||||||
|
object O : Test()
|
||||||
|
|
||||||
|
class Extra(val x: Int): Test
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: main.kt
|
||||||
|
|
||||||
package other
|
package other
|
||||||
|
|
||||||
import test.Test.*
|
import test.Test.*
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
FILE: sealedStarImport.kt
|
FILE: test.kt
|
||||||
|
public sealed class Test : R|kotlin/Any| {
|
||||||
|
private constructor(): R|test/Test| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final object O : R|test/Test| {
|
||||||
|
private constructor(): R|test/Test.O| {
|
||||||
|
super<R|test/Test|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public final class Extra : R|test/Test| {
|
||||||
|
public constructor(x: R|kotlin/Int|): R|test/Test.Extra| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public final val x: R|kotlin/Int| = R|<local>/x|
|
||||||
|
public get(): R|kotlin/Int|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: main.kt
|
||||||
public abstract class Factory : R|kotlin/Any| {
|
public abstract class Factory : R|kotlin/Any| {
|
||||||
public constructor(): R|other/Factory| {
|
public constructor(): R|other/Factory| {
|
||||||
super<R|kotlin/Any|>()
|
super<R|kotlin/Any|>()
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
package b
|
|
||||||
|
|
||||||
abstract class MyClass
|
|
||||||
|
|
||||||
fun foo() {}
|
|
||||||
|
|
||||||
fun I() {}
|
|
||||||
interface I {}
|
|
||||||
@@ -1,3 +1,16 @@
|
|||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
|
package b
|
||||||
|
|
||||||
|
abstract class MyClass
|
||||||
|
|
||||||
|
fun foo() {}
|
||||||
|
|
||||||
|
fun I() {}
|
||||||
|
interface I {}
|
||||||
|
|
||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
package a
|
package a
|
||||||
import b.MyClass as HisClass
|
import b.MyClass as HisClass
|
||||||
import b.foo as foo2
|
import b.foo as foo2
|
||||||
|
|||||||
@@ -1,4 +1,17 @@
|
|||||||
FILE: simpleAliasedImport.kt
|
FILE: B.kt
|
||||||
|
public abstract class MyClass : R|kotlin/Any| {
|
||||||
|
public constructor(): R|b/MyClass| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final fun foo(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
public final fun I(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
public abstract interface I : R|kotlin/Any| {
|
||||||
|
}
|
||||||
|
FILE: A.kt
|
||||||
public final class YourClass : R|b/MyClass| {
|
public final class YourClass : R|b/MyClass| {
|
||||||
public constructor(): R|a/YourClass| {
|
public constructor(): R|a/YourClass| {
|
||||||
super<R|b/MyClass|>()
|
super<R|b/MyClass|>()
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
package b
|
|
||||||
|
|
||||||
abstract class MyClass
|
|
||||||
|
|
||||||
fun foo() {}
|
|
||||||
|
|
||||||
fun I() {}
|
|
||||||
interface I {}
|
|
||||||
@@ -1,3 +1,17 @@
|
|||||||
|
// FILE B.kt
|
||||||
|
|
||||||
|
package b
|
||||||
|
|
||||||
|
abstract class MyClass
|
||||||
|
|
||||||
|
fun foo() {}
|
||||||
|
|
||||||
|
fun I() {}
|
||||||
|
interface I {}
|
||||||
|
|
||||||
|
|
||||||
|
// FILE A.kt
|
||||||
|
|
||||||
package a
|
package a
|
||||||
import b.MyClass
|
import b.MyClass
|
||||||
import b.foo
|
import b.foo
|
||||||
|
|||||||
@@ -1,6 +1,18 @@
|
|||||||
FILE: simpleImport.kt
|
FILE: simpleImport.kt
|
||||||
|
public abstract class MyClass : R|kotlin/Any| {
|
||||||
|
public constructor(): R|b/MyClass| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final fun foo(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
public final fun I(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
public abstract interface I : R|kotlin/Any| {
|
||||||
|
}
|
||||||
public final class YourClass : R|b/MyClass| {
|
public final class YourClass : R|b/MyClass| {
|
||||||
public constructor(): R|a/YourClass| {
|
public constructor(): R|b/YourClass| {
|
||||||
super<R|b/MyClass|>()
|
super<R|b/MyClass|>()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package a
|
|
||||||
|
|
||||||
class MyClass {
|
|
||||||
open class MyNested
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,13 @@
|
|||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
|
package a
|
||||||
|
|
||||||
|
class MyClass {
|
||||||
|
open class MyNested
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
package b
|
package b
|
||||||
|
|
||||||
import a.MyClass.MyNested
|
import a.MyClass.MyNested
|
||||||
|
|||||||
@@ -1,4 +1,18 @@
|
|||||||
FILE: simpleImportNested.kt
|
FILE: A.kt
|
||||||
|
public final class MyClass : R|kotlin/Any| {
|
||||||
|
public constructor(): R|a/MyClass| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open class MyNested : R|kotlin/Any| {
|
||||||
|
public constructor(): R|a/MyClass.MyNested| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: B.kt
|
||||||
public final class YourClass : R|a/MyClass.MyNested| {
|
public final class YourClass : R|a/MyClass.MyNested| {
|
||||||
public constructor(): R|b/YourClass| {
|
public constructor(): R|b/YourClass| {
|
||||||
super<R|a/MyClass.MyNested|>()
|
super<R|a/MyClass.MyNested|>()
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
package a
|
|
||||||
|
|
||||||
class Outer {
|
|
||||||
open class Nested
|
|
||||||
}
|
|
||||||
@@ -1,3 +1,13 @@
|
|||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
|
package a
|
||||||
|
|
||||||
|
class Outer {
|
||||||
|
open class Nested
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
package b
|
package b
|
||||||
|
|
||||||
import a.Outer
|
import a.Outer
|
||||||
|
|||||||
@@ -1,4 +1,18 @@
|
|||||||
FILE: simpleImportOuter.kt
|
FILE: A.kt
|
||||||
|
public final class Outer : R|kotlin/Any| {
|
||||||
|
public constructor(): R|a/Outer| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
public open class Nested : R|kotlin/Any| {
|
||||||
|
public constructor(): R|a/Outer.Nested| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
FILE: B.kt
|
||||||
public final class My : R|a/Outer.Nested| {
|
public final class My : R|a/Outer.Nested| {
|
||||||
public constructor(): R|b/My| {
|
public constructor(): R|b/My| {
|
||||||
super<R|a/Outer.Nested|>()
|
super<R|a/Outer.Nested|>()
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
package b.d
|
|
||||||
|
|
||||||
expect interface Other
|
|
||||||
|
|
||||||
expect class Another
|
|
||||||
|
|
||||||
fun baz() {}
|
|
||||||
@@ -1,3 +1,15 @@
|
|||||||
|
// FILE: B.kt
|
||||||
|
|
||||||
|
package b.d
|
||||||
|
|
||||||
|
expect interface Other
|
||||||
|
|
||||||
|
expect class Another
|
||||||
|
|
||||||
|
fun baz() {}
|
||||||
|
|
||||||
|
// FILE: A.kt
|
||||||
|
|
||||||
package a.d
|
package a.d
|
||||||
|
|
||||||
import b.d.*
|
import b.d.*
|
||||||
|
|||||||
@@ -1,4 +1,15 @@
|
|||||||
FILE: simpleStarImport.kt
|
FILE: B.kt
|
||||||
|
public abstract expect interface Other : R|kotlin/Any| {
|
||||||
|
}
|
||||||
|
public final expect class Another : R|kotlin/Any| {
|
||||||
|
public constructor(): R|b/d/Another| {
|
||||||
|
super<R|kotlin/Any|>()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public final fun baz(): R|kotlin/Unit| {
|
||||||
|
}
|
||||||
|
FILE: A.kt
|
||||||
public final fun foo(arg: R|b/d/Other|): R|b/d/Another|
|
public final fun foo(arg: R|b/d/Other|): R|b/d/Another|
|
||||||
public final fun bar(): R|kotlin/Unit| {
|
public final fun bar(): R|kotlin/Unit| {
|
||||||
R|b/d/baz|()
|
R|b/d/baz|()
|
||||||
|
|||||||
@@ -38,10 +38,10 @@ abstract class AbstractFirCfgBuildingTest : AbstractFirResolveTestCase() {
|
|||||||
override val configurationKind: ConfigurationKind
|
override val configurationKind: ConfigurationKind
|
||||||
get() = ConfigurationKind.ALL
|
get() = ConfigurationKind.ALL
|
||||||
|
|
||||||
override fun doTest(path: String) {
|
override fun doTest(path: String): List<FirFile> {
|
||||||
val firFiles = processInputFile(path)
|
val firFiles = super.doTest(path)
|
||||||
checkFir(path, firFiles)
|
|
||||||
checkCfg(path, firFiles)
|
checkCfg(path, firFiles)
|
||||||
|
return firFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkCfg(path: String, firFiles: List<FirFile>) {
|
fun checkCfg(path: String, firFiles: List<FirFile>) {
|
||||||
|
|||||||
@@ -62,38 +62,18 @@ abstract class AbstractFirResolveTestCase : AbstractFirResolveWithSessionTestCas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun generateKtFiles(path: String): List<KtFile> {
|
open fun doTest(path: String): List<FirFile> {
|
||||||
val file = File(path)
|
|
||||||
|
|
||||||
val allFiles = listOf(file) + file.parentFile.listFiles { sibling ->
|
|
||||||
sibling.name.removePrefix(file.nameWithoutExtension).removeSuffix(file.extension).matches("\\.[0-9]+\\.".toRegex())
|
|
||||||
}
|
|
||||||
|
|
||||||
return allFiles.map {
|
|
||||||
val text = KotlinTestUtils.doLoadFile(it)
|
|
||||||
it.name to text
|
|
||||||
}.sortedBy { (_, text) ->
|
|
||||||
KotlinTestUtils.parseDirectives(text)["analyzePriority"]?.toInt()
|
|
||||||
}.map { (name, text) ->
|
|
||||||
KotlinTestUtils.createFile(name, text, project)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected fun processInputFile(path: String): List<FirFile> {
|
|
||||||
return doCreateAndProcessFir(generateKtFiles(path))
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun doTest(path: String) {
|
|
||||||
val file = File(path)
|
val file = File(path)
|
||||||
val expectedText = KotlinTestUtils.doLoadFile(file)
|
val expectedText = KotlinTestUtils.doLoadFile(file)
|
||||||
val testFiles = createTestFiles(file, expectedText)
|
val testFiles = createTestFiles(file, expectedText)
|
||||||
val firFiles = doCreateAndProcessFir(testFiles.mapNotNull { it.ktFile })
|
val firFiles = doCreateAndProcessFir(testFiles.mapNotNull { it.ktFile })
|
||||||
checkDiagnostics(file, testFiles, firFiles)
|
checkDiagnostics(file, testFiles, firFiles)
|
||||||
checkFir(path, firFiles)
|
checkFir(path, firFiles)
|
||||||
|
return firFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkFir(path: String, firFiles: List<FirFile>) {
|
fun checkFir(path: String, firFiles: List<FirFile>) {
|
||||||
val firFileDump = StringBuilder().also { firFiles.first().accept(FirRenderer(it), null) }.toString()
|
val firFileDump = StringBuilder().apply { firFiles.forEach { it.accept(FirRenderer(this), null) } }.toString()
|
||||||
val expectedPath = path.replace(".kt", ".txt")
|
val expectedPath = path.replace(".kt", ".txt")
|
||||||
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
|
KotlinTestUtils.assertEqualsToFile(File(expectedPath), firFileDump)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user