diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt index 1cb4c129c16..caa9f5ea3d3 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JKSymbolProvider.kt @@ -35,9 +35,9 @@ class JKSymbolProvider { is PsiClass -> JKMultiverseClassSymbol(psi) is KtClassOrObject -> JKMultiverseKtClassSymbol(psi) is PsiMethod -> JKMultiverseMethodSymbol(psi, this) - is PsiField -> JKMultiverseFieldSymbol(psi) + is PsiField -> JKMultiverseFieldSymbol(psi, this) is KtNamedFunction -> JKMultiverseFunctionSymbol(psi, this) - is KtProperty -> JKMultiversePropertySymbol(psi) + is KtProperty -> JKMultiversePropertySymbol(psi, this) else -> TODO(psi::class.toString()) } } 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 d89aa8721fd..01c93f7023a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -120,6 +120,7 @@ fun JKJavaOperatorToken.toKtToken(): JKKtOperatorToken = JavaTokenType.PERC -> JKKtSingleValueOperatorToken(KtTokens.PERC) JavaTokenType.EQ -> JKKtSingleValueOperatorToken(KtTokens.EQ) + JavaTokenType.NE -> JKKtSingleValueOperatorToken(KtTokens.EXCLEQ) JavaTokenType.PLUSEQ -> JKKtSingleValueOperatorToken(KtTokens.PLUSEQ) JavaTokenType.MINUSEQ -> JKKtSingleValueOperatorToken(KtTokens.MINUSEQ) @@ -137,7 +138,7 @@ fun JKJavaOperatorToken.toKtToken(): JKKtOperatorToken = JavaTokenType.GTGTGTEQ -> JKKtWordOperatorToken("ushr") JavaTokenType.XOREQ -> JKKtWordOperatorToken("xor") - else -> TODO(this.token::class.java.toString()) + else -> TODO(this.token.toString()) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/symbols.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/symbols.kt index 76085553e82..93629a236d3 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/symbols.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/symbols.kt @@ -35,13 +35,14 @@ interface JKClassSymbol : JKNamedSymbol interface JKMethodSymbol : JKNamedSymbol { override val fqName: String - val recivierType: JKType? + val receiverType: JKType? val parameterTypes: List val returnType: JKType } interface JKFieldSymbol : JKNamedSymbol { override val fqName: String + val filedType: JKType } class JKUniverseClassSymbol : JKClassSymbol, JKUniverseSymbol { @@ -76,7 +77,7 @@ class JKMultiverseKtClassSymbol(override val target: KtClassOrObject) : JKClassS } class JKUniverseMethodSymbol(private val symbolProvider: JKSymbolProvider) : JKMethodSymbol, JKUniverseSymbol { - override val recivierType: JKType? + override val receiverType: JKType? get() = (target.parent as? JKClass)?.let { JKClassTypeImpl(symbolProvider.provideUniverseSymbol(it), emptyList()/*TODO*/) } @@ -94,7 +95,7 @@ class JKUniverseMethodSymbol(private val symbolProvider: JKSymbolProvider) : JKM } class JKMultiverseMethodSymbol(override val target: PsiMethod, private val symbolProvider: JKSymbolProvider) : JKMethodSymbol { - override val recivierType: JKType? + override val receiverType: JKType? get() = target.containingClass?.let { JKClassTypeImpl(symbolProvider.provideDirectSymbol(it) as JKClassSymbol, emptyList()/*TODO*/) } @@ -111,7 +112,7 @@ class JKMultiverseMethodSymbol(override val target: PsiMethod, private val symbo } class JKMultiverseFunctionSymbol(override val target: KtNamedFunction, private val symbolProvider: JKSymbolProvider) : JKMethodSymbol { - override val recivierType: JKType? + override val receiverType: JKType? get() = target.receiverTypeReference?.typeElement?.toJK(symbolProvider) override val parameterTypes: List get() = target.valueParameters.map { it.typeReference!!.typeElement!!.toJK(symbolProvider) } @@ -126,6 +127,8 @@ class JKMultiverseFunctionSymbol(override val target: KtNamedFunction, private v } class JKUniverseFieldSymbol : JKFieldSymbol, JKUniverseSymbol { + override val filedType: JKType + get() = target.type.type override val name: String get() = target.name.value override lateinit var target: JKField @@ -135,7 +138,9 @@ class JKUniverseFieldSymbol : JKFieldSymbol, JKUniverseSymbol { get() = target.name.value // TODO("Fix this") } -class JKMultiverseFieldSymbol(override val target: PsiField) : JKFieldSymbol { +class JKMultiverseFieldSymbol(override val target: PsiField, private val symbolProvider: JKSymbolProvider) : JKFieldSymbol { + override val filedType: JKType + get() = target.type.toJK(symbolProvider) override val name: String get() = target.name override val declaredIn: JKSymbol @@ -144,7 +149,9 @@ class JKMultiverseFieldSymbol(override val target: PsiField) : JKFieldSymbol { get() = target.name // TODO("Fix this") } -class JKMultiversePropertySymbol(override val target: KtProperty) : JKFieldSymbol { +class JKMultiversePropertySymbol(override val target: KtProperty, private val symbolProvider: JKSymbolProvider) : JKFieldSymbol { + override val filedType: JKType + get() = target.typeReference!!.typeElement!!.toJK(symbolProvider) override val name: String get() = target.name!! override val declaredIn: JKSymbol @@ -159,6 +166,8 @@ class JKUnresolvedField(override val target: String) : JKFieldSymbol { override val declaredIn: JKSymbol get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. override val fqName: String = target + override val filedType: JKType + get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. override val name: String get() = target } @@ -169,7 +178,7 @@ class JKUnresolvedMethod(override val target: String) : JKMethodSymbol { override val declaredIn: JKSymbol get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. override val fqName: String = target - override val recivierType: JKType? + override val receiverType: JKType? get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. override val parameterTypes: List get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt index b3da4852251..e85688a5d49 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/types.kt @@ -20,6 +20,9 @@ fun JKExpression.type(context: ConversionContext): JKType = when (this) { is JKLiteralExpression -> type.toJkType(context.symbolProvider) is JKBinaryExpression -> (operator as JKKtOperatorImpl).methodSymbol.returnType + is JKMethodCallExpression -> identifier.returnType + is JKFieldAccessExpressionImpl -> identifier.filedType + is JKQualifiedExpressionImpl -> this.selector.type(context) else -> TODO(this::class.java.toString()) }