Iniital implementation of synthetic extensions for SAM-adapter functions (non-static only)

This commit is contained in:
Valentin Kipyatkov
2015-07-28 17:13:09 +03:00
parent 8b3870cc33
commit 729085ec9a
106 changed files with 624 additions and 364 deletions
@@ -0,0 +1,52 @@
// FILE: KotlinFile.kt
abstract class KotlinClass : JavaClass(), KotlinInterface, JavaInterface {
override fun getSomething1(): Int = 1
override fun getSomething3(): String = ""
override fun setSomething4(value: String) {}
override fun getSomething5(): String = ""
}
interface KotlinInterface {
public fun getSomething1(): Int
public fun getSomething4(): String
}
fun foo(k: KotlinClass) {
useInt(k.getSomething1())
useInt(k.something1)
useInt(k.getSomething2())
useInt(k.something2)
useString(k.getSomething3())
useString(k.something3)
k.setSomething4("")
k.something4 += ""
k.setSomething4(<!NULL_FOR_NONNULL_TYPE!>null<!>)
k.something4 = null
useString(k.getSomething5())
useString(k.something5)
k.setSomething5(1)
k.something5 = <!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>
}
fun useInt(<!UNUSED_PARAMETER!>i<!>: Int) {}
fun useString(<!UNUSED_PARAMETER!>i<!>: String) {}
// FILE: JavaClass.java
public class JavaClass {
public int getSomething1() { return 1; }
public int getSomething2() { return 1; }
public Object getSomething3() { return null; }
}
// FILE: JavaInterface.java
public interface JavaInterface {
String getSomething4();
void setSomething4(String value);
Object getSomething5();
void setSomething5(Object value);
}