From f91a610b8524ae84646186cff65c7aa898ae64bc Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 19 Jul 2017 16:35:52 +0700 Subject: [PATCH] InlineUtil#surroundWithCast: support variables w/o type element Review: IDEA-CR-23062 --- .../src/com/intellij/refactoring/util/InlineUtil.java | 9 +++++++-- .../TrivialFunctionalExpressionUsageInspection.java | 2 -- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java index 945d69165ba4..1385ef1ffca4 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java @@ -148,10 +148,15 @@ public class InlineUtil { } private static PsiExpression surroundWithCast(PsiVariable variable, PsiExpression expr) { - PsiTypeCastExpression cast = (PsiTypeCastExpression)JavaPsiFacade.getElementFactory(expr.getProject()).createExpressionFromText("(t)a", null); + PsiElementFactory factory = JavaPsiFacade.getElementFactory(expr.getProject()); + PsiTypeCastExpression cast = (PsiTypeCastExpression)factory.createExpressionFromText("(t)a", null); PsiTypeElement castTypeElement = cast.getCastType(); assert castTypeElement != null; - castTypeElement.replace(variable.getTypeElement()); + PsiTypeElement typeElement = variable.getTypeElement(); + if (typeElement == null) { + typeElement = factory.createTypeElement(variable.getType()); + } + castTypeElement.replace(typeElement); final PsiExpression operand = cast.getOperand(); assert operand != null; operand.replace(expr); diff --git a/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java b/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java index 82a93888d8c4..22816067a56a 100644 --- a/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java +++ b/plugins/InspectionGadgets/src/com/intellij/codeInspection/TrivialFunctionalExpressionUsageInspection.java @@ -213,7 +213,6 @@ public class TrivialFunctionalExpressionUsageInspection extends BaseJavaBatchLoc private static void replaceExpression(PsiMethodCallExpression callExpression, PsiLambdaExpression element) { PsiExpression expression; final CommentTracker ct = new CommentTracker(); - LambdaRefactoringUtil.specifyLambdaParameterTypes(element); inlineCallArguments(callExpression, element, ct); // body could be invalidated after inlining expression = LambdaUtil.extractSingleExpressionFromBody(element.getBody()); @@ -228,7 +227,6 @@ public class TrivialFunctionalExpressionUsageInspection extends BaseJavaBatchLoc PsiMethodCallExpression callExpression = PsiTreeUtil.getParentOfType(element, PsiMethodCallExpression.class); if (callExpression == null) return; final CommentTracker ct = new CommentTracker(); - LambdaRefactoringUtil.specifyLambdaParameterTypes(element); inlineCallArguments(callExpression, element, ct); body = element.getBody(); final PsiElement parent = callExpression.getParent();