diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/SignatureInferenceOptions.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/SignatureInferenceOptions.kt index 0cda4afe132d..ff2c6d9ed103 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/SignatureInferenceOptions.kt +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/SignatureInferenceOptions.kt @@ -28,6 +28,8 @@ open class SignatureInferenceContext(val ignored: List) { open fun ignoreMethod(method: GrMethod): SignatureInferenceContext { return SignatureInferenceContext(listOf(method, *ignored.toTypedArray())) } + + open val allowedToProcessReturnType : Boolean = true } object DefaultInferenceContext : SignatureInferenceContext(emptyList()) @@ -53,4 +55,6 @@ class ClosureIgnoringInferenceContext(private val manager: PsiManager, ignored: override fun ignoreMethod(method: GrMethod): SignatureInferenceContext { return ClosureIgnoringInferenceContext(manager, listOf(method, *ignored.toTypedArray())) } + + override val allowedToProcessReturnType: Boolean = false } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/driver/RecursiveMethodAnalyzer.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/driver/RecursiveMethodAnalyzer.kt index e6141ebf4272..ff7523509df1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/driver/RecursiveMethodAnalyzer.kt +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/style/inference/driver/RecursiveMethodAnalyzer.kt @@ -368,10 +368,12 @@ internal class RecursiveMethodAnalyzer(val method: GrMethod, signatureInferenceC } private fun processExitExpression(expression: GrExpression) { - val returnType = expression.parentOfType()?.returnType?.takeIf { it != PsiType.NULL && it != PsiType.VOID } ?: return - builder.addConstrainingExpression(expression) - val typeParameter = expression.type.typeParameter() ?: return - builder.generateRequiredTypes(typeParameter, returnType, UPPER) + if (builder.signatureInferenceContext.allowedToProcessReturnType) { + val returnType = expression.parentOfType()?.returnType?.takeIf { it != PsiType.NULL && it != PsiType.VOID } ?: return + builder.addConstrainingExpression(expression) + val typeParameter = expression.type.typeParameter() ?: return + builder.generateRequiredTypes(typeParameter, returnType, UPPER) + } } fun buildUsageInformation(): TypeUsageInformation = builder.build()