Correctly map declaration owner in JVM codegen

"context.contextKind()" was incorrect in
ExpressionCodegen.intermediateValueForProperty(), because it represents the
context of the call site, not the context of the property declaration

 #KT-4878 Fixed
This commit is contained in:
Alexander Udalov
2014-04-18 20:37:06 +04:00
parent fbf9f5f7d0
commit d913dfb1aa
9 changed files with 57 additions and 38 deletions

View File

@@ -1,10 +0,0 @@
class MyWrongClass : FieldAccess() {
}
fun box() : String {
val clazz = MyWrongClass()
clazz.fieldO = "O"
FieldAccess.fieldK = "K"
return clazz.fieldO!! + FieldAccess.fieldK!!
}

View File

@@ -0,0 +1,3 @@
public class fieldAccessFromExtensionInTraitImpl {
public final String result = "OK";
}

View File

@@ -0,0 +1,13 @@
// KT-4878
import fieldAccessFromExtensionInTraitImpl as D
trait T {
fun Int.foo(d: D) = d.result!!
}
class A : T {
fun bar() = 42.foo(D())
}
fun box() = A().bar()

View File

@@ -1,5 +1,5 @@
class FieldAccess {
class fieldAccessViaSubclass {
public String fieldO;
public static String fieldK;
}
}

View File

@@ -0,0 +1,12 @@
// KT-3492
class MyWrongClass : fieldAccessViaSubclass() {
}
fun box() : String {
val clazz = MyWrongClass()
clazz.fieldO = "O"
fieldAccessViaSubclass.fieldK = "K"
return clazz.fieldO!! + fieldAccessViaSubclass.fieldK!!
}