diff --git a/j2k/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt b/j2k/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt index 2a17fa10bbd..0fc68ee8b0c 100644 --- a/j2k/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt +++ b/j2k/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.kt @@ -20,7 +20,6 @@ import com.intellij.psi.* import com.intellij.psi.tree.IElementType import org.jetbrains.jet.j2k.ast.* import org.jetbrains.jet.lang.types.expressions.OperatorConventions -import java.util.ArrayList import com.intellij.psi.CommonClassNames.* import com.intellij.psi.util.PsiTreeUtil import org.jetbrains.jet.lang.types.lang.PrimitiveType @@ -34,6 +33,8 @@ import org.jetbrains.jet.lang.psi.psiUtil.isExtensionDeclaration import org.jetbrains.jet.lang.psi.JetPropertyAccessor import com.intellij.psi.impl.light.LightField import org.jetbrains.jet.lang.resolve.java.JvmAbi +import org.jetbrains.jet.lang.psi.JetParameter +import org.jetbrains.jet.lang.psi.JetNamedDeclaration class ExpressionVisitor(private val converter: Converter, private val usageReplacementMap: Map = mapOf()) : JavaElementVisitor() { @@ -165,8 +166,11 @@ class ExpressionVisitor(private val converter: Converter, if (target is KotlinLightMethod) { val origin = target.origin val isTopLevel = origin?.getParentByType(javaClass(), true) == null - if (origin is JetProperty || origin is JetPropertyAccessor) { - val property = if (origin is JetProperty) origin else origin.getParent() as JetProperty + if (origin is JetProperty || origin is JetPropertyAccessor || origin is JetParameter) { + val property = if (origin is JetPropertyAccessor) + origin.getParent() as JetProperty + else + origin as JetNamedDeclaration val parameterCount = target.getParameterList().getParameters().size if (parameterCount == arguments.size) { val propertyName = Identifier(property.getName()!!, isNullable) diff --git a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java index db113760629..e472a3a8820 100644 --- a/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java +++ b/j2k/tests/test/org/jetbrains/jet/j2k/test/JavaToKotlinConverterTestGenerated.java @@ -1770,6 +1770,11 @@ public class JavaToKotlinConverterTestGenerated extends AbstractJavaToKotlinConv doTest("j2k/tests/testData/ast/kotlinApiAccess/Property.java"); } + @TestMetadata("Property2.java") + public void testProperty2() throws Exception { + doTest("j2k/tests/testData/ast/kotlinApiAccess/Property2.java"); + } + } @TestMetadata("j2k/tests/testData/ast/labelStatement") diff --git a/j2k/tests/testData/KotlinApi.kt b/j2k/tests/testData/KotlinApi.kt index 21eb3270a7e..4a200f9bbe9 100644 --- a/j2k/tests/testData/KotlinApi.kt +++ b/j2k/tests/testData/KotlinApi.kt @@ -1,6 +1,6 @@ package kotlinApi -public open class KotlinClass { +public open class KotlinClass(public var field: Int) { public var property: String = "" public var nullableProperty: String? = "" diff --git a/j2k/tests/testData/ast/kotlinApiAccess/Property2.java b/j2k/tests/testData/ast/kotlinApiAccess/Property2.java new file mode 100644 index 00000000000..8683bc6ba5c --- /dev/null +++ b/j2k/tests/testData/ast/kotlinApiAccess/Property2.java @@ -0,0 +1,9 @@ +//file +import kotlinApi.* + +class C { + void foo(KotlinClass k) { + System.out.println(k.getField()); + k.setField(1); + } +} \ No newline at end of file diff --git a/j2k/tests/testData/ast/kotlinApiAccess/Property2.kt b/j2k/tests/testData/ast/kotlinApiAccess/Property2.kt new file mode 100644 index 00000000000..a324826d9e4 --- /dev/null +++ b/j2k/tests/testData/ast/kotlinApiAccess/Property2.kt @@ -0,0 +1,8 @@ +import kotlinApi.* + +class C() { + fun foo(k: KotlinClass) { + System.out.println(k.field) + k.field = 1 + } +} \ No newline at end of file