Commit e7743c0b authored by Anna Kozlova's avatar Anna Kozlova
Browse files

disable redundant lambda parameter type for annotated vars (IDEA-194413)

parent 8933f25a
Branches unavailable Tags unavailable
No related merge requests found
Showing with 14 additions and 5 deletions
+14 -5
......@@ -37,9 +37,14 @@ public class RedundantLambdaParameterTypeInspection extends AbstractBaseJavaLoca
final PsiLambdaExpression expression = (PsiLambdaExpression)parent;
final PsiParameter[] parameters = parameterList.getParameters();
for (PsiParameter parameter : parameters) {
if (parameter.getTypeElement() == null) return false;
if (!PsiUtil.isLanguageLevel11OrHigher(parameterList) &&
AnonymousCanBeLambdaInspection.hasRuntimeAnnotations(parameter, Collections.emptySet())) return false;
PsiTypeElement typeElement = parameter.getTypeElement();
if (typeElement == null) return false;
if (!PsiUtil.isLanguageLevel11OrHigher(parameterList)) {
if (AnonymousCanBeLambdaInspection.hasRuntimeAnnotations(parameter, Collections.emptySet())) {
return false;
}
}
else if (typeElement.isInferredType() && keepVarType(parameter)) return false;
}
if (parameters.length == 0) return false;
final PsiType functionalInterfaceType = expression.getFunctionalInterfaceType();
......@@ -72,8 +77,7 @@ public class RedundantLambdaParameterTypeInspection extends AbstractBaseJavaLoca
if (lambdaExpression != null) {
final PsiParameter[] parameters = lambdaExpression.getParameterList().getParameters();
if (PsiUtil.isLanguageLevel11OrHigher(lambdaExpression) &&
Arrays.stream(parameters).anyMatch(parameter -> parameter.hasModifierProperty(PsiModifier.FINAL) ||
parameter.getAnnotations().length > 0)) {
Arrays.stream(parameters).anyMatch(parameter -> keepVarType(parameter))) {
for (PsiParameter parameter : parameters) {
PsiTypeElement element = parameter.getTypeElement();
if (element != null) {
......@@ -96,6 +100,11 @@ public class RedundantLambdaParameterTypeInspection extends AbstractBaseJavaLoca
}
}
private static boolean keepVarType(PsiParameter parameter) {
return parameter.hasModifierProperty(PsiModifier.FINAL) ||
parameter.getAnnotations().length > 0;
}
private static class LambdaParametersFix implements LocalQuickFix {
@Nls
@NotNull
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment