New J2K: Add java void type to JKClassLiteralExpression & make all inner types of JKClassLiteralExpression's classType to be notNull
This commit is contained in:
committed by
Ilya Kirillov
parent
5e6e5bcf8c
commit
51ee64a757
@@ -104,11 +104,14 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun PsiClassObjectAccessExpressionImpl.toJK(): JKClassLiteralExpression {
|
fun PsiClassObjectAccessExpressionImpl.toJK(): JKClassLiteralExpression {
|
||||||
val type = operand.toJK()
|
val type = operand.toJK().type.updateNullabilityRecursively(Nullability.NotNull)
|
||||||
return JKClassLiteralExpressionImpl(
|
return JKClassLiteralExpressionImpl(
|
||||||
type,
|
JKTypeElementImpl(type),
|
||||||
if (type.type is JKJavaPrimitiveType) JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS
|
when (type) {
|
||||||
else JKClassLiteralExpression.LiteralType.JAVA_CLASS
|
is JKJavaPrimitiveType -> JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS
|
||||||
|
is JKJavaVoidType -> JKClassLiteralExpression.LiteralType.JAVA_VOID_TYPE
|
||||||
|
else -> JKClassLiteralExpression.LiteralType.JAVA_CLASS
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -812,12 +812,16 @@ class NewCodeBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitClassLiteralExpression(classLiteralExpression: JKClassLiteralExpression) {
|
override fun visitClassLiteralExpression(classLiteralExpression: JKClassLiteralExpression) {
|
||||||
renderType(classLiteralExpression.classType.type.updateNullability(Nullability.NotNull))
|
if (classLiteralExpression.literalType == JKClassLiteralExpression.LiteralType.JAVA_VOID_TYPE) {
|
||||||
printer.printWithNoIndent("::")
|
printer.printWithNoIndent("Void.TYPE")
|
||||||
when (classLiteralExpression.literalType) {
|
} else {
|
||||||
JKClassLiteralExpression.LiteralType.KOTLIN_CLASS -> printer.printWithNoIndent("class")
|
renderType(classLiteralExpression.classType.type)
|
||||||
JKClassLiteralExpression.LiteralType.JAVA_CLASS -> printer.printWithNoIndent("class.java")
|
printer.printWithNoIndent("::")
|
||||||
JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS -> printer.printWithNoIndent("class.javaPrimitiveType")
|
when (classLiteralExpression.literalType) {
|
||||||
|
JKClassLiteralExpression.LiteralType.KOTLIN_CLASS -> printer.printWithNoIndent("class")
|
||||||
|
JKClassLiteralExpression.LiteralType.JAVA_CLASS -> printer.printWithNoIndent("class.java")
|
||||||
|
JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS -> printer.printWithNoIndent("class.javaPrimitiveType")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -412,6 +412,7 @@ interface JKClassLiteralExpression : JKExpression {
|
|||||||
enum class LiteralType {
|
enum class LiteralType {
|
||||||
KOTLIN_CLASS,
|
KOTLIN_CLASS,
|
||||||
JAVA_CLASS,
|
JAVA_CLASS,
|
||||||
JAVA_PRIMITIVE_CLASS
|
JAVA_PRIMITIVE_CLASS,
|
||||||
|
JAVA_VOID_TYPE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user