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 {
|
||||
val type = operand.toJK()
|
||||
val type = operand.toJK().type.updateNullabilityRecursively(Nullability.NotNull)
|
||||
return JKClassLiteralExpressionImpl(
|
||||
type,
|
||||
if (type.type is JKJavaPrimitiveType) JKClassLiteralExpression.LiteralType.JAVA_PRIMITIVE_CLASS
|
||||
else JKClassLiteralExpression.LiteralType.JAVA_CLASS
|
||||
JKTypeElementImpl(type),
|
||||
when (type) {
|
||||
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) {
|
||||
renderType(classLiteralExpression.classType.type.updateNullability(Nullability.NotNull))
|
||||
printer.printWithNoIndent("::")
|
||||
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")
|
||||
if (classLiteralExpression.literalType == JKClassLiteralExpression.LiteralType.JAVA_VOID_TYPE) {
|
||||
printer.printWithNoIndent("Void.TYPE")
|
||||
} else {
|
||||
renderType(classLiteralExpression.classType.type)
|
||||
printer.printWithNoIndent("::")
|
||||
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 {
|
||||
KOTLIN_CLASS,
|
||||
JAVA_CLASS,
|
||||
JAVA_PRIMITIVE_CLASS
|
||||
JAVA_PRIMITIVE_CLASS,
|
||||
JAVA_VOID_TYPE
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user