[FIR-TEST] Add new testdata generated after changes in previous commit
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
class X
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
class X
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.*
|
||||
import b.*
|
||||
|
||||
class Y : X
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// 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()
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
fun X(p: Int) {}
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
fun X(): Int = 1
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import b.*
|
||||
import a.X
|
||||
|
||||
fun foo() {
|
||||
val v: Int = X()
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// 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
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
// FILE: j/JavaPublic.java
|
||||
package j;
|
||||
|
||||
public class JavaPublic {
|
||||
public static void javaM() {}
|
||||
public static int javaP = 4;
|
||||
static int javaPackageLocal = 5;
|
||||
}
|
||||
|
||||
// FILE: j/JavaPackageLocal.java
|
||||
package j;
|
||||
|
||||
class JavaPackageLocal {
|
||||
static void javaMPackage() {}
|
||||
static int javaPPackage = 4;
|
||||
}
|
||||
|
||||
// FILE: j/JavaProtected.java
|
||||
package j;
|
||||
|
||||
public class JavaProtected {
|
||||
protected static void javaMProtected() {}
|
||||
protected static int javaPProtected = 4;
|
||||
}
|
||||
|
||||
// FILE: j/JavaPrivate.java
|
||||
package j;
|
||||
|
||||
public class JavaPrivate {
|
||||
private static void javaMPrivate() {}
|
||||
private static int javaPPrivate = 4;
|
||||
}
|
||||
|
||||
|
||||
// FILE: k1.kt
|
||||
package k
|
||||
|
||||
import j.JavaPublic
|
||||
import j.JavaPublic.javaM
|
||||
import j.JavaPublic.javaP
|
||||
import j.JavaPublic.javaPackageLocal
|
||||
|
||||
import j.JavaPackageLocal
|
||||
import j.JavaPackageLocal.javaMPackage
|
||||
import j.JavaPackageLocal.javaPPackage
|
||||
|
||||
import j.JavaProtected
|
||||
import j.JavaProtected.javaMProtected
|
||||
import j.JavaProtected.javaPProtected
|
||||
|
||||
import j.JavaPrivate
|
||||
import j.JavaPrivate.javaMPrivate
|
||||
import j.JavaPrivate.javaPPrivate
|
||||
|
||||
// FILE: k2.kt
|
||||
package j
|
||||
|
||||
import j.JavaPublic
|
||||
import j.JavaPublic.javaM
|
||||
import j.JavaPublic.javaP
|
||||
import j.JavaPublic.javaPackageLocal
|
||||
|
||||
import j.JavaPackageLocal
|
||||
import j.JavaPackageLocal.javaMPackage
|
||||
import j.JavaPackageLocal.javaPPackage
|
||||
|
||||
import j.JavaProtected
|
||||
import j.JavaProtected.javaMProtected
|
||||
import j.JavaProtected.javaPProtected
|
||||
|
||||
import j.JavaPrivate
|
||||
import j.JavaPrivate.javaMPrivate
|
||||
import j.JavaPrivate.javaPPrivate
|
||||
@@ -0,0 +1,62 @@
|
||||
// FILE: j/JavaPackageLocal.java
|
||||
package j;
|
||||
|
||||
public class JavaPackageLocal {
|
||||
static void javaMPackage() {}
|
||||
static int javaPPackage = 4;
|
||||
}
|
||||
|
||||
// FILE: j/JavaProtected.java
|
||||
package j;
|
||||
|
||||
public class JavaProtected {
|
||||
protected static void javaMProtectedStatic() {}
|
||||
protected static int javaPProtectedStatic = 4;
|
||||
protected final int javaPProtectedPackage = 4;
|
||||
}
|
||||
|
||||
// FILE: k.kt
|
||||
package k
|
||||
|
||||
import j.JavaProtected
|
||||
import j.JavaPackageLocal
|
||||
|
||||
class A {
|
||||
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
|
||||
val p2 = JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaPProtectedStatic<!>
|
||||
val p3 = JavaProtected().<!INAPPLICABLE_CANDIDATE!>javaPProtectedPackage<!>
|
||||
|
||||
fun test() {
|
||||
JavaProtected.<!INAPPLICABLE_CANDIDATE!>javaMProtectedStatic<!>()
|
||||
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
|
||||
}
|
||||
}
|
||||
|
||||
class B : JavaProtected() {
|
||||
val p1 = JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaPPackage<!>
|
||||
val p2 = JavaProtected.javaPProtectedStatic
|
||||
val p3 = javaPProtectedPackage
|
||||
|
||||
fun test() {
|
||||
JavaProtected.javaMProtectedStatic()
|
||||
JavaPackageLocal.<!INAPPLICABLE_CANDIDATE!>javaMPackage<!>()
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: j.kt
|
||||
package j
|
||||
|
||||
import j.JavaProtected
|
||||
import j.JavaPackageLocal
|
||||
|
||||
class C {
|
||||
val p1 = JavaPackageLocal.javaPPackage
|
||||
val p2 = JavaProtected.javaPProtectedStatic
|
||||
val p3 = JavaProtected().javaPProtectedPackage
|
||||
|
||||
fun test() {
|
||||
JavaProtected.javaMProtectedStatic()
|
||||
JavaProtected.javaMProtectedStatic()
|
||||
JavaPackageLocal.javaMPackage()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// MODULE: m1
|
||||
// FILE: k1.kt
|
||||
package k
|
||||
|
||||
private class KPrivate
|
||||
internal class KInternal
|
||||
public class KPublic
|
||||
|
||||
class A {
|
||||
protected class KProtected
|
||||
}
|
||||
|
||||
// FILE: k2.kt
|
||||
package k2
|
||||
|
||||
import k.KPrivate
|
||||
import k.KInternal
|
||||
import k.KPublic
|
||||
import k.A.KProtected
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// FILE: k3.kt
|
||||
package k3
|
||||
|
||||
import k.KPrivate
|
||||
import k.KInternal
|
||||
import k.KPublic
|
||||
import k.A.KProtected
|
||||
@@ -0,0 +1,81 @@
|
||||
// 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()
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// MODULE: m1
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
class B {
|
||||
fun m1() {}
|
||||
}
|
||||
|
||||
// MODULE: m2
|
||||
// FILE: b.kt
|
||||
package a
|
||||
|
||||
class B {
|
||||
fun m2() {}
|
||||
}
|
||||
|
||||
// MODULE: m3(m2, m1)
|
||||
// FILE: b.kt
|
||||
import a.*
|
||||
|
||||
|
||||
fun test(b: B) {
|
||||
b.m2()
|
||||
b.<!UNRESOLVED_REFERENCE!>m1<!>()
|
||||
|
||||
val b_: B = B()
|
||||
b_.m2()
|
||||
|
||||
val b_1: a.B = B()
|
||||
b_1.m2()
|
||||
|
||||
val b_2: B = a.B()
|
||||
b_2.m2()
|
||||
|
||||
val b_3 = B()
|
||||
b_3.m2()
|
||||
|
||||
val b_4 = a.B()
|
||||
b_4.m2()
|
||||
}
|
||||
|
||||
|
||||
//----------------------------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_m2, top_m1)
|
||||
// FILE: top_c.kt
|
||||
|
||||
fun test(b: B) {
|
||||
b.m2()
|
||||
b.<!UNRESOLVED_REFERENCE!>m1<!>()
|
||||
|
||||
val b_: B = B()
|
||||
b_.m2()
|
||||
|
||||
val b_2 = B()
|
||||
b_2.m2()
|
||||
|
||||
val b_3 = B()
|
||||
b_3.m2()
|
||||
|
||||
val b_4 = <!UNRESOLVED_REFERENCE!>a<!>.<!UNRESOLVED_REFERENCE!>B<!>()
|
||||
b_4.<!UNRESOLVED_REFERENCE!>m2<!>()
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//FILE:a.kt
|
||||
package a
|
||||
|
||||
import b.O
|
||||
import c.O
|
||||
|
||||
//FILE:b.kt
|
||||
package b
|
||||
|
||||
object O {}
|
||||
|
||||
//FILE:c.kt
|
||||
package c
|
||||
|
||||
object O {}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// 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
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// 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
|
||||
@@ -0,0 +1,6 @@
|
||||
import java.lang.reflect.*
|
||||
import java.util.List
|
||||
|
||||
fun foo(
|
||||
p1: Array<String> /* should be resolved to kotlin.Array */,
|
||||
p2: List<String> /* should be resolved to java.util.List */) { }
|
||||
@@ -0,0 +1,17 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
class X
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
class X
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.X
|
||||
import b.X
|
||||
|
||||
class Y : X
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
fun X(p: Int) {}
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
fun X(): Int = 1
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import b.X
|
||||
import a.X
|
||||
|
||||
fun foo() {
|
||||
val v: Int = X()
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// FILE: a.kt
|
||||
package a.x
|
||||
|
||||
class X
|
||||
|
||||
// FILE: b.kt
|
||||
package b.x
|
||||
|
||||
class X
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.x
|
||||
import b.x
|
||||
|
||||
class Y : x.X
|
||||
@@ -0,0 +1,48 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// FILE: 1.kt
|
||||
package a
|
||||
|
||||
class someFun() {}
|
||||
fun someFun(i: Int) {}
|
||||
|
||||
class someVal() {}
|
||||
val Int.someVal: Int get() = 3
|
||||
|
||||
class A
|
||||
|
||||
class B
|
||||
|
||||
// FILE: 2.kt
|
||||
package b
|
||||
|
||||
class someFun
|
||||
class someVal
|
||||
class someAll
|
||||
|
||||
fun A() {}
|
||||
|
||||
class B
|
||||
|
||||
|
||||
// FILE: 3.kt
|
||||
import a.someFun
|
||||
import b.someFun
|
||||
|
||||
import a.someVal
|
||||
import b.someVal
|
||||
|
||||
import a.A
|
||||
import b.A
|
||||
|
||||
// FILE: 4.kt
|
||||
import b.*
|
||||
import a.B
|
||||
|
||||
// FILE: 5.kt
|
||||
package b
|
||||
|
||||
import a.B
|
||||
|
||||
// FILE: 6.kt
|
||||
import a.B
|
||||
import b.B
|
||||
+138
@@ -0,0 +1,138 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
class C1 {
|
||||
companion object O {
|
||||
class A
|
||||
object B
|
||||
|
||||
fun bar() {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class C2 {
|
||||
companion object S {
|
||||
|
||||
val prop: String = ""
|
||||
|
||||
fun o(s: String) = Unit
|
||||
fun o(i: Int) = Unit
|
||||
|
||||
fun Int.ext() = Unit
|
||||
var String.ext: Int
|
||||
get() = 3
|
||||
set(i) {
|
||||
}
|
||||
|
||||
fun A(c: Int) = A()
|
||||
|
||||
class A()
|
||||
|
||||
fun <T> genericFun(t: T, t2: T): T = t
|
||||
}
|
||||
}
|
||||
|
||||
open class Base {
|
||||
fun f() {
|
||||
}
|
||||
|
||||
fun <T> g(t: T) {
|
||||
}
|
||||
|
||||
val p = 1
|
||||
val Int.ext: Int
|
||||
get() = 4
|
||||
}
|
||||
|
||||
interface BaseI<T> {
|
||||
fun fromI(): Int = 3
|
||||
|
||||
fun genericFromI(t: T) = t
|
||||
}
|
||||
|
||||
class C3 {
|
||||
companion object K: Base(), BaseI<Int> {
|
||||
val own: String = ""
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
import a.C1.O.*
|
||||
|
||||
fun testErroneusAllUnderImportFromObject() {
|
||||
A()
|
||||
B
|
||||
bar()
|
||||
}
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.C2.S.prop
|
||||
import a.C2.S.o
|
||||
import a.C2.S.ext
|
||||
import a.C2.S.A
|
||||
import a.C2.S.genericFun
|
||||
import a.C2.S.ext as extRenamed
|
||||
|
||||
fun testImportFromObjectByName() {
|
||||
prop
|
||||
o("a")
|
||||
o(3)
|
||||
3.ext()
|
||||
"".ext = 3
|
||||
val c: Int = "".ext
|
||||
|
||||
3.extRenamed()
|
||||
"".extRenamed = 3
|
||||
val c2: Int = "".extRenamed
|
||||
|
||||
A()
|
||||
A(3)
|
||||
|
||||
val a: Int = genericFun(3, 3)
|
||||
val s: String = genericFun("A", "b")
|
||||
val b: Boolean = genericFun(true, false)
|
||||
}
|
||||
|
||||
fun <T> t(t: T): T {
|
||||
return genericFun(t, t)
|
||||
}
|
||||
|
||||
// FILE: d.kt
|
||||
package d
|
||||
|
||||
import a.C2.S.prop as renamed
|
||||
|
||||
fun testFunImportedFromObjectHasNoDispatchReceiver(l: a.C2.S) {
|
||||
l.<!UNRESOLVED_REFERENCE!>renamed<!>
|
||||
l.prop
|
||||
renamed
|
||||
}
|
||||
|
||||
// FILE: e.kt
|
||||
|
||||
package e
|
||||
|
||||
import a.C3.K.f
|
||||
import a.C3.K.g
|
||||
import a.C3.K.p
|
||||
import a.C3.K.own
|
||||
import a.C3.K.fromI
|
||||
import a.C3.K.genericFromI
|
||||
import a.C3.K.ext
|
||||
|
||||
fun testMembersFromSupertypes() {
|
||||
f()
|
||||
g("")
|
||||
p
|
||||
fromI()
|
||||
|
||||
genericFromI(3)
|
||||
<!INAPPLICABLE_CANDIDATE!>genericFromI<!>("a")
|
||||
|
||||
own
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package a
|
||||
|
||||
import a.A as ER
|
||||
|
||||
interface A {
|
||||
val a: A
|
||||
val b: ER
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
object O {
|
||||
class A
|
||||
object B
|
||||
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
|
||||
object S {
|
||||
|
||||
val prop: String = ""
|
||||
|
||||
fun o(s: String) = Unit
|
||||
fun o(i: Int) = Unit
|
||||
|
||||
fun Int.ext() = Unit
|
||||
var String.ext: Int
|
||||
get() = 3
|
||||
set(i) {
|
||||
}
|
||||
|
||||
fun A(c: Int) = A()
|
||||
|
||||
class A()
|
||||
|
||||
fun <T> genericFun(t: T, t2: T): T = t
|
||||
}
|
||||
|
||||
open class Base {
|
||||
fun f() {
|
||||
}
|
||||
|
||||
fun <T> g(t: T) {
|
||||
}
|
||||
|
||||
val p = 1
|
||||
val Int.ext: Int
|
||||
get() = 4
|
||||
}
|
||||
|
||||
interface BaseI<T> {
|
||||
fun fromI(): Int = 3
|
||||
|
||||
fun genericFromI(t: T) = t
|
||||
}
|
||||
|
||||
object K: Base(), BaseI<Int> {
|
||||
val own: String = ""
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
import a.O.*
|
||||
|
||||
fun testErroneusAllUnderImportFromObject() {
|
||||
A()
|
||||
B
|
||||
bar()
|
||||
}
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.S.prop
|
||||
import a.S.o
|
||||
import a.S.ext
|
||||
import a.S.A
|
||||
import a.S.genericFun
|
||||
import a.S.ext as extRenamed
|
||||
|
||||
fun testImportFromObjectByName() {
|
||||
prop
|
||||
o("a")
|
||||
o(3)
|
||||
3.ext()
|
||||
"".ext = 3
|
||||
val c: Int = "".ext
|
||||
|
||||
3.extRenamed()
|
||||
"".extRenamed = 3
|
||||
val c2: Int = "".extRenamed
|
||||
|
||||
A()
|
||||
A(3)
|
||||
|
||||
val a: Int = genericFun(3, 3)
|
||||
val s: String = genericFun("A", "b")
|
||||
val b: Boolean = genericFun(true, false)
|
||||
}
|
||||
|
||||
fun <T> t(t: T): T {
|
||||
return genericFun(t, t)
|
||||
}
|
||||
|
||||
// FILE: d.kt
|
||||
package d
|
||||
|
||||
import a.S.prop as renamed
|
||||
|
||||
fun testFunImportedFromObjectHasNoDispatchReceiver(l: a.S) {
|
||||
l.<!UNRESOLVED_REFERENCE!>renamed<!>
|
||||
l.prop
|
||||
renamed
|
||||
}
|
||||
|
||||
// FILE: e.kt
|
||||
|
||||
package e
|
||||
|
||||
import a.K.f
|
||||
import a.K.g
|
||||
import a.K.p
|
||||
import a.K.own
|
||||
import a.K.fromI
|
||||
import a.K.genericFromI
|
||||
import a.K.ext
|
||||
|
||||
fun testMembersFromSupertypes() {
|
||||
f()
|
||||
g("")
|
||||
p
|
||||
fromI()
|
||||
|
||||
genericFromI(3)
|
||||
<!INAPPLICABLE_CANDIDATE!>genericFromI<!>("a")
|
||||
|
||||
own
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// FILE: rootPackage.kt
|
||||
class Klass {
|
||||
class Nested
|
||||
}
|
||||
|
||||
class NotImported
|
||||
|
||||
fun function() = ""
|
||||
|
||||
val property = ""
|
||||
|
||||
// FILE: anotherFromRootPackage.kt
|
||||
fun foo(): Klass {
|
||||
function() + property
|
||||
return Klass()
|
||||
}
|
||||
|
||||
// FILE: anotherFromRootPackage.kt
|
||||
package pkg
|
||||
|
||||
import Klass
|
||||
import Klass.Nested
|
||||
import function
|
||||
import property
|
||||
|
||||
fun foo(): Klass {
|
||||
function() + property
|
||||
return Klass()
|
||||
}
|
||||
|
||||
val v: Nested = Nested()
|
||||
val x: NotImported = <!UNRESOLVED_REFERENCE!>NotImported<!>()
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
// 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
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package a
|
||||
|
||||
import a.A.Nested as X
|
||||
|
||||
interface A {
|
||||
class Nested
|
||||
|
||||
val a: Nested
|
||||
val b: X
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// FILE: a.kt
|
||||
|
||||
package foo
|
||||
|
||||
object Bar {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
package baz
|
||||
|
||||
import foo.Bar
|
||||
|
||||
class C: Bar
|
||||
|
||||
fun test() {
|
||||
Bar.bar()
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
//FILE:a.kt
|
||||
package a
|
||||
|
||||
// no error is reported
|
||||
import b.a
|
||||
|
||||
fun foo() = a
|
||||
|
||||
//FILE:b.kt
|
||||
package b
|
||||
|
||||
object a {}
|
||||
@@ -0,0 +1,45 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
// !WITH_NEW_INFERENCE
|
||||
// FILE: 1.kt
|
||||
package k
|
||||
|
||||
private fun zero() {}
|
||||
private fun zero(a: Int) {}
|
||||
private fun zero(a: String) {}
|
||||
|
||||
fun one() {}
|
||||
private fun one(a: Int) {}
|
||||
private fun one(a: String) {}
|
||||
|
||||
fun two() {}
|
||||
fun two(a: Int) {}
|
||||
private fun two(a: String) {}
|
||||
|
||||
fun all() {}
|
||||
fun all(a: Int) {}
|
||||
fun all(a: String) {}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
import k.zero
|
||||
import k.one
|
||||
import k.two
|
||||
import k.all
|
||||
|
||||
fun test() {
|
||||
<!INAPPLICABLE_CANDIDATE!>zero<!>()
|
||||
<!INAPPLICABLE_CANDIDATE!>zero<!>(1)
|
||||
<!INAPPLICABLE_CANDIDATE!>zero<!>("")
|
||||
|
||||
one()
|
||||
<!INAPPLICABLE_CANDIDATE!>one<!>(1)
|
||||
<!INAPPLICABLE_CANDIDATE!>one<!>("")
|
||||
|
||||
two()
|
||||
two(1)
|
||||
<!INAPPLICABLE_CANDIDATE!>two<!>("")
|
||||
|
||||
all()
|
||||
all(1)
|
||||
all("")
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package test
|
||||
|
||||
import test.TopLevelClass.NestedClass
|
||||
import test.TopLevelClass.NestedClass.InNested
|
||||
import test.TopLevelEnum.NestedEnum.NestedEntry
|
||||
import test.TopLevelObject.inObject
|
||||
import test.TopLevelEnum.E1
|
||||
|
||||
private class TopLevelClass {
|
||||
private class NestedClass {
|
||||
class InNested
|
||||
}
|
||||
|
||||
fun test() {
|
||||
InNested()
|
||||
}
|
||||
}
|
||||
|
||||
private enum class TopLevelEnum(private val e: NestedEnum) {
|
||||
E1(NestedEntry);
|
||||
|
||||
private enum class NestedEnum {
|
||||
NestedEntry;
|
||||
}
|
||||
}
|
||||
|
||||
private object TopLevelObject {
|
||||
fun inObject() {}
|
||||
}
|
||||
|
||||
fun testAccess() {
|
||||
<!INAPPLICABLE_CANDIDATE!>NestedClass<!>()
|
||||
E1
|
||||
InNested()
|
||||
NestedEntry
|
||||
inObject()
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
// FILE: A.kt
|
||||
|
||||
class A {
|
||||
private class Nested {
|
||||
object O1
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: B.java
|
||||
|
||||
public class B {
|
||||
private static class JC {
|
||||
public static class JC1 {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
import A.Nested.*
|
||||
import B.JC.JC1
|
||||
|
||||
fun test() {
|
||||
O1
|
||||
JC1()
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package test
|
||||
|
||||
import test.TopLevelClass.NestedClass.*
|
||||
import test.TopLevelEnum.NestedEnum.*
|
||||
import test.TopLevelEnum.*
|
||||
|
||||
private class TopLevelClass {
|
||||
private class NestedClass {
|
||||
class A1
|
||||
object A2
|
||||
}
|
||||
|
||||
fun test() {
|
||||
A1()
|
||||
A2
|
||||
}
|
||||
}
|
||||
|
||||
private enum class TopLevelEnum(private val e: NestedEnum) {
|
||||
E1(NestedEntry);
|
||||
|
||||
private enum class NestedEnum {
|
||||
NestedEntry;
|
||||
}
|
||||
}
|
||||
|
||||
fun testAccess() {
|
||||
E1
|
||||
NestedEntry
|
||||
A1()
|
||||
A2
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package p
|
||||
|
||||
import p.Foo.Nested
|
||||
|
||||
open class Foo {
|
||||
protected class Nested
|
||||
}
|
||||
|
||||
class Bar: Foo() {
|
||||
protected fun foo(): Nested? = null
|
||||
}
|
||||
|
||||
private fun foo(): Nested? = null
|
||||
private fun bar(): p.Foo.Nested? = null
|
||||
@@ -0,0 +1,23 @@
|
||||
// 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() {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// FILE: a.kt
|
||||
|
||||
package weatherForecast
|
||||
|
||||
fun weatherToday() = "snow"
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
package myApp
|
||||
|
||||
import weatherForecast.weatherToday
|
||||
import weatherForecast.weatherToday
|
||||
|
||||
fun needUmbrella() = weatherToday() == "rain"
|
||||
@@ -0,0 +1,14 @@
|
||||
// FILE: a.kt
|
||||
|
||||
package weatherForecast
|
||||
|
||||
fun weatherToday() = "snow"
|
||||
|
||||
// FILE: b.kt
|
||||
|
||||
package myApp
|
||||
|
||||
import weatherForecast.*
|
||||
import weatherForecast.*
|
||||
|
||||
fun needUmbrella() = weatherToday() == "rain"
|
||||
@@ -0,0 +1,102 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// FILE:a.kt
|
||||
package a
|
||||
|
||||
import b.B //class
|
||||
import b.foo //function
|
||||
import b.ext //extension function
|
||||
import b.value //property
|
||||
import b.C.Companion.bar //function from companion object
|
||||
import b.C.Companion.cValue //property from companion object
|
||||
import b.constant.fff //function from val
|
||||
import b.constant.dValue //property from val
|
||||
import b.constant
|
||||
import b.E.Companion.f //val from companion object
|
||||
import smth.illegal
|
||||
import b.C.smth.illegal
|
||||
import b.bar.smth
|
||||
import b.bar.*
|
||||
import b.unr.unr.unr
|
||||
import unr.unr.unr
|
||||
|
||||
fun test(arg: B) {
|
||||
foo(value)
|
||||
arg.ext()
|
||||
|
||||
bar()
|
||||
foo(cValue)
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>fff<!>(<!UNRESOLVED_REFERENCE!>dValue<!>)
|
||||
|
||||
constant.fff(constant.dValue)
|
||||
|
||||
f.f()
|
||||
}
|
||||
|
||||
// FILE:b.kt
|
||||
package b
|
||||
|
||||
class B() {}
|
||||
|
||||
fun foo(i: Int) = i
|
||||
|
||||
fun B.ext() {}
|
||||
|
||||
val value = 0
|
||||
|
||||
class C() {
|
||||
companion object {
|
||||
fun bar() {}
|
||||
val cValue = 1
|
||||
}
|
||||
}
|
||||
|
||||
class D() {
|
||||
fun fff(s: String) = s
|
||||
val dValue = "w"
|
||||
}
|
||||
|
||||
val constant = D()
|
||||
|
||||
class E() {
|
||||
companion object {
|
||||
val f = F()
|
||||
}
|
||||
}
|
||||
|
||||
class F() {
|
||||
fun f() {}
|
||||
}
|
||||
|
||||
fun bar() {}
|
||||
|
||||
//FILE:c.kt
|
||||
package c
|
||||
|
||||
import c.C.*
|
||||
|
||||
object C {
|
||||
fun f() {
|
||||
}
|
||||
val i = 348
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
if (i == 3) f()
|
||||
}
|
||||
|
||||
//FILE:d.kt
|
||||
package d
|
||||
|
||||
import d.A.Companion.B
|
||||
import d.A.Companion.C
|
||||
|
||||
val b : B = B()
|
||||
val c : B = C
|
||||
|
||||
class A() {
|
||||
companion object {
|
||||
open class B() {}
|
||||
object C : B() {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
//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
|
||||
@@ -0,0 +1,18 @@
|
||||
// FILE: a.kt
|
||||
package p1
|
||||
|
||||
private class X
|
||||
private class Y
|
||||
|
||||
// FILE: b.kt
|
||||
package p2
|
||||
|
||||
class X
|
||||
|
||||
// FILE: c.kt
|
||||
package p1
|
||||
|
||||
import p2.*
|
||||
|
||||
val x: X = X()
|
||||
val y: Y = <!INAPPLICABLE_CANDIDATE!>Y<!>()
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// FILE: File.kt
|
||||
package pack
|
||||
|
||||
public open class InetAddressImpl
|
||||
|
||||
// FILE: Main.kt
|
||||
package a
|
||||
|
||||
import java.net.* // should not import java.net.InetAddressImpl because it's package local
|
||||
import pack.*
|
||||
|
||||
class X : <!UNRESOLVED_REFERENCE!>InetAddressImpl<!>() // should resolve to our pack.InetAddressImpl
|
||||
@@ -0,0 +1,9 @@
|
||||
package test
|
||||
|
||||
import some.<!SYNTAX!><!>
|
||||
import <!SYNTAX!>.some<!>
|
||||
import <!SYNTAX!>.kotlin<!>
|
||||
import kotlin.<!SYNTAX!><!>
|
||||
import<!SYNTAX!><!>
|
||||
import <!SYNTAX!>.<!>
|
||||
import <!SYNTAX!>*<!>
|
||||
@@ -0,0 +1,31 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
class A {
|
||||
class B
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
package a
|
||||
|
||||
class D {
|
||||
class B
|
||||
}
|
||||
|
||||
// FILE: c.kt
|
||||
import a.A.B
|
||||
import a.D.B
|
||||
|
||||
fun test(b: B) {
|
||||
B()
|
||||
}
|
||||
|
||||
// FILE: d.kt
|
||||
import a.A.*
|
||||
import a.D.*
|
||||
|
||||
// todo ambiguvity here
|
||||
fun test2(b: B) {
|
||||
B()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
interface A
|
||||
|
||||
operator fun A.plus(other: A): A = this
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
import a.A
|
||||
import a.plus as minus
|
||||
|
||||
fun test(a1: A, a2: A) =
|
||||
a1 - a2
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// FILE: File1.kt
|
||||
package pack1
|
||||
|
||||
private class SomeClass
|
||||
|
||||
// FILE: File2.kt
|
||||
package pack2
|
||||
|
||||
public open class SomeClass
|
||||
|
||||
// FILE: Main.kt
|
||||
package a
|
||||
|
||||
import pack1.*
|
||||
import pack2.*
|
||||
|
||||
class X : <!INAPPLICABLE_CANDIDATE!>SomeClass<!>()
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
// FILE: File1.kt
|
||||
package pack1
|
||||
|
||||
private open class SomeClass
|
||||
|
||||
// FILE: Main.kt
|
||||
package a
|
||||
|
||||
import pack1.*
|
||||
|
||||
private class X : <!INAPPLICABLE_CANDIDATE!>SomeClass<!>()
|
||||
@@ -0,0 +1,152 @@
|
||||
// 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()
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
// FILE: File1.kt
|
||||
package pack1
|
||||
|
||||
public class SomeClass {
|
||||
private class N
|
||||
public open class PublicNested
|
||||
}
|
||||
|
||||
// FILE: File2.kt
|
||||
package pack2
|
||||
|
||||
public open class N
|
||||
|
||||
// FILE: Main.kt
|
||||
package a
|
||||
|
||||
import pack1.SomeClass.*
|
||||
import pack2.*
|
||||
|
||||
class X : <!INAPPLICABLE_CANDIDATE!>N<!>()
|
||||
class Y : PublicNested()
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// FILE: File1.kt
|
||||
package pack1
|
||||
|
||||
public class SomeClass {
|
||||
private class N
|
||||
public open class PublicNested
|
||||
}
|
||||
|
||||
// FILE: Main.kt
|
||||
package a
|
||||
|
||||
import pack1.SomeClass.*
|
||||
|
||||
private class X : <!INAPPLICABLE_CANDIDATE!>N<!>()
|
||||
@@ -0,0 +1,22 @@
|
||||
// FILE: a.kt
|
||||
package a
|
||||
|
||||
val x = 1
|
||||
val y = 1
|
||||
|
||||
// FILE: b.kt
|
||||
package b
|
||||
|
||||
val x = ""
|
||||
|
||||
// FILE: c.kt
|
||||
package c
|
||||
|
||||
import a.x as AX
|
||||
import a.*
|
||||
import b.*
|
||||
import a.y as AY
|
||||
|
||||
val v1: Int = AX
|
||||
val v2: String = <!AMBIGUITY!>x<!>
|
||||
val v3 = y
|
||||
@@ -0,0 +1,47 @@
|
||||
package a
|
||||
|
||||
import a.A.*
|
||||
import a.A.C
|
||||
import a.A.C.*
|
||||
import a.A.D.*
|
||||
import a.A.C.*
|
||||
import a.A.C.G
|
||||
import a.A.E.J.*
|
||||
import a.A.CO.*
|
||||
import a.A.CO
|
||||
|
||||
import a.B.C.*
|
||||
import a.B.C.A.*
|
||||
import a.B.C.D.*
|
||||
|
||||
import a.E.*
|
||||
import a.E.E1
|
||||
import a.E.E2.*
|
||||
|
||||
class A {
|
||||
object C {
|
||||
object G
|
||||
}
|
||||
object D {
|
||||
|
||||
}
|
||||
|
||||
class E {
|
||||
object J
|
||||
}
|
||||
|
||||
companion object CO {
|
||||
object H
|
||||
}
|
||||
}
|
||||
|
||||
enum class E {
|
||||
E1, E2
|
||||
}
|
||||
|
||||
object B {
|
||||
class C {
|
||||
object A
|
||||
object D
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
// FILE:a.kt
|
||||
package a
|
||||
|
||||
val foo = 2
|
||||
fun bar() {}
|
||||
|
||||
class B {
|
||||
val foo = 2
|
||||
fun bar() {}
|
||||
|
||||
class C
|
||||
}
|
||||
|
||||
// FILE:b.kt
|
||||
package a.b.c
|
||||
|
||||
class D {
|
||||
class E {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE:c.kt
|
||||
import<!SYNTAX!><!> ;
|
||||
import <!SYNTAX!>.<!>
|
||||
import a.<!SYNTAX!><!> ;
|
||||
import <!SYNTAX!>.a.<!> ;
|
||||
import <!SYNTAX!>.a.b<!> ;
|
||||
import <!SYNTAX!>.a.B<!> ;
|
||||
import a.B.<!SYNTAX!><!> ;
|
||||
import a.B.C.<!SYNTAX!><!> ;
|
||||
import a.B.foo.<!SYNTAX!><!> ;
|
||||
import a.B.bar.<!SYNTAX!><!> ;
|
||||
import a.b.<!SYNTAX!><!> ;
|
||||
import a.b.c.<!SYNTAX!><!> ;
|
||||
import a.<!SYNTAX!>%<!>.b.c.<!SYNTAX!><!> ;
|
||||
import a.b.c.D.<!SYNTAX!><!> ;
|
||||
import a.b.c.D.E.<!SYNTAX!><!> ;
|
||||
|
||||
// FILE:d.kt
|
||||
import<!SYNTAX!><!>
|
||||
import <!SYNTAX!>.<!>
|
||||
import a.<!SYNTAX!><!>
|
||||
import <!SYNTAX!>.a.<!>
|
||||
import <!SYNTAX!>.a.b<!>
|
||||
import <!SYNTAX!>.a.B<!>
|
||||
import a.B.<!SYNTAX!><!> as<!SYNTAX!><!>
|
||||
import a.B.<!SYNTAX!><!> as A
|
||||
import a.B.<!SYNTAX!><!>
|
||||
import a.B.C.<!SYNTAX!><!>
|
||||
import a.B.foo.<!SYNTAX!><!>
|
||||
import a.B.bar.<!SYNTAX!><!>
|
||||
import a.b.<!SYNTAX!><!>
|
||||
import a.b.c.<!SYNTAX!><!>
|
||||
import a.<!SYNTAX!>%<!>.b.c.<!SYNTAX!><!>
|
||||
import a.b.c.D.<!SYNTAX!><!>
|
||||
import a.b.c.D.E.<!SYNTAX!><!>
|
||||
|
||||
import a<!SYNTAX!>?.<!><!SYNTAX!>b<!>
|
||||
@@ -0,0 +1,68 @@
|
||||
// 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()
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
// FILE:a.kt
|
||||
package a.b
|
||||
|
||||
// FILE:a.kt
|
||||
package a
|
||||
|
||||
val foo = object {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
fun bar() = object {
|
||||
val foo = 239
|
||||
}
|
||||
|
||||
class B {
|
||||
val foo = object {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
fun bar() = object {
|
||||
val foo = 239
|
||||
}
|
||||
}
|
||||
|
||||
object C {
|
||||
val foo = object {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
fun bar() = object {
|
||||
val foo = 239
|
||||
}
|
||||
|
||||
class Nested
|
||||
}
|
||||
|
||||
class D {
|
||||
companion object {
|
||||
val foo = object {
|
||||
fun bar() {}
|
||||
}
|
||||
|
||||
fun bar() = object {
|
||||
val foo = 239
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FILE:b.kt
|
||||
import a
|
||||
import a.b
|
||||
|
||||
import a.foo
|
||||
import a.foo.bar
|
||||
import a.bar
|
||||
import a.bar.foo
|
||||
|
||||
import a.B.foo
|
||||
import a.B.foo.bar
|
||||
import a.B.bar
|
||||
import a.B.bar.foo
|
||||
|
||||
import a.C.foo
|
||||
import a.C.foo.bar
|
||||
import a.C.bar
|
||||
import a.C.bar.foo
|
||||
import a.C.Nested
|
||||
|
||||
import a.D.foo
|
||||
import a.D.foo.bar
|
||||
import a.D.bar
|
||||
import a.D.bar.foo
|
||||
|
||||
import a.D.Companion.foo
|
||||
import a.D.Companion.foo.bar
|
||||
import a.D.Companion.bar
|
||||
import a.D.Companion.bar.foo
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FILE: importFunctionWithAllUnderImport.kt
|
||||
package test
|
||||
|
||||
import testOther.*
|
||||
|
||||
class B: A()
|
||||
val inferTypeFromImportedFun = testFun()
|
||||
|
||||
// FILE: importFunctionWithAllUnderImportOther.kt
|
||||
package testOther
|
||||
|
||||
open class A
|
||||
fun testFun() = 1
|
||||
Vendored
+22
@@ -0,0 +1,22 @@
|
||||
//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
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// FILE: A.kt
|
||||
|
||||
import B.foo
|
||||
|
||||
fun test() {
|
||||
<!INAPPLICABLE_CANDIDATE!>foo<!>
|
||||
}
|
||||
|
||||
// FILE: B.kt
|
||||
object B : C<String>()
|
||||
|
||||
// FILE: C.kt
|
||||
|
||||
open class C<T> {
|
||||
private var foo: String = "abc"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
// FILE: 1.kt
|
||||
|
||||
package anotherpackage
|
||||
|
||||
interface IInterfaceInput<in T> {
|
||||
fun doSomething(input: T)
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
|
||||
package anotherpackage
|
||||
|
||||
interface IInterfaceOutput<out T> {
|
||||
fun doSomething(): T?
|
||||
}
|
||||
|
||||
// FILE: 3.kt
|
||||
|
||||
package mypackage.nestedpackage
|
||||
|
||||
import mypackage.nestedpackage.Bar.Baz
|
||||
import anotherpackage.IInterfaceInput
|
||||
import anotherpackage.IInterfaceOutput
|
||||
|
||||
class Foo() {
|
||||
class FooNest {
|
||||
val bar = Bar()
|
||||
|
||||
fun myFun(): List<Baz> {
|
||||
return <!UNRESOLVED_REFERENCE!>listOf<!>(bar.doSomething())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Bar() : IInterfaceInput<Baz>, IInterfaceOutput<Baz> {
|
||||
override fun doSomething(input: Baz) {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
override fun doSomething(): Baz {
|
||||
throw UnsupportedOperationException("not implemented")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
data class Baz(val myField: Int)
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
// FILE: propertyClassFileDependencyRecursion.kt
|
||||
package test
|
||||
|
||||
import other.prop
|
||||
|
||||
// Note: "prop" is expected to be unresolved and replaced to Any
|
||||
class PropType: prop
|
||||
|
||||
// Note: this time "prop" should be resolved and type should be inferred for "checkTypeProp"
|
||||
val checkTypeProp = prop
|
||||
|
||||
// FILE: propertyClassFileDependencyRecursionOther.kt
|
||||
package other
|
||||
|
||||
import test.PropType
|
||||
|
||||
val prop: PropType? = null
|
||||
@@ -0,0 +1,105 @@
|
||||
// !WITH_NEW_INFERENCE
|
||||
// FILE:a.kt
|
||||
package a
|
||||
|
||||
<!SYNTAX!><<!><!SYNTAX!><<!><!SYNTAX!><<!> <!SYNTAX!>FOOO<!><!SYNTAX!><!>
|
||||
import b.B //class
|
||||
import b.foo //function
|
||||
import b.ext //extension function
|
||||
import b.value //property
|
||||
import b.C.Companion.bar //function from companion object
|
||||
import b.C.Companion.cValue //property from companion object
|
||||
import b.constant.fff //function from val
|
||||
import b.constant.dValue //property from val
|
||||
import smth.illegal
|
||||
import b.C.smth.illegal
|
||||
|
||||
<!SYNTAX!><<!><!SYNTAX!><<!><!SYNTAX!><<!><!SYNTAX!>HEAD<!><!SYNTAX!><!>
|
||||
import b.bar.smth
|
||||
import b.bar.*
|
||||
import b.unr.unr.unr
|
||||
import unr.unr.unr
|
||||
import b.constant
|
||||
import b.E.Companion.f //val from companion object
|
||||
|
||||
fun test(arg: B) {
|
||||
foo(value)
|
||||
arg.ext()
|
||||
|
||||
bar()
|
||||
foo(cValue)
|
||||
|
||||
<!UNRESOLVED_REFERENCE!>fff<!>(<!UNRESOLVED_REFERENCE!>dValue<!>)
|
||||
|
||||
constant.fff(constant.dValue)
|
||||
|
||||
f.f()
|
||||
}
|
||||
|
||||
// FILE:b.kt
|
||||
package b
|
||||
|
||||
class B() {}
|
||||
|
||||
fun foo(i: Int) = i
|
||||
|
||||
fun B.ext() {}
|
||||
|
||||
val value = 0
|
||||
|
||||
class C() {
|
||||
companion object {
|
||||
fun bar() {}
|
||||
val cValue = 1
|
||||
}
|
||||
}
|
||||
|
||||
class D() {
|
||||
fun fff(s: String) = s
|
||||
val dValue = "w"
|
||||
}
|
||||
|
||||
val constant = D()
|
||||
|
||||
class E() {
|
||||
companion object {
|
||||
val f = F()
|
||||
}
|
||||
}
|
||||
|
||||
class F() {
|
||||
fun f() {}
|
||||
}
|
||||
|
||||
fun bar() {}
|
||||
|
||||
//FILE:c.kt
|
||||
package c
|
||||
|
||||
import c.C.*
|
||||
|
||||
object C {
|
||||
fun f() {
|
||||
}
|
||||
val i = 348
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
if (i == 3) f()
|
||||
}
|
||||
|
||||
//FILE:d.kt
|
||||
package d
|
||||
|
||||
import d.A.Companion.B
|
||||
import d.A.Companion.C
|
||||
|
||||
val b : B = B()
|
||||
val c : B = C
|
||||
|
||||
class A() {
|
||||
companion object {
|
||||
open class B() {}
|
||||
object C : B() {}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user