New J2K: Clear nullability for methods
This commit is contained in:
committed by
Ilya Kirillov
parent
5ae1a819bc
commit
b94ff8af36
+10
-12
@@ -16,13 +16,15 @@
|
||||
|
||||
package org.jetbrains.kotlin.nj2k.conversions
|
||||
|
||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
||||
import org.jetbrains.kotlin.nj2k.throwAnnotation
|
||||
import org.jetbrains.kotlin.nj2k.tree.*
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKClassBody
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKJavaMethod
|
||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtFunctionImpl
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKTypeElementImpl
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||
import org.jetbrains.kotlin.nj2k.tree.updateNullabilityRecursively
|
||||
|
||||
class JavaMethodToKotlinFunctionConversion(private val context: ConversionContext) : TransformerBasedConversion() {
|
||||
override fun visitTreeElement(element: JKTreeElement) {
|
||||
@@ -37,11 +39,7 @@ class JavaMethodToKotlinFunctionConversion(private val context: ConversionContex
|
||||
declaration.invalidate()
|
||||
|
||||
JKKtFunctionImpl(
|
||||
if (declaration.returnType.type.nullability != Nullability.NotNull)
|
||||
JKTypeElementImpl(
|
||||
declaration.returnType.type
|
||||
.updateNullability(declaration.returnTypeNullability(context))
|
||||
) else declaration.returnType,
|
||||
declaration.returnType,
|
||||
declaration.name,
|
||||
declaration.parameters,
|
||||
declaration.block,
|
||||
@@ -49,10 +47,10 @@ class JavaMethodToKotlinFunctionConversion(private val context: ConversionContex
|
||||
declaration.annotationList.also {
|
||||
if (declaration.throwsList.isNotEmpty()) {
|
||||
it.annotations +=
|
||||
throwAnnotation(
|
||||
declaration.throwsList.map { it.type.updateNullabilityRecursively(Nullability.NotNull) },
|
||||
context.symbolProvider
|
||||
)
|
||||
throwAnnotation(
|
||||
declaration.throwsList.map { it.type.updateNullabilityRecursively(Nullability.NotNull) },
|
||||
context.symbolProvider
|
||||
)
|
||||
}
|
||||
},
|
||||
declaration.extraModifiers,
|
||||
|
||||
@@ -9,16 +9,16 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.PsiVariable
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.PrimitiveType
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.j2k.*
|
||||
import org.jetbrains.kotlin.nj2k.*
|
||||
import org.jetbrains.kotlin.j2k.ast.Mutability
|
||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||
import org.jetbrains.kotlin.nj2k.tree.*
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.nj2k.ConversionContext
|
||||
import org.jetbrains.kotlin.nj2k.kotlinTypeByName
|
||||
import org.jetbrains.kotlin.nj2k.tree.*
|
||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||
|
||||
class TypeMappingConversion(val context: ConversionContext) : RecursiveApplicableConversionBase() {
|
||||
private val typeFlavorCalculator = TypeFlavorCalculator(object : TypeFlavorConverterFacade {
|
||||
@@ -163,9 +163,8 @@ class TypeMappingConversion(val context: ConversionContext) : RecursiveApplicabl
|
||||
val psi = parent.psi
|
||||
return when (parent) {
|
||||
is JKMethod ->
|
||||
parent.nullabilityBySuperMethod(context.symbolProvider).defaultToNull()
|
||||
?: psi?.let { typeFlavorCalculator.methodNullability(it as PsiMethod) }
|
||||
.nullToDefault()
|
||||
psi?.let { typeFlavorCalculator.methodNullability(it as PsiMethod) }
|
||||
.nullToDefault()
|
||||
|
||||
is JKVariable -> psi?.let {
|
||||
typeFlavorCalculator.variableNullability(psi as PsiVariable)
|
||||
|
||||
Reference in New Issue
Block a user