diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 72ee05d7006..61ff9f66871 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -112,9 +112,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { ) } - fun PsiInstanceOfExpression.toJK(): JKJavaInstanceOfExpression { - return JKJavaInstanceOfExpressionImpl(operand.toJK(), checkType?.toJK() ?: TODO()) - } + fun PsiInstanceOfExpression.toJK(): JKKtIsExpression = + JKKtIsExpressionImpl(operand.toJK(), checkType?.toJK() ?: JKTypeElementImpl(JKNoTypeImpl)) + fun PsiAssignmentExpression.toJK(): JKJavaAssignmentExpression { return JKJavaAssignmentExpressionImpl( diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/InstanceOfConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/InstanceOfConversion.kt deleted file mode 100644 index 7132de27fde..00000000000 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/InstanceOfConversion.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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 com.intellij.psi.PsiClass -import org.jetbrains.kotlin.j2k.ast.Nullability -import org.jetbrains.kotlin.j2k.tree.* -import org.jetbrains.kotlin.j2k.tree.impl.* -import org.jetbrains.kotlin.psi.KtClass - - -class InstanceOfConversion : RecursiveApplicableConversionBase() { - override fun applyToElement(element: JKTreeElement): JKTreeElement { - if (element !is JKJavaInstanceOfExpression) return recurse(element) - val checkingType = element.type.type.updateNullability(Nullability.NotNull) - val type = - if (checkingType is JKClassType && checkingType.parameters.isEmpty()) { - val resolvedClass = checkingType.classReference.target - val parametersCount = - when (resolvedClass) { - is PsiClass -> resolvedClass.typeParameters.size - is KtClass -> resolvedClass.typeParameters.size - else -> 0 - } - val typeParameters = List(parametersCount) { JKStarProjectionTypeImpl() } - JKClassTypeImpl( - checkingType.classReference, - typeParameters, - checkingType.nullability - ) - - } else checkingType - return recurse(JKKtIsExpressionImpl(element::expression.detached(), JKTypeElementImpl(type))) - } -} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index e9bc4cddcc4..e19e1c5ded6 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -295,12 +295,6 @@ class JKJavaForLoopStatementImpl(initializer: JKStatement, condition: JKExpressi override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaForLoopStatement(this, data) } -class JKJavaInstanceOfExpressionImpl(expression: JKExpression, type: JKTypeElement) : JKJavaInstanceOfExpression, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { - override var type by child(type) - override var expression by child(expression) - - override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaInstanceOfExpression(this, data) -} class JKJavaPolyadicExpressionImpl(operands: List, override var tokens: List) : JKJavaPolyadicExpression, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { 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 378ecedb5d3..73c31c52a97 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -229,7 +229,7 @@ class JKKtValueWhenLabelImpl(expression: JKExpression) : JKKtValueWhenLabel, JKB } -class JKKtIsExpressionImpl(expression: JKExpression, type: JKTypeElement) : JKKtIsExpression, JKBranchElementBase() { +class JKKtIsExpressionImpl(expression: JKExpression, type: JKTypeElement) : JKKtIsExpression, JKBranchElementBase(), PsiOwner by PsiOwnerImpl() { override var type by child(type) override var expression by child(expression) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt index dc7febd1719..5a67848bd5c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt @@ -88,10 +88,6 @@ interface JKJavaForLoopStatement : JKLoopStatement { var updaters: List } -interface JKJavaInstanceOfExpression : JKExpression { - var expression: JKExpression - var type: JKTypeElement -} interface JKJavaPolyadicExpression : JKExpression { var operands: List diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt index e26a377862c..901a389bf3f 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt @@ -81,7 +81,7 @@ interface JKKtValueWhenLabel : JKKtWhenLabel { var expression: JKExpression } -interface JKKtIsExpression : JKExpression { +interface JKKtIsExpression : JKExpression, PsiOwner { var expression: JKExpression var type: JKTypeElement } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt index 87bdea3c131..fb48358da63 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt @@ -7,24 +7,25 @@ package org.jetbrains.kotlin.j2k.tree import com.intellij.psi.* import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.builtins.PrimitiveType import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor import org.jetbrains.kotlin.j2k.ConversionContext import org.jetbrains.kotlin.j2k.JKSymbolProvider import org.jetbrains.kotlin.j2k.ast.Nullability import org.jetbrains.kotlin.j2k.conversions.resolveFqName +import org.jetbrains.kotlin.j2k.kotlinTypeByName import org.jetbrains.kotlin.j2k.tree.impl.* import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.psi.KtClass +import org.jetbrains.kotlin.psi.KtNullableType import org.jetbrains.kotlin.psi.KtTypeElement import org.jetbrains.kotlin.psi.KtUserType import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf -import org.jetbrains.kotlin.idea.caches.resolve.util.* -import org.jetbrains.kotlin.j2k.kotlinTypeByName -import org.jetbrains.kotlin.psi.KtNullableType - fun JKExpression.type(context: ConversionContext): JKType? = when (this) { is JKLiteralExpression -> type.toJkType(context.symbolProvider) @@ -43,7 +44,7 @@ fun JKExpression.type(context: ConversionContext): JKType? = is JKKtThrowExpression -> kotlinTypeByName(KotlinBuiltIns.FQ_NAMES.nothing.asString(), context.symbolProvider) is JKClassAccessExpression -> null is JKJavaNewExpression -> JKClassTypeImpl(classSymbol) - is JKJavaInstanceOfExpression -> kotlinTypeByName(KotlinBuiltIns.FQ_NAMES._boolean.asString(), context.symbolProvider) + is JKKtIsExpression -> kotlinTypeByName(KotlinBuiltIns.FQ_NAMES._boolean.asString(), context.symbolProvider) is JKParenthesizedExpression -> expression.type(context) is JKTypeCastExpression -> type.type is JKThisExpression -> null// TODO return actual type diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index 2d5df73a120..57253395dd7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -90,7 +90,6 @@ interface JKVisitor { fun visitReturnStatement(returnStatement: JKReturnStatement, data: D): R = visitStatement(returnStatement, data) fun visitJavaAssertStatement(javaAssertStatement: JKJavaAssertStatement, data: D): R = visitStatement(javaAssertStatement, data) fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement, data: D): R = visitLoopStatement(javaForLoopStatement, data) - fun visitJavaInstanceOfExpression(javaInstanceOfExpression: JKJavaInstanceOfExpression, data: D): R = visitExpression(javaInstanceOfExpression, data) fun visitJavaPolyadicExpression(javaPolyadicExpression: JKJavaPolyadicExpression, data: D): R = visitExpression(javaPolyadicExpression, data) fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data) fun visitJavaThrowStatement(javaThrowStatement: JKJavaThrowStatement, data: D): R = visitStatement(javaThrowStatement, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index 8b0f7b2f9bd..17b010cdedd 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -177,8 +177,6 @@ interface JKVisitorVoid : JKVisitor { override fun visitJavaAssertStatement(javaAssertStatement: JKJavaAssertStatement, data: Nothing?) = visitJavaAssertStatement(javaAssertStatement) fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement) = visitLoopStatement(javaForLoopStatement, null) override fun visitJavaForLoopStatement(javaForLoopStatement: JKJavaForLoopStatement, data: Nothing?) = visitJavaForLoopStatement(javaForLoopStatement) - fun visitJavaInstanceOfExpression(javaInstanceOfExpression: JKJavaInstanceOfExpression) = visitExpression(javaInstanceOfExpression, null) - override fun visitJavaInstanceOfExpression(javaInstanceOfExpression: JKJavaInstanceOfExpression, data: Nothing?) = visitJavaInstanceOfExpression(javaInstanceOfExpression) fun visitJavaPolyadicExpression(javaPolyadicExpression: JKJavaPolyadicExpression) = visitExpression(javaPolyadicExpression, null) override fun visitJavaPolyadicExpression(javaPolyadicExpression: JKJavaPolyadicExpression, data: Nothing?) = visitJavaPolyadicExpression(javaPolyadicExpression) fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression) = visitExpression(javaAssignmentExpression, null)