Minor: fix Nullness deprecation warnings

This commit is contained in:
Nikolay Krasko
2019-03-15 18:15:07 +03:00
parent 77f1167773
commit ce2f738d9f
5 changed files with 98 additions and 17 deletions
+1
View File
@@ -119,6 +119,7 @@
<Problem reference="com.intellij.testFramework.PlatformTestCase#createModuleAt" reason="Not static anymore in 181 after 7dacf096c47d2125e17031c71a037b63ab00ec53" />
<Problem reference="com.intellij.testFramework.PlatformTestCase#doCreateRealModuleIn" reason="Not static anymore in 181 after 7dacf096c47d2125e17031c71a037b63ab00ec53" />
<Problem reference="com.intellij.openapi.progress.ProgressManager#getProgressIndicator" reason="Nullable in 181. Temporary use progressIndicatorNullable instead." />
<Problem reference="com.intellij.codeInspection.dataFlow.Nullness" reason="Deprecated since 182. Use org.jetbrains.kotlin.idea.util.compat.Nullability instead." />
</list>
</option>
</inspection_tool>
@@ -16,13 +16,14 @@
package org.jetbrains.kotlin.idea.j2k
import com.intellij.codeInspection.dataFlow.DfaUtil
import com.intellij.codeInspection.dataFlow.Nullness
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiVariable
import org.jetbrains.kotlin.idea.util.compat.dfaCheckNullability
import org.jetbrains.kotlin.idea.util.compat.dfaInferMethodNullability
import org.jetbrains.kotlin.j2k.*
import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.idea.util.compat.Nullability as IntellijNullability
object IdeaJavaToKotlinServices : JavaToKotlinConverterServices {
override val referenceSearcher: ReferenceSearcher
@@ -47,14 +48,14 @@ object IdeaSuperMethodSearcher : SuperMethodsSearcher {
private object IdeaJavaDataFlowAnalyzerFacade : JavaDataFlowAnalyzerFacade {
override fun variableNullability(variable: PsiVariable, context: PsiElement): Nullability =
DfaUtil.checkNullness(variable, context).toJ2KNullability()
dfaCheckNullability(variable, context).toJ2KNullability()
override fun methodNullability(method: PsiMethod): Nullability =
DfaUtil.inferMethodNullity(method).toJ2KNullability()
dfaInferMethodNullability(method).toJ2KNullability()
private fun Nullness.toJ2KNullability() = when (this) {
Nullness.UNKNOWN -> Nullability.Default
Nullness.NOT_NULL -> Nullability.NotNull
Nullness.NULLABLE -> Nullability.Nullable
private fun IntellijNullability.toJ2KNullability() = when (this) {
IntellijNullability.UNKNOWN -> Nullability.Default
IntellijNullability.NOT_NULL -> Nullability.NotNull
IntellijNullability.NULLABLE -> Nullability.Nullable
}
}
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.idea.slicer
import com.intellij.codeInspection.dataFlow.Nullness
import com.intellij.ide.util.treeView.AbstractTreeStructure
import com.intellij.openapi.actionSystem.DefaultActionGroup
import com.intellij.psi.PsiElement
@@ -24,12 +23,12 @@ import com.intellij.slicer.*
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.guessTypes
import org.jetbrains.kotlin.idea.references.KtReference
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.slicer.compat.PsiElement_N183_NN191
import org.jetbrains.kotlin.idea.util.compat.Nullability
import org.jetbrains.kotlin.idea.util.compat.SliceNullnessAnalyzerBaseEx
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.isPlainWithEscapes
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
@@ -51,8 +50,8 @@ class KotlinSliceProvider : SliceLanguageSupportProvider, SliceUsageTransformer
val leafAnalyzer by lazy { SliceLeafAnalyzer(LEAF_ELEMENT_EQUALITY, this) }
val nullnessAnalyzer: SliceNullnessAnalyzerBase by lazy {
object : SliceNullnessAnalyzerBase(LEAF_ELEMENT_EQUALITY, this) {
override fun checkNullness(element: PsiElement?): Nullness {
object : SliceNullnessAnalyzerBaseEx(LEAF_ELEMENT_EQUALITY, this) {
override fun checkNullabilityEx(element: PsiElement?): Nullability {
val types = when (element) {
is KtCallableDeclaration -> listOfNotNull((element.resolveToDescriptorIfAny() as? CallableDescriptor)?.returnType)
is KtDeclaration -> emptyList()
@@ -60,10 +59,10 @@ class KotlinSliceProvider : SliceLanguageSupportProvider, SliceUsageTransformer
else -> emptyList()
}
return when {
types.isEmpty() -> return Nullness.UNKNOWN
types.all { KotlinBuiltIns.isNullableNothing(it) } -> Nullness.NULLABLE
types.any { it.isError || TypeUtils.isNullableType(it) || it.isNullabilityFlexible() } -> Nullness.UNKNOWN
else -> Nullness.NOT_NULL
types.isEmpty() -> return Nullability.UNKNOWN
types.all { KotlinBuiltIns.isNullableNothing(it) } -> Nullability.NULLABLE
types.any { it.isError || TypeUtils.isNullableType(it) || it.isNullabilityFlexible() } -> Nullability.UNKNOWN
else -> Nullability.NOT_NULL
}
}
}
@@ -0,0 +1,40 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("MissingRecentApi", "IncompatibleAPI")
package org.jetbrains.kotlin.idea.util.compat
import com.intellij.codeInsight.Nullability as IntellijNullability
import com.intellij.codeInspection.dataFlow.DfaUtil
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiVariable
import com.intellij.slicer.SliceLanguageSupportProvider
import com.intellij.slicer.SliceLeafEquality
import com.intellij.slicer.SliceNullnessAnalyzerBase
// BUNCH: 181
typealias Nullability = IntellijNullability
// BUNCH: 181
fun dfaCheckNullability(variable: PsiVariable?, context: PsiElement?): Nullability =
DfaUtil.checkNullability(variable, context)
// BUNCH: 181
fun dfaInferMethodNullability(method: PsiMethod): Nullability =
DfaUtil.inferMethodNullability(method)
// BUNCH: 181
abstract class SliceNullnessAnalyzerBaseEx(
leafEquality: SliceLeafEquality,
provider: SliceLanguageSupportProvider
) : SliceNullnessAnalyzerBase(leafEquality, provider) {
override fun checkNullability(element: PsiElement?): Nullability {
return checkNullabilityEx(element)
}
abstract fun checkNullabilityEx(element: PsiElement?): Nullability
}
@@ -0,0 +1,40 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("MissingRecentApi", "IncompatibleAPI")
package org.jetbrains.kotlin.idea.util.compat
import com.intellij.codeInspection.dataFlow.Nullness
import com.intellij.codeInspection.dataFlow.DfaUtil
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiVariable
import com.intellij.slicer.SliceLanguageSupportProvider
import com.intellij.slicer.SliceLeafEquality
import com.intellij.slicer.SliceNullnessAnalyzerBase
// BUNCH: 181
typealias Nullability = Nullness
// BUNCH: 181
fun dfaCheckNullability(variable: PsiVariable?, context: PsiElement?): Nullability =
DfaUtil.checkNullness(variable, context)
// BUNCH: 181
fun dfaInferMethodNullability(method: PsiMethod): Nullability =
DfaUtil.inferMethodNullity(method)
// BUNCH: 181
abstract class SliceNullnessAnalyzerBaseEx(
leafEquality: SliceLeafEquality,
provider: SliceLanguageSupportProvider
) : SliceNullnessAnalyzerBase(leafEquality, provider) {
override fun checkNullness(element: PsiElement?): Nullability {
return checkNullabilityEx(element)
}
abstract fun checkNullabilityEx(element: PsiElement?): Nullability
}