Adjust PreliminaryLoopVisitor to new contracts of DataFlowInfo
Previously, there was a contract that if it contains some non-trivial type info it also has it in `completeNullabilityInfo`. But after two previous changes it became false
This commit is contained in:
+6
-2
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.types.expressions
|
package org.jetbrains.kotlin.types.expressions
|
||||||
|
|
||||||
|
import gnu.trove.THashSet
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||||
import org.jetbrains.kotlin.psi.KtLoopExpression
|
import org.jetbrains.kotlin.psi.KtLoopExpression
|
||||||
@@ -36,9 +37,12 @@ class PreliminaryLoopVisitor private constructor() : AssignedVariablesSearcher()
|
|||||||
languageVersionSettings: LanguageVersionSettings
|
languageVersionSettings: LanguageVersionSettings
|
||||||
): DataFlowInfo {
|
): DataFlowInfo {
|
||||||
var resultFlowInfo = dataFlowInfo
|
var resultFlowInfo = dataFlowInfo
|
||||||
val nullabilityMap = resultFlowInfo.completeNullabilityInfo
|
val nonTrivialValues = THashSet<DataFlowValue>().apply {
|
||||||
|
addAll(dataFlowInfo.completeNullabilityInfo.iterator().map { it._1 })
|
||||||
|
addAll(dataFlowInfo.completeTypeInfo.iterator().map { it._1 })
|
||||||
|
}
|
||||||
val valueSetToClear = LinkedHashSet<DataFlowValue>()
|
val valueSetToClear = LinkedHashSet<DataFlowValue>()
|
||||||
for (value in nullabilityMap.keySet()) {
|
for (value in nonTrivialValues) {
|
||||||
// Only stable variables are under interest here
|
// Only stable variables are under interest here
|
||||||
val identifierInfo = value.identifierInfo
|
val identifierInfo = value.identifierInfo
|
||||||
if (value.kind == DataFlowValue.Kind.STABLE_VARIABLE && identifierInfo is IdentifierInfo.Variable) {
|
if (value.kind == DataFlowValue.Kind.STABLE_VARIABLE && identifierInfo is IdentifierInfo.Variable) {
|
||||||
|
|||||||
Reference in New Issue
Block a user