New J2K: Introduce context type
This commit is contained in:
@@ -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())
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -330,8 +330,9 @@ class JKMutabilityModifierImpl(override val mutability: Mutability) : JKMutabili
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitMutabilityModifier(this, data)
|
||||
}
|
||||
|
||||
class JKLambdaExpressionImpl(parameters: List<JKParameter>, returnType: JKTypeElement, statement: JKStatement) :
|
||||
JKLambdaExpression, JKBranchElementBase() {
|
||||
class JKLambdaExpressionImpl(
|
||||
parameters: List<JKParameter>, 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)
|
||||
|
||||
@@ -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<JKParameter>,
|
||||
|
||||
Reference in New Issue
Block a user