From 110d53b4a6efbb7ed23964c8a3320d229d4af0d2 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 28 Sep 2015 23:21:04 +0300 Subject: [PATCH] No setter parameter type required --- j2k/src/org/jetbrains/kotlin/j2k/Converter.kt | 18 +++++++++++------- .../org/jetbrains/kotlin/j2k/ast/Parameter.kt | 10 +++++++--- .../fileOrElement/detectProperties/Comments.kt | 2 +- .../detectProperties/FalseSetter.kt | 2 +- .../fileOrElement/detectProperties/InObject.kt | 2 +- .../fileOrElement/detectProperties/IsPrefix.kt | 6 +++--- .../detectProperties/Overrides.kt | 14 +++++++------- .../OverridesOfExternalCode.kt | 6 +++--- 8 files changed, 34 insertions(+), 26 deletions(-) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt index 7b507a81f1f..378914617b5 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/Converter.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.j2k.usageProcessing.UsageProcessing import org.jetbrains.kotlin.j2k.usageProcessing.UsageProcessingExpressionConverter import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.types.expressions.OperatorConventions.* -import org.jetbrains.kotlin.utils.addToStdlib.check import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList import java.util.* @@ -363,12 +362,17 @@ class Converter private constructor( val accessorModifiers = Modifiers(propertyInfo.specialSetterAccess.singletonOrEmptyList()).assignNoPrototype() if (setMethod != null) { val method = setMethod.let { convertMethod(it, null, null, null, classKind)!! } - setter = PropertyAccessor( - AccessorKind.SETTER, - method.annotations, - accessorModifiers, - method.parameterList?.check { method.body != null }, - method.body) + val convertedParameter = method.parameterList!!.parameters.single() as FunctionParameter + val parameterAnnotations = convertedParameter.annotations + val parameterList = if (method.body != null || !parameterAnnotations.isEmpty) { + val parameter = FunctionParameter(convertedParameter.identifier, null, FunctionParameter.VarValModifier.None, parameterAnnotations, Modifiers.Empty) + .assignPrototypesFrom(convertedParameter, CommentsAndSpacesInheritance.NO_SPACES) + ParameterList(listOf(parameter)).assignNoPrototype() + } + else { + null + } + setter = PropertyAccessor(AccessorKind.SETTER, method.annotations, accessorModifiers, parameterList, method.body) setter.assignPrototype(setMethod, CommentsAndSpacesInheritance.NO_SPACES) } else if (propertyInfo.modifiers.contains(Modifier.OVERRIDE)) { diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ast/Parameter.kt b/j2k/src/org/jetbrains/kotlin/j2k/ast/Parameter.kt index 4fabbd3049b..e02020f4e5b 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ast/Parameter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ast/Parameter.kt @@ -16,12 +16,12 @@ package org.jetbrains.kotlin.j2k.ast -import org.jetbrains.kotlin.j2k.* +import org.jetbrains.kotlin.j2k.CodeBuilder abstract class Parameter(val identifier: Identifier, val type: Type?) : Element() class FunctionParameter(identifier: Identifier, - type: Type, + type: Type?, val varVal: FunctionParameter.VarValModifier, val annotations: Annotations, val modifiers: Modifiers, @@ -45,7 +45,11 @@ class FunctionParameter(identifier: Identifier, VarValModifier.Val -> builder.append("val ") } - builder append identifier append ":" append type!! + builder.append(identifier) + + if (type != null) { + builder append ":" append type + } if (defaultValue != null) { builder append " = " append defaultValue diff --git a/j2k/testData/fileOrElement/detectProperties/Comments.kt b/j2k/testData/fileOrElement/detectProperties/Comments.kt index 969f76fca8c..723a309323e 100644 --- a/j2k/testData/fileOrElement/detectProperties/Comments.kt +++ b/j2k/testData/fileOrElement/detectProperties/Comments.kt @@ -18,7 +18,7 @@ internal class A(// comment for field2 getter // comment for setProperty var property: Int get() = 1 - set(value: Int) { + set(value) { } // end of getProperty // end of setProperty } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/detectProperties/FalseSetter.kt b/j2k/testData/fileOrElement/detectProperties/FalseSetter.kt index f0c9a2c1713..30460dd5d83 100644 --- a/j2k/testData/fileOrElement/detectProperties/FalseSetter.kt +++ b/j2k/testData/fileOrElement/detectProperties/FalseSetter.kt @@ -1,6 +1,6 @@ class AAA { var x = 42 - set(x: Int) { + set(x) { this.x += x } } diff --git a/j2k/testData/fileOrElement/detectProperties/InObject.kt b/j2k/testData/fileOrElement/detectProperties/InObject.kt index c7abb9ff612..a039d9b9b22 100644 --- a/j2k/testData/fileOrElement/detectProperties/InObject.kt +++ b/j2k/testData/fileOrElement/detectProperties/InObject.kt @@ -2,7 +2,7 @@ object AAA { var x = 42 var y = 0 var z = 0 - set(z: Int) { + set(z) { Other.z = z } } diff --git a/j2k/testData/fileOrElement/detectProperties/IsPrefix.kt b/j2k/testData/fileOrElement/detectProperties/IsPrefix.kt index 8e0f130ade3..fced0168d5d 100644 --- a/j2k/testData/fileOrElement/detectProperties/IsPrefix.kt +++ b/j2k/testData/fileOrElement/detectProperties/IsPrefix.kt @@ -18,7 +18,7 @@ internal interface I { internal abstract class C : I { override var isSomething1: Boolean get() = true - set(b: Boolean) { + set(b) { } override var isSomething4: Boolean @@ -29,11 +29,11 @@ internal abstract class C : I { override var isSomething5: Boolean get() = super.isSomething5 - set(value: Boolean) { + set(value) { } override var something6: Boolean get() = super.something6 - set(value: Boolean) { + set(value) { } } \ No newline at end of file diff --git a/j2k/testData/fileOrElement/detectProperties/Overrides.kt b/j2k/testData/fileOrElement/detectProperties/Overrides.kt index 4740da522dc..7cff81cc377 100644 --- a/j2k/testData/fileOrElement/detectProperties/Overrides.kt +++ b/j2k/testData/fileOrElement/detectProperties/Overrides.kt @@ -26,17 +26,17 @@ internal open class B { open var fromB2: String get() = "" - set(value: String) { + set(value) { } open var fromB3: String get() = "" - set(value: String) { + set(value) { } open var fromB4: String get() = "" - set(value: String) { + set(value) { } open fun setFromB5(value: String) { @@ -51,7 +51,7 @@ internal abstract class C(override val something1: Int) : B(), I { override var something3: Int get() = 0 - set(value: Int) { + set(value) { } override var something4: Int @@ -62,7 +62,7 @@ internal abstract class C(override val something1: Int) : B(), I { override var something5: Int get() = super.something5 - set(value: Int) { + set(value) { } @@ -79,7 +79,7 @@ internal abstract class C(override val something1: Int) : B(), I { override var fromB2: String get() = super.fromB2 - set(value: String) { + set(value) { super.fromB2 = value } @@ -91,7 +91,7 @@ internal abstract class C(override val something1: Int) : B(), I { override var fromB4: String get() = super.fromB4 - set(value: String) { + set(value) { super.fromB4 = value } diff --git a/j2k/testData/fileOrElement/detectProperties/OverridesOfExternalCode.kt b/j2k/testData/fileOrElement/detectProperties/OverridesOfExternalCode.kt index 96fc5059d9e..d547f050f33 100644 --- a/j2k/testData/fileOrElement/detectProperties/OverridesOfExternalCode.kt +++ b/j2k/testData/fileOrElement/detectProperties/OverridesOfExternalCode.kt @@ -5,7 +5,7 @@ import javaApi.JavaClassDerivedFromKotlinClassWithProperties internal open class A : KotlinClassWithProperties() { override var someVar1: String get() = super.someVar1 - set(s: String) { + set(s) { super.someVar1 = s } @@ -17,7 +17,7 @@ internal open class A : KotlinClassWithProperties() { override var someVar3: String get() = super.someVar3 - set(s: String) { + set(s) { super.someVar3 = s } @@ -90,7 +90,7 @@ internal class D : JavaClassDerivedFromKotlinClassWithProperties() { override var someVar2: String get() = super.someVar2 - set(value: String) { + set(value) { } } \ No newline at end of file