[java-inspections] IDEA-375458 Remove false-positives when cast or stream mapping is added to explicitly change nullability

Merge-request: IJ-MR-174003
Merged-by: Bartek Pacia <bartek.pacia@jetbrains.com>

GitOrigin-RevId: 11262e4d6da8be5a8ebd664c4415d8b812f12b6e
This commit is contained in:
Bartek Pacia
2025-09-04 18:15:35 +00:00
committed by intellij-monorepo-bot
parent 29d3066a8a
commit 877652b6fb
6 changed files with 105 additions and 2 deletions
@@ -1,6 +1,7 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.codeInspection;
import com.intellij.codeInsight.Nullability;
import com.intellij.codeInsight.intention.HighPriorityAction;
import com.intellij.codeInspection.options.OptPane;
import com.intellij.codeInspection.util.OptionalUtil;
@@ -353,6 +354,18 @@ public final class RedundantStreamOptionalCallInspection extends AbstractBaseJav
return true;
}
if (expression instanceof PsiLambdaExpression lambda) {
PsiType functionalInterfaceType = lambda.getFunctionalInterfaceType();
if (functionalInterfaceType != null && lambda.getParameterList().getParametersCount() == 1) {
PsiType functionalInterfaceReturnType = LambdaUtil.getFunctionalInterfaceReturnType(functionalInterfaceType);
PsiType parameterType = lambda.getParameterList().getParameters()[0].getType();
if (functionalInterfaceReturnType != null) {
Nullability returnTypeNullability = functionalInterfaceReturnType.getNullability().nullability();
Nullability parameterNullability = parameterType.getNullability().nullability();
if (!returnTypeNullability.equals(Nullability.UNKNOWN) && !returnTypeNullability.equals(parameterNullability)) {
return false;
}
}
}
if (LambdaUtil.isIdentityLambda(lambda)) return true;
if (!allowBoxUnbox) return false;
PsiExpression body = LambdaUtil.extractSingleExpressionFromBody(lambda.getBody());