Initial implementation of synthetic extensions resolve

This commit is contained in:
Valentin Kipyatkov
2015-07-07 18:23:56 +03:00
parent c92b43c94b
commit 2e351f3e4d
26 changed files with 559 additions and 12 deletions
@@ -0,0 +1,31 @@
// FILE: KotlinFile.kt
open class KotlinClass1 : JavaClass1() {
fun getSomethingKotlin1(): Int = 1
}
class KotlinClass2 : JavaClass2() {
fun getSomethingKotlin2(): Int = 1
}
fun foo(k: KotlinClass2) {
useInt(k.getSomething1())
useInt(k.something1)
useInt(k.getSomething2())
useInt(k.something2)
useInt(k.getSomethingKotlin1())
useInt(k.getSomethingKotlin2())
k.<!UNRESOLVED_REFERENCE!>somethingKotlin1<!>
k.<!UNRESOLVED_REFERENCE!>somethingKotlin2<!>
}
fun useInt(<!UNUSED_PARAMETER!>i<!>: Int) {}
// FILE: JavaClass1.java
public class JavaClass1 {
public int getSomething1() { return 1; }
}
// FILE: JavaClass2.java
public class JavaClass2 extends KotlinClass1 {
public int getSomething2() { return 1; }
}
@@ -0,0 +1,42 @@
package
internal fun foo(/*0*/ k: KotlinClass2): kotlin.Unit
internal fun useInt(/*0*/ i: kotlin.Int): kotlin.Unit
public open class JavaClass1 {
public constructor JavaClass1()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public open class JavaClass2 : KotlinClass1 {
public constructor JavaClass2()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
public open fun getSomething2(): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal open class KotlinClass1 : JavaClass1 {
public constructor KotlinClass1()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
internal final fun getSomethingKotlin1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class KotlinClass2 : JavaClass2 {
public constructor KotlinClass2()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun getSomething1(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun getSomething2(): kotlin.Int
internal final override /*1*/ /*fake_override*/ fun getSomethingKotlin1(): kotlin.Int
internal final fun getSomethingKotlin2(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,6 @@
// FILE: KotlinFile.kt
import java.io.File
fun foo(file: File) {
file.absolutePath.length()
}
@@ -0,0 +1,3 @@
package
internal fun foo(/*0*/ file: java.io.File): kotlin.Unit
@@ -0,0 +1,14 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
javaClass.<!UNRESOLVED_REFERENCE!>something1<!>
javaClass.<!UNRESOLVED_REFERENCE!>something2<!>
javaClass.<!UNRESOLVED_REFERENCE!>somethingStatic<!>
}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething1(int p) { return p; }
public <T> T getSomething2() { return null; }
public static int getSomethingStatic() { return 1; }
}
@@ -0,0 +1,15 @@
package
internal fun foo(/*0*/ javaClass: JavaClass): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething1(/*0*/ p: kotlin.Int): kotlin.Int
public open fun </*0*/ T> getSomething2(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public open fun getSomethingStatic(): kotlin.Int
}
@@ -0,0 +1,26 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
<!VAL_REASSIGNMENT!>javaClass.something1<!>++
<!VAL_REASSIGNMENT!>javaClass.something2<!>++
<!VAL_REASSIGNMENT!>javaClass.something3<!>++
<!VAL_REASSIGNMENT!>javaClass.something4<!>++
<!VAL_REASSIGNMENT!>javaClass.something5<!>++
}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething1() { return 1; }
public void setSomething1(int value, char c) { }
public int getSomething2() { return 1; }
public void setSomething2(String value) { }
public int getSomething3() { return 1; }
public int setSomething3(int value) { return value; }
public int getSomething4() { return 1; }
public <T> void setSomething4(int value) { return value; }
public int getSomething5() { return 1; }
public static void setSomething5(int value) { }
}
@@ -0,0 +1,22 @@
package
internal fun foo(/*0*/ javaClass: JavaClass): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething1(): kotlin.Int
public open fun getSomething2(): kotlin.Int
public open fun getSomething3(): kotlin.Int
public open fun getSomething4(): kotlin.Int
public open fun getSomething5(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun setSomething1(/*0*/ value: kotlin.Int, /*1*/ c: kotlin.Char): kotlin.Unit
public open fun setSomething2(/*0*/ value: kotlin.String!): kotlin.Unit
public open fun setSomething3(/*0*/ value: kotlin.Int): kotlin.Int
public open fun </*0*/ T> setSomething4(/*0*/ value: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public open fun setSomething5(/*0*/ value: kotlin.Int): kotlin.Unit
}
@@ -0,0 +1,10 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass<String>) {
javaClass.something += "x"
}
// FILE: JavaClass.java
public class JavaClass<T> {
public T getSomething() { return null; }
public void setSomething(T value) { }
}
@@ -0,0 +1,12 @@
package
internal fun foo(/*0*/ javaClass: JavaClass<kotlin.String>): kotlin.Unit
public open class JavaClass</*0*/ T> {
public constructor JavaClass</*0*/ T>()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething(): T!
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun setSomething(/*0*/ value: T!): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,20 @@
// FILE: KotlinFile.kt
class KotlinClass {
fun getSomething(): Int = 1
}
fun foo(javaClass: JavaClass, kotlinClass: KotlinClass) {
useInt(javaClass.getSomething())
useInt(javaClass.something)
<!VAL_REASSIGNMENT!>javaClass.something<!> = 1
javaClass.<!UNRESOLVED_REFERENCE!>Something<!>
useInt(kotlinClass.getSomething())
kotlinClass.<!UNRESOLVED_REFERENCE!>something<!>
}
fun useInt(<!UNUSED_PARAMETER!>i<!>: Int) {}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething() { return 1; }
}
@@ -0,0 +1,20 @@
package
internal fun foo(/*0*/ javaClass: JavaClass, /*1*/ kotlinClass: KotlinClass): kotlin.Unit
internal fun useInt(/*0*/ i: kotlin.Int): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal final class KotlinClass {
public constructor KotlinClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
internal final fun getSomething(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,10 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
javaClass.something++
}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething() { return 1; }
public void setSomething(int value) { }
}
@@ -0,0 +1,12 @@
package
internal fun foo(/*0*/ javaClass: JavaClass): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open fun setSomething(/*0*/ value: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,12 @@
// FILE: KotlinFile.kt
fun JavaClass.foo() {
useInt(getSomething())
useInt(something)
}
fun useInt(<!UNUSED_PARAMETER!>i<!>: Int) {}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething() { return 1; }
}
@@ -0,0 +1,12 @@
package
internal fun useInt(/*0*/ i: kotlin.Int): kotlin.Unit
internal fun JavaClass.foo(): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun getSomething(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,18 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
javaClass.somethingPublic
javaClass.<!UNRESOLVED_REFERENCE!>somethingProtected<!>
javaClass.<!UNRESOLVED_REFERENCE!>somethingPrivate<!>
javaClass.<!UNRESOLVED_REFERENCE!>somethingPackage<!>
<!VAL_REASSIGNMENT!>javaClass.somethingPublic<!> = 1
}
// FILE: JavaClass.java
public class JavaClass {
public int getSomethingPublic() { return 1; }
protected int getSomethingProtected() { return 1; }
private int getSomethingPrivate() { return 1; }
int getSomethingPackage() { return 1; }
protected void setSomethingPublic(int value) {}
}
@@ -0,0 +1,15 @@
package
internal fun foo(/*0*/ javaClass: JavaClass): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public/*package*/ open fun getSomethingPackage(): kotlin.Int
private open fun getSomethingPrivate(): kotlin.Int
protected/*protected and package*/ open fun getSomethingProtected(): kotlin.Int
public open fun getSomethingPublic(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
protected/*protected and package*/ open fun setSomethingPublic(/*0*/ value: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -0,0 +1,9 @@
// FILE: KotlinFile.kt
fun foo(javaClass: JavaClass) {
javaClass.<!UNRESOLVED_REFERENCE!>something<!> = 1
}
// FILE: JavaClass.java
public class JavaClass {
public void setSomething(int value) { }
}
@@ -0,0 +1,11 @@
package
internal fun foo(/*0*/ javaClass: JavaClass): kotlin.Unit
public open class JavaClass {
public constructor JavaClass()
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 fun setSomething(/*0*/ value: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}