Test: add java source files as JavaSourceRoot

so that those can be properly populated in SingleJavaRootsIndex
This commit is contained in:
Jinseong Jeon
2022-06-13 15:36:57 -07:00
committed by Ilya Kirillov
parent cb2a54cef8
commit a2da690afd
37 changed files with 285 additions and 93 deletions
@@ -3,5 +3,5 @@ FILE: main.kt
public final fun test(): R|kotlin/Unit| {
lval some: R|foo/Some| = R|foo/Some.Some|()
lval another: <ERROR TYPE REF: Unresolved name: Another> = <Unresolved name: Another>#()
lval another: R|foo/Another| = R|foo/Another.Another|()
}
@@ -11,5 +11,5 @@ package foo
fun test() {
val some = Some()
val another = <!UNRESOLVED_REFERENCE!>Another<!>()
val another = Another()
}
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_FIR: JVM_IR
// FIR status: ARGUMENT_TYPE_MISMATCH on J.foo { ... }
// SAM_CONVERSIONS: CLASS
// ^ test checks reflection for synthetic classes
// FILE: J.java
@@ -46,3 +46,22 @@ public/*package*/ open class AnnotatedTypeArguments {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
public/*package*/ interface L</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface P</*0*/ X : kotlin.Any!, /*1*/ Y : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface S</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -43,3 +43,15 @@ public/*package*/ open class Outer {
}
}
public/*package*/ interface X</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface Y</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,5 +1,17 @@
package
public/*package*/ interface Base</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface Derived</*0*/ E : kotlin.Any!> : Base<E!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class Outer {
public/*package*/ constructor Outer()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -36,3 +36,11 @@ public final class D : C {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @javax.annotation.meta.TypeQualifier /* annotation class not found */ public final annotation class MyTypeQualifier : kotlin.Annotation {
public constructor MyTypeQualifier()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -24,6 +24,13 @@ package test {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class Internal {
public/*package*/ constructor Internal()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class My {
public constructor My()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -2,6 +2,14 @@ package
public fun test(): kotlin.Unit
public/*package*/ abstract class MyComparableSettings : kotlin.Comparable<MyComparableSettings!> {
public/*package*/ constructor MyComparableSettings()
public abstract override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: MyComparableSettings!): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*1*/ PS : MyComparableSettings!, /*2*/ L : MySettingsListener<PS!>!> {
public constructor MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*1*/ PS : MyComparableSettings!, /*2*/ L : MySettingsListener<PS!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -12,3 +20,11 @@ public open class MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*1*/ PS : My
// Static members
public open fun getSettings(): (MySettings<(raw) *, (raw) MyComparableSettings!, (raw) MySettingsListener<MyComparableSettings!>!>..MySettings<*, *, out MySettingsListener<*>!>?)
}
public/*package*/ abstract class MySettingsListener</*0*/ S : MyComparableSettings!> {
public/*package*/ constructor MySettingsListener</*0*/ S : MyComparableSettings!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -2,6 +2,14 @@ package
public fun test(): kotlin.Unit
public/*package*/ abstract class MyComparableSettings : kotlin.Comparable<MyComparableSettings!> {
public/*package*/ constructor MyComparableSettings()
public abstract override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: MyComparableSettings!): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*1*/ PS : MyComparableSettings!, /*2*/ L : MySettingsListener<PS!>!> {
public/*package*/ constructor MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*1*/ PS : MyComparableSettings!, /*2*/ L : MySettingsListener<PS!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -12,3 +20,11 @@ public/*package*/ open class MySettings</*0*/ SS : MySettings<SS!, PS!, L!>!, /*
// Static members
public open fun getSettings(): MySettings<*, *, *>!
}
public/*package*/ abstract class MySettingsListener</*0*/ S : MyComparableSettings!> {
public/*package*/ constructor MySettingsListener</*0*/ S : MyComparableSettings!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -1,26 +0,0 @@
// SKIP_JAVAC
// FILE: A.java
public class A {
public B b() {}
public F f() {}
}
class B { public void bar() {} }
// FILE: C.java
class D {
public void baz() {}
}
// FILE: E.java
class F {
public void foobaz() {}
}
// FILE: main.kt
fun main(x: A) {
x.b().<!UNRESOLVED_REFERENCE!>bar<!>()
x.f().<!UNRESOLVED_REFERENCE!>foobaz<!>()
<!UNRESOLVED_REFERENCE!>D<!>().baz()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// SKIP_JAVAC
// FILE: A.java
public class A {
@@ -20,7 +21,7 @@ class F {
// FILE: main.kt
fun main(x: A) {
x.b().bar()
x.<!MISSING_DEPENDENCY_CLASS!>f<!>().<!UNRESOLVED_REFERENCE!>foobaz<!>()
x.f().foobaz()
<!UNRESOLVED_REFERENCE!>D<!>().<!DEBUG_INFO_MISSING_UNRESOLVED!>baz<!>()
D().baz()
}
@@ -10,3 +10,28 @@ public open class A {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class B {
public/*package*/ constructor B()
public open fun bar(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class D {
public/*package*/ constructor D()
public open fun baz(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class F {
public/*package*/ constructor F()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun foobaz(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -20,7 +20,7 @@ interface I<P, L> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // should be OK
t.id // should be OK
}
@@ -2,6 +2,20 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I</*0*/ P : kotlin.Any!, /*1*/ L : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I<P!, B!>!, /*1*/ P : kotlin.Any!> {
public/*package*/ constructor X</*0*/ B : I<P!, B!>!, /*1*/ P : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -20,7 +20,7 @@ interface I<P> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // should be OK
t.id // should be OK
}
@@ -2,6 +2,20 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I</*0*/ P : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I<B!>!> {
public/*package*/ constructor X</*0*/ B : I<B!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -20,7 +20,7 @@ interface I<P> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // should be OK
t.id // should be OK
}
@@ -2,6 +2,20 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I</*0*/ P : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!> {
public/*package*/ constructor X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -21,7 +21,7 @@ interface I2<S> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // error before
t.id // error before
}
@@ -2,6 +2,26 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I1</*0*/ P : kotlin.Any!, /*1*/ A : kotlin.Any!, /*2*/ F : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I2</*0*/ S : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I1<P!, P!, P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I1<I2<B!>!, B!, I1<P!, I2<B!>!, P!>!>!> {
public/*package*/ constructor X</*0*/ B : I1<P!, P!, P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I1<I2<B!>!, B!, I1<P!, I2<B!>!, P!>!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -20,7 +20,7 @@ interface I<P> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // should be OK
t.id // should be OK
}
@@ -2,6 +2,20 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I</*0*/ P : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I<B!>!> {
public/*package*/ constructor X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I<B!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -20,7 +20,7 @@ interface I<P> {}
// FILE: test.kt
fun test() {
val t = X.E.<!UNRESOLVED_REFERENCE!>t<!>
val t = X.E.t
t
t.<!UNRESOLVED_REFERENCE!>id<!> // should be OK
t.id // should be OK
}
@@ -2,6 +2,20 @@ package
public fun test(): kotlin.Unit
public/*package*/ open class E</*0*/ T : kotlin.Any!> {
public/*package*/ constructor E</*0*/ T : kotlin.Any!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getT(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ interface I</*0*/ P : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I<P!>!> {
public/*package*/ constructor X</*0*/ B : I<P!>!, /*1*/ P : kotlin.Any!, /*2*/ A : I<P!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -2,6 +2,27 @@ package
public fun main(): kotlin.Unit
public/*package*/ open class Bar {
public/*package*/ constructor Bar()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class BaseOperation</*0*/ T : Bar!, /*1*/ L : Foo<T!>!> {
public/*package*/ constructor BaseOperation</*0*/ T : Bar!, /*1*/ L : Foo<T!>!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public/*package*/ open class Foo</*0*/ E : Bar!> {
public/*package*/ constructor Foo</*0*/ E : Bar!>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class Test : BaseOperation<(raw) Bar!, (raw) Foo<Bar!>!> {
public constructor Test()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -33,7 +33,7 @@ import a.AImpl
fun test1(a: A) {
if (a is AImpl) {
(a as A).b().bar() // OK
a.b().<!UNRESOLVED_REFERENCE!>bar<!>()
a.b().<!INVISIBLE_REFERENCE!>bar<!>()
}
}
@@ -1,14 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass<String>): String {
return javaClass.doSomething("", 1) <!ARGUMENT_TYPE_MISMATCH!>{ s: String -> "" }<!>
}
// FILE: JavaClass.java
public class JavaClass<T> {
public T doSomething(T t, int anInt, I<T> i) { return t; }
}
interface I<T> {
T doIt(T t);
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass<String>): String {
@@ -2,6 +2,13 @@ package
public fun foo(/*0*/ javaClass: JavaClass<kotlin.String>): kotlin.String
public/*package*/ interface I</*0*/ T : kotlin.Any!> {
public abstract fun doIt(/*0*/ t: T!): T!
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class JavaClass</*0*/ T : kotlin.Any!> {
public constructor JavaClass</*0*/ T : kotlin.Any!>()
public open fun doSomething(/*0*/ t: T!, /*1*/ anInt: kotlin.Int, /*2*/ i: I<T!>!): T!
@@ -1,14 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass): String {
return javaClass.doSomething("") <!ARGUMENT_TYPE_MISMATCH!>{ <!ARGUMENT_TYPE_MISMATCH, UNRESOLVED_REFERENCE!>it<!> }<!>
}
// FILE: JavaClass.java
public class JavaClass {
public <T> T doSomething(T t, I<T> i) { return i.run(t); }
}
interface I<T> {
T run(T t);
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass): String {
@@ -2,6 +2,13 @@ package
public fun foo(/*0*/ javaClass: JavaClass): kotlin.String
public/*package*/ interface I</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract fun run(/*0*/ t: T!): T!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class JavaClass {
public constructor JavaClass()
public open fun </*0*/ T : kotlin.Any!> doSomething(/*0*/ t: T!, /*1*/ i: I<T!>!): T!
@@ -1,16 +0,0 @@
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass<Int>) {
val a: String = javaClass.doSomething1("", 1) <!ARGUMENT_TYPE_MISMATCH!>{ p: String -> p }<!>
val b: String = javaClass.doSomething2("", 1, true) <!ARGUMENT_TYPE_MISMATCH!>{ p: Int -> p }<!>
}
// FILE: JavaClass.java
public class JavaClass<X> {
public <T> T doSomething1(T t, X x, I<T> i) { return i.run(t); }
public <T> T doSomething2(T t, X x, boolean p, I<X> i) { return i.run(t); }
}
interface I<T> {
T run(T t);
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// JAVAC_EXPECTED_FILE
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass<Int>) {
@@ -2,6 +2,13 @@ package
public fun foo(/*0*/ javaClass: JavaClass<kotlin.Int>): kotlin.Unit
public/*package*/ interface I</*0*/ T : kotlin.Any!> {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public abstract fun run(/*0*/ t: T!): T!
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class JavaClass</*0*/ X : kotlin.Any!> {
public constructor JavaClass</*0*/ X : kotlin.Any!>()
public open fun </*0*/ T : kotlin.Any!> doSomething1(/*0*/ t: T!, /*1*/ x: X!, /*2*/ i: I<T!>!): T!
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.services.configuration
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.util.SystemInfo
import com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
@@ -217,17 +218,29 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig
val javaSourceFiles = module.javaFiles.filter { INCLUDE_JAVA_AS_BINARY !in it.directives }
if (javaSourceFiles.isNotEmpty() && JvmEnvironmentConfigurationDirectives.SKIP_JAVA_SOURCES !in module.directives && ALL_JAVA_AS_BINARY !in registeredDirectives) {
javaSourceFiles.forEach { testServices.sourceFileProvider.getRealFileForSourceFile(it) }
if (javaSourceFiles.isNotEmpty() &&
JvmEnvironmentConfigurationDirectives.SKIP_JAVA_SOURCES !in module.directives &&
ALL_JAVA_AS_BINARY !in registeredDirectives
) {
// NB: [getRealFileForSourceFile] is misleading, since it actually creates a real file from the given test file as well.
val realSourceFileMap = javaSourceFiles.associateWith { testServices.sourceFileProvider.getRealFileForSourceFile(it) }
// TODO: temporary hack to provide java 9 modules in the source mode properly (see comment on ClasspathRootsResolved::addModularRoots)
addJavaCompiledModulesFromDependentKotlinModules(configuration, configurationKind, module, bySources = true)
val moduleInfoFiles = javaSourceFiles.filter { it.name == MODULE_INFO_FILE }
val (moduleInfoFiles, sourceFiles) = javaSourceFiles.partition { it.name == MODULE_INFO_FILE }
if (moduleInfoFiles.isNotEmpty()) {
addJavaSourceRootsByJavaModules(configuration, moduleInfoFiles)
} else {
sourceFiles.forEach l@{ testFile ->
val file = realSourceFileMap[testFile] ?: return@l
if (JvmEnvironmentConfigurationDirectives.USE_JAVAC !in module.directives &&
!file.isDirectory &&
file.extension == JavaFileType.DEFAULT_EXTENSION
) {
configuration.addJavaSourceRoot(file)
}
}
configuration.addJavaSourceRoot(testServices.sourceFileProvider.javaSourceDirectory)
}
}