[IDE-NI] Fix detecting error types in InsertExplicitTypeArgumentsIntention

This commit is contained in:
Dmitriy Novozhilov
2019-04-29 10:34:44 +03:00
committed by Mikhail Zarechenskiy
parent e46f552a8d
commit 1a085516b0
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.psi.KtTypeArgumentList
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.inference.CapturedType
import org.jetbrains.kotlin.resolve.calls.tower.NewResolvedCallImpl
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.ErrorUtils
import org.jetbrains.kotlin.types.checker.NewCapturedType
@@ -48,6 +49,13 @@ class InsertExplicitTypeArgumentsIntention :
val resolvedCall = element.getResolvedCall(bindingContext) ?: return false
val typeArgs = resolvedCall.typeArguments
if (resolvedCall is NewResolvedCallImpl<*>) {
val valueParameterTypes = resolvedCall.resultingDescriptor.valueParameters.map { it.type }
if (valueParameterTypes.any { ErrorUtils.containsErrorType(it) }) {
return false
}
}
return typeArgs.isNotEmpty() && typeArgs.values.none { ErrorUtils.containsErrorType(it) || it is CapturedType || it is NewCapturedType }
}