No setter parameter type required

This commit is contained in:
Valentin Kipyatkov
2015-09-28 23:21:04 +03:00
parent 596635270e
commit 110d53b4a6
8 changed files with 34 additions and 26 deletions
+11 -7
View File
@@ -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)) {
@@ -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
+1 -1
View File
@@ -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
}
+1 -1
View File
@@ -1,6 +1,6 @@
class AAA {
var x = 42
set(x: Int) {
set(x) {
this.x += x
}
}
+1 -1
View File
@@ -2,7 +2,7 @@ object AAA {
var x = 42
var y = 0
var z = 0
set(z: Int) {
set(z) {
Other.z = z
}
}
+3 -3
View File
@@ -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) {
}
}
+7 -7
View File
@@ -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
}
@@ -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) {
}
}