diff --git a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java similarity index 99% rename from java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java rename to java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java index 00cd9c8efdc3..aa3cb09f4f93 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/RedundantCastUtil.java +++ b/java/java-analysis-impl/src/com/intellij/psi/util/RedundantCastUtil.java @@ -1,4 +1,4 @@ -// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.psi.util; import com.intellij.codeInsight.AnnotationUtil; @@ -16,6 +16,7 @@ import com.intellij.psi.tree.IElementType; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; +import com.siyeh.ig.psiutils.ExpectedTypeUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -767,8 +768,9 @@ public class RedundantCastUtil { if (castType instanceof PsiPrimitiveType) { if (opType instanceof PsiPrimitiveType) { PsiElement parent = PsiUtil.skipParenthesizedExprUp(typeCast.getParent()); - if (parent instanceof PsiReturnStatement || parent instanceof PsiExpressionList || parent instanceof PsiVariable || - parent instanceof PsiAssignmentExpression) { + if ((parent instanceof PsiReturnStatement || parent instanceof PsiExpressionList || parent instanceof PsiVariable || + parent instanceof PsiAssignmentExpression) && + castType.equals(ExpectedTypeUtils.findExpectedType(typeCast, false))) { return !TypeConversionUtil.isSafeConversion(castType, opType); // let's suppose that casts losing precision are important } else { return !castType.equals(opType); // cast might be necessary (e.g. ((double)1)/5) diff --git a/java/java-tests/testData/inspection/redundantCast/generics/PrimitiveWidening.java b/java/java-tests/testData/inspection/redundantCast/generics/PrimitiveWidening.java index 4b0f5802aa1d..9ca763ea3f8f 100644 --- a/java/java-tests/testData/inspection/redundantCast/generics/PrimitiveWidening.java +++ b/java/java-tests/testData/inspection/redundantCast/generics/PrimitiveWidening.java @@ -15,4 +15,7 @@ class A { widen((int)c); } + Object test(int x) { + return (long) x; + } } \ No newline at end of file