diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/ConversionsRunner.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/ConversionsRunner.kt index 227fb6cc5a9..f907fb0592c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/ConversionsRunner.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/ConversionsRunner.kt @@ -23,6 +23,7 @@ object ConversionsRunner { private fun createConversions(context: ConversionContext) = listOf( ModalityConversion(context), + ImplicitInitializerConversion(), TypeMappingConversion(context), FieldToPropertyConversion(), AssignmentAsExpressionToAlsoConversion(context), @@ -33,7 +34,7 @@ object ConversionsRunner { JavaMethodToKotlinFunctionConversion(), LiteralConversion(), InnerClassConversion(), - ModifiersConversion(), + ModifiersConversion(context), PolyadicExpressionConversion(), BinaryExpressionConversion() ) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ImplicitInitializerConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ImplicitInitializerConversion.kt new file mode 100644 index 00000000000..786fca2fbc0 --- /dev/null +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/ImplicitInitializerConversion.kt @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.j2k.conversions + +import org.jetbrains.kotlin.j2k.tree.* +import org.jetbrains.kotlin.j2k.tree.impl.JKNullLiteral +import org.jetbrains.kotlin.j2k.tree.impl.JKUnresolvedClassType + +class ImplicitInitializerConversion : RecursiveApplicableConversionBase() { + override fun applyToElement(element: JKTreeElement): JKTreeElement { + if (element !is JKJavaField) return recurse(element) + + if (element.initializer !is JKStubExpression) return recurse(element) + + if (element.type.type is JKClassType || element.type.type is JKUnresolvedClassType) element.initializer = JKNullLiteral() + + return element + } + +} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index e0dfdc28c9f..2d3a60a9ef9 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -79,7 +79,7 @@ class JKParameterImpl( override fun accept(visitor: JKVisitor, data: D): R = visitor.visitParameter(this, data) override var modifierList by child(modifierList) - override val initializer by child(initializer) + override var initializer by child(initializer) override val name by child(name) override var type by child(type) } @@ -203,7 +203,7 @@ class JKBooleanLiteral(val value: Boolean) : JKLiteralExpression, JKElementBase( class JKLocalVariableImpl(modifierList: JKModifierList, type: JKTypeElement, name: JKNameIdentifier, initializer: JKExpression) : JKLocalVariable, JKBranchElementBase() { override var modifierList by child(modifierList) - override val initializer by child(initializer) + override var initializer by child(initializer) override val name by child(name) override val type by child(type) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt index 45f546e2be7..5816607beb1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -36,7 +36,7 @@ class JKKtPropertyImpl( override var modifierList: JKModifierList by child(modifierList) override var type by child(type) override var name: JKNameIdentifier by child(name) - override val initializer: JKExpression by child(initializer) + override var initializer: JKExpression by child(initializer) override val getter: JKBlock by child(getter) override val setter: JKBlock by child(setter) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 0630af03de6..fb8d582e017 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -63,7 +63,7 @@ interface JKMethod : JKDeclaration, JKModifierListOwner { interface JKField : JKDeclaration, JKModifierListOwner { val type: JKTypeElement val name: JKNameIdentifier - val initializer: JKExpression + var initializer: JKExpression } interface JKLocalVariable : JKField