From c43bfcb185e730cf6e4d51d5474130ff73b08fc2 Mon Sep 17 00:00:00 2001 From: Dimach Date: Tue, 24 Jul 2018 11:04:18 +0300 Subject: [PATCH] New J2K: Introduce context type --- .../org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 1 - j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt | 11 +++++++---- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 5 +++-- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt | 7 ++++++- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index faf4f1863e2..cda51ffcdaa 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -120,7 +120,6 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) { fun PsiLambdaExpression.toJK(): JKExpression { return JKLambdaExpressionImpl( with(declarationMapper) { parameterList.parameters.map { it.toJK() } }, - JKTypeElementImpl(JKJavaVoidType), body.let { when (it) { is PsiExpression -> JKExpressionStatementImpl(it.toJK()) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index 9c26db4ff7b..037cfd31c9a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -311,8 +311,11 @@ class NewCodeBuilder { printer.print("var") } - printer.printWithNoIndent(" ", localVariable.name.value, ": ") - localVariable.type.accept(this) + printer.printWithNoIndent(" ", localVariable.name.value) + if(localVariable.type.type != JKContextType) { + printer.printWithNoIndent(": ") + localVariable.type.accept(this) + } if (localVariable.initializer !is JKStubExpression) { printer.printWithNoIndent(" = ") localVariable.initializer.accept(this) @@ -325,8 +328,8 @@ class NewCodeBuilder { when (type) { is JKClassType -> (type.classReference as JKClassSymbol).fqName?.let { printer.printWithNoIndent(FqName(it).shortName().asString()) } - is JKUnresolvedClassType -> - printer.printWithNoIndent(type.name) + is JKUnresolvedClassType -> printer.printWithNoIndent(type.name) + is JKContextType -> return else -> printer.printWithNoIndent("Unit /* TODO: ${type::class} */") } if (type is JKParametrizedType && type.parameters.isNotEmpty()) { 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 729e513ef3a..22c9509c1f5 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -330,8 +330,9 @@ class JKMutabilityModifierImpl(override val mutability: Mutability) : JKMutabili override fun accept(visitor: JKVisitor, data: D): R = visitor.visitMutabilityModifier(this, data) } -class JKLambdaExpressionImpl(parameters: List, returnType: JKTypeElement, statement: JKStatement) : - JKLambdaExpression, JKBranchElementBase() { +class JKLambdaExpressionImpl( + parameters: List, statement: JKStatement, returnType: JKTypeElement = JKTypeElementImpl(JKContextType) +) : JKLambdaExpression, JKBranchElementBase() { override var statement by child(statement) override val returnType by child(returnType) override var parameters by children(parameters) 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 5816607beb1..1eacd07b615 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor import org.jetbrains.kotlin.lexer.KtSingleValueToken import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.utils.addToStdlib.cast +import org.jetbrains.kotlin.j2k.ast.Nullability class JKKtPropertyImpl( modifierList: JKModifierList, @@ -153,7 +154,7 @@ class JKKtAlsoCallExpressionImpl( JKNameIdentifierImpl(parameterName), JKModifierListImpl() ) - ), JKTypeElementImpl(JKJavaVoidType), statement + ), statement ) ) ) @@ -168,6 +169,10 @@ class JKKtAssignmentStatementImpl( } +object JKContextType : JKType { + override val nullability: Nullability + get() = Nullability.Default +} class JKKtConstructorImpl( name: JKNameIdentifier, parameters: List,