KT-8530 Synthetic properties doesn't work with smart casts
#KT-8530 Fixed
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
// FILE: KotlinFile.kt
|
||||
fun foo(o: JavaInterface2): Int {
|
||||
if (o is JavaClass) {
|
||||
<!DEBUG_INFO_SMARTCAST!>o<!>.something++
|
||||
return <!DEBUG_INFO_SMARTCAST!>o<!>.x + o.something2
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public abstract class JavaClass extends BaseClass implements JavaInterface {
|
||||
public int getSomething() { return 1; }
|
||||
public void setSomething(int value) { }
|
||||
}
|
||||
|
||||
// FILE: BaseClass.java
|
||||
public abstract class BaseClass implements JavaInterface {
|
||||
}
|
||||
|
||||
// FILE: JavaInterface.java
|
||||
public interface JavaInterface {
|
||||
int getX();
|
||||
}
|
||||
|
||||
// FILE: JavaInterface2.java
|
||||
public interface JavaInterface2 {
|
||||
int getSomething2();
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package
|
||||
|
||||
public /*synthesized*/ fun JavaInterface(/*0*/ function: () -> kotlin.Int): JavaInterface
|
||||
public /*synthesized*/ fun JavaInterface2(/*0*/ function: () -> kotlin.Int): JavaInterface2
|
||||
internal fun foo(/*0*/ o: JavaInterface2): kotlin.Int
|
||||
|
||||
public abstract class BaseClass : JavaInterface {
|
||||
public constructor BaseClass()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun getX(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public abstract class JavaClass : BaseClass, JavaInterface {
|
||||
public constructor JavaClass()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun getSomething(): kotlin.Int
|
||||
public abstract override /*2*/ /*fake_override*/ fun getX(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open fun setSomething(/*0*/ value: kotlin.Int): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface JavaInterface {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun getX(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface JavaInterface2 {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun getSomething2(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// FILE: KotlinFile.kt
|
||||
fun Any.foo(): Int {
|
||||
if (this is JavaClass) {
|
||||
something++
|
||||
return x
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// FILE: JavaClass.java
|
||||
public abstract class JavaClass extends BaseClass implements JavaInterface {
|
||||
public int getSomething() { return 1; }
|
||||
public void setSomething(int value) { }
|
||||
}
|
||||
|
||||
// FILE: BaseClass.java
|
||||
public abstract class BaseClass implements JavaInterface {
|
||||
}
|
||||
|
||||
// FILE: JavaInterface.java
|
||||
public interface JavaInterface {
|
||||
int getX();
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
package
|
||||
|
||||
public /*synthesized*/ fun JavaInterface(/*0*/ function: () -> kotlin.Int): JavaInterface
|
||||
internal fun kotlin.Any.foo(): kotlin.Int
|
||||
|
||||
public abstract class BaseClass : JavaInterface {
|
||||
public constructor BaseClass()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*1*/ /*fake_override*/ fun getX(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public abstract class JavaClass : BaseClass, JavaInterface {
|
||||
public constructor JavaClass()
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open fun getSomething(): kotlin.Int
|
||||
public abstract override /*2*/ /*fake_override*/ fun getX(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open fun setSomething(/*0*/ value: kotlin.Int): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface JavaInterface {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun getX(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Reference in New Issue
Block a user