diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index 58e2acceefbe..62a59b0c34c4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -50,6 +50,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.jsp.jspJava.JspClass; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.util.*; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -800,7 +801,7 @@ public class HighlightClassUtil { PsiStatement firstStatement = statements[0]; if (!(firstStatement instanceof PsiExpressionStatement)) return false; PsiExpression expression = ((PsiExpressionStatement)firstStatement).getExpression(); - if (!HighlightUtil.isSuperOrThisMethodCall(expression)) return false; + if (!RefactoringChangeUtil.isSuperOrThisMethodCall(expression)) return false; PsiMethodCallExpression methodCallExpression = (PsiMethodCallExpression)expression; if (PsiKeyword.THIS.equals(methodCallExpression.getMethodExpression().getReferenceName())) continue; PsiReferenceExpression referenceExpression = methodCallExpression.getMethodExpression(); @@ -887,7 +888,7 @@ public class HighlightClassUtil { @Nullable public static HighlightInfo checkSuperQualifierType(@NotNull Project project, @NotNull PsiMethodCallExpression superCall) { - if (!HighlightUtil.isSuperMethodCall(superCall)) return null; + if (!RefactoringChangeUtil.isSuperMethodCall(superCall)) return null; PsiMethod ctr = PsiTreeUtil.getParentOfType(superCall, PsiMethod.class, true, PsiMember.class); if (ctr == null) return null; final PsiClass aClass = ctr.getContainingClass(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java index bc35620bb0be..1f5e33a07988 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java @@ -32,6 +32,7 @@ import com.intellij.psi.*; import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.infos.MethodCandidateInfo; import com.intellij.psi.util.*; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.ui.ColorUtil; import com.intellij.util.ui.UIUtil; import com.intellij.xml.util.XmlStringUtil; @@ -914,7 +915,7 @@ public class HighlightMethodUtil { @Nullable static HighlightInfo checkConstructorCallMustBeFirstStatement(PsiReferenceExpression expression) { PsiElement methodCall = expression.getParent(); - if (!HighlightUtil.isSuperOrThisMethodCall(methodCall)) return null; + if (!RefactoringChangeUtil.isSuperOrThisMethodCall(methodCall)) return null; PsiElement codeBlock = methodCall.getParent().getParent(); if (codeBlock instanceof PsiCodeBlock && codeBlock.getParent() instanceof PsiMethod diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 8fc4b7391b3c..781eeb32c4be 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -54,6 +54,7 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.templateLanguages.OuterLanguageElement; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.*; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.ArrayUtilRt; import com.intellij.util.Function; @@ -1859,7 +1860,7 @@ public class HighlightUtil extends HighlightUtilBase { type = qualifier instanceof PsiExpression ? ((PsiExpression)qualifier).getType() : null; referencedClass = PsiUtil.resolveClassInType(type); - boolean isSuperCall = isSuperMethodCall(expression.getParent()); + boolean isSuperCall = RefactoringChangeUtil.isSuperMethodCall(expression.getParent()); if (resolved == null && isSuperCall) { if (qualifier instanceof PsiReferenceExpression) { resolved = ((PsiReferenceExpression)qualifier).resolve(); @@ -1953,7 +1954,7 @@ public class HighlightUtil extends HighlightUtilBase { PsiElement element = expression.getParent(); while (element != null) { // check if expression inside super()/this() call - if (isSuperOrThisMethodCall(element)) { + if (RefactoringChangeUtil.isSuperOrThisMethodCall(element)) { PsiElement parentClass = new PsiMatcherImpl(element) .parent(PsiMatchers.hasClass(PsiExpressionStatement.class)) .parent(PsiMatchers.hasClass(PsiCodeBlock.class)) @@ -2047,23 +2048,6 @@ public class HighlightUtil extends HighlightUtilBase { return element != null; } - @Nullable - private static String getMethodExpressionName(@Nullable PsiElement element) { - if (!(element instanceof PsiMethodCallExpression)) return null; - PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)element).getMethodExpression(); - return methodExpression.getReferenceName(); - } - - public static boolean isSuperOrThisMethodCall(@Nullable PsiElement element) { - String name = getMethodExpressionName(element); - return PsiKeyword.SUPER.equals(name) || PsiKeyword.THIS.equals(name); - } - - public static boolean isSuperMethodCall(@Nullable PsiElement element) { - String name = getMethodExpressionName(element); - return PsiKeyword.SUPER.equals(name); - } - private static boolean thisOrSuperReference(@Nullable PsiExpression qualifierExpression, PsiClass aClass) { if (qualifierExpression == null) return true; PsiJavaCodeReferenceElement qualifier; diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/QualifyWithThisFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/QualifyWithThisFix.java index 123dbdad9363..bfe2d8c45b33 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/QualifyWithThisFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/QualifyWithThisFix.java @@ -19,7 +19,7 @@ import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.*; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -55,7 +55,7 @@ class QualifyWithThisFix implements IntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { final PsiThisExpression thisExpression = - RefactoringUtil.createThisExpression(PsiManager.getInstance(project), myContainingClass); + RefactoringChangeUtil.createThisExpression(PsiManager.getInstance(project), myContainingClass); ((PsiReferenceExpression)myExpression).setQualifierExpression(thisExpression); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java index 4f0a29eb10b7..805a04528a94 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java @@ -20,7 +20,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -89,7 +89,7 @@ public class AddTypeArgumentsFix extends MethodArgumentFix { if (method.hasModifierProperty(PsiModifier.STATIC)) { qualifierExpression = factory.createReferenceExpression(containingClass); } else { - qualifierExpression = RefactoringUtil.createThisExpression(method.getManager(), null); + qualifierExpression = RefactoringChangeUtil.createThisExpression(method.getManager(), null); } methodExpression.setQualifierExpression(qualifierExpression); } diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java index 71013fd61bf1..a7cc46518ae2 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateMethodFromUsageFix.java @@ -36,7 +36,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; -import com.intellij.refactoring.util.FieldConflictsResolver; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Processor; import com.intellij.util.containers.ContainerUtil; @@ -120,7 +120,7 @@ public class CreateMethodFromUsageFix extends CreateFromUsageBaseFix { PsiMethodCallExpression call = getMethodCall(); if (call == null) return Collections.emptyList(); for (PsiClass target : targets) { - if (target.isInterface() && shouldCreateStaticMember(call.getMethodExpression(), target)) continue; + if (target.isInterface() && shouldCreateStaticMember(call.getMethodExpression(), target)) continue; if (!isMethodSignatureExists(call, target)) { result.add(target); } @@ -170,7 +170,7 @@ public class CreateMethodFromUsageFix extends CreateFromUsageBaseFix { if (enclosingContext instanceof PsiMethod && methodName.equals(enclosingContext.getName()) && PsiTreeUtil.isAncestor(targetClass, parentClass, true) && !ref.isQualified()) { - FieldConflictsResolver.qualifyReference(ref, method, null); + RefactoringChangeUtil.qualifyReference(ref, method, null); } PsiCodeBlock body = method.getBody(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java index bb54763bbd0e..1fdef3108ea3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/QualifyThisArgumentFix.java @@ -33,7 +33,7 @@ import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.util.TypeConversionUtil; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -44,7 +44,7 @@ public class QualifyThisArgumentFix extends PsiElementBaseIntentionAction { private final PsiThisExpression myExpression; private final PsiClass myPsiClass; - + public QualifyThisArgumentFix(@NotNull PsiThisExpression expression, @NotNull PsiClass psiClass) { myExpression = expression; myPsiClass = psiClass; @@ -67,7 +67,7 @@ public class QualifyThisArgumentFix extends PsiElementBaseIntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { - myExpression.replace(RefactoringUtil.createThisExpression(PsiManager.getInstance(project), myPsiClass)); + myExpression.replace(RefactoringChangeUtil.createThisExpression(PsiManager.getInstance(project), myPsiClass)); } public static void registerQuickFixAction(CandidateInfo[] candidates, PsiCall call, HighlightInfo highlightInfo, final TextRange fixRange) { diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java index a4bdf0c7792a..1e91f9d9ca36 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java @@ -17,7 +17,6 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInsight.daemon.QuickFixBundle; -import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.codeInsight.generation.surroundWith.JavaWithTryCatchSurrounder; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.openapi.diagnostic.Logger; @@ -28,6 +27,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -67,7 +67,7 @@ public class SurroundWithTryCatchFix implements IntentionAction { return myStatement != null && myStatement.isValid() && (!(myStatement instanceof PsiExpressionStatement) || - !HighlightUtil.isSuperOrThisMethodCall(((PsiExpressionStatement)myStatement).getExpression())); + !RefactoringChangeUtil.isSuperOrThisMethodCall(((PsiExpressionStatement)myStatement).getExpression())); } @Override diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java index a543b26d003f..556c762ac463 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java @@ -16,7 +16,6 @@ package com.intellij.codeInsight.intention.impl; import com.intellij.codeInsight.FileModificationService; -import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.codeInsight.daemon.impl.quickfix.CreateFromUsageUtils; import com.intellij.codeInsight.highlighting.HighlightManager; import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction; @@ -30,6 +29,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.jsp.jspJava.JspClass; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -152,7 +152,7 @@ public abstract class BaseMoveInitializerToMethodAction extends PsiElementBaseIn private static boolean isSuperOrThisMethodCall(@NotNull PsiStatement statement) { if (statement instanceof PsiExpressionStatement) { final PsiElement expression = ((PsiExpressionStatement)statement).getExpression(); - if (HighlightUtil.isSuperOrThisMethodCall(expression)) { + if (RefactoringChangeUtil.isSuperOrThisMethodCall(expression)) { return true; } } diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 4d812842b81a..e480912b7ac8 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -538,8 +538,9 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr containingClass = PsiTreeUtil.getParentOfType(containingClass, PsiClass.class); } if (containingClasses.size() == 1) { - return RefactoringUtil.createThisExpression(parentClass.getManager(), containingClasses.contains(parentClass) ? null - : containingClasses.iterator().next()); + return RefactoringChangeUtil.createThisExpression(parentClass.getManager(), containingClasses.contains(parentClass) ? null + : containingClasses + .iterator().next()); } } } @@ -761,8 +762,8 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr baseMethod == null ? PsiSubstitutor.EMPTY : ChangeSignatureProcessor.calculateSubstitutor(caller, baseMethod); final PsiClass aClass = changeInfo.getMethod().getContainingClass(); final PsiClass callerContainingClass = caller.getContainingClass(); - final PsiSubstitutor psiSubstitutor = aClass != null && callerContainingClass != null && callerContainingClass.isInheritor(aClass, true) - ? TypeConversionUtil.getSuperClassSubstitutor(aClass, callerContainingClass, substitutor) + final PsiSubstitutor psiSubstitutor = aClass != null && callerContainingClass != null && callerContainingClass.isInheritor(aClass, true) + ? TypeConversionUtil.getSuperClassSubstitutor(aClass, callerContainingClass, substitutor) : PsiSubstitutor.EMPTY; for (JavaParameterInfo info : primaryNewParms) { if (info.getOldIndex() < 0) newParameters.add(createNewParameter(changeInfo, info, psiSubstitutor, substitutor)); diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index b6d33951f609..14535e0e822d 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -203,7 +203,7 @@ public class ExtractMethodProcessor implements MatchProvider { public boolean prepare() throws PrepareFailedException { return prepare(null); } - + /** * Invoked in atomic action */ @@ -551,7 +551,7 @@ public class ExtractMethodProcessor implements MatchProvider { myVariableDatum[i] = myInputVariables.getInputVariables().get(i); } } - + @TestOnly public void doNotPassParameter(int i) { myVariableDatum[i].passAsParameter = false; @@ -824,10 +824,10 @@ public class ExtractMethodProcessor implements MatchProvider { myExtractedMethod = (PsiMethod)myTargetClass.addAfter(newMethod, myAnchor); if (isNeedToChangeCallContext() && myNeedChangeContext) { - ChangeContextUtil.decodeContextInfo(myExtractedMethod, myTargetClass, RefactoringUtil.createThisExpression(myManager, null)); + ChangeContextUtil.decodeContextInfo(myExtractedMethod, myTargetClass, RefactoringChangeUtil.createThisExpression(myManager, null)); if (myMethodCall.resolveMethod() != myExtractedMethod) { final PsiReferenceExpression methodExpression = myMethodCall.getMethodExpression(); - methodExpression.setQualifierExpression(RefactoringUtil.createThisExpression(myManager, myTargetClass)); + methodExpression.setQualifierExpression(RefactoringChangeUtil.createThisExpression(myManager, myTargetClass)); } } @@ -1000,7 +1000,7 @@ public class ExtractMethodProcessor implements MatchProvider { private PsiMethod generateEmptyMethod(PsiClassType[] exceptions, boolean isStatic) throws IncorrectOperationException { PsiMethod newMethod; if (myIsChainedConstructor) { - newMethod = myElementFactory.createConstructor(); + newMethod = myElementFactory.createConstructor(); } else { newMethod = myElementFactory.createMethod(myMethodName, myReturnType); diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index 17a083c2f8e3..7c55aaefe14b 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -16,7 +16,6 @@ package com.intellij.refactoring.inline; import com.intellij.codeInsight.ChangeContextUtil; -import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.history.LocalHistory; import com.intellij.history.LocalHistoryAction; import com.intellij.lang.Language; @@ -621,7 +620,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { } } - + PsiClass thisClass = myMethod.getContainingClass(); PsiExpression thisAccessExpr; if (thisVar != null) { @@ -968,8 +967,8 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { for (PsiReference ref : refs) { final PsiJavaCodeReferenceElement javaRef = (PsiJavaCodeReferenceElement)ref; if (initializer instanceof PsiThisExpression && ((PsiThisExpression)initializer).getQualifier() == null) { - final PsiClass varThisClass = RefactoringUtil.getThisClass(variable); - if (RefactoringUtil.getThisClass(javaRef) != varThisClass) { + final PsiClass varThisClass = RefactoringChangeUtil.getThisClass(variable); + if (RefactoringChangeUtil.getThisClass(javaRef) != varThisClass) { initializer = JavaPsiFacade.getInstance(myManager.getProject()).getElementFactory().createExpressionFromText(varThisClass.getName() + ".this", variable); } } @@ -1438,7 +1437,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { if (methodBody.getStatements().length > 1) { PsiExpression expr = PsiTreeUtil.getParentOfType(element, PsiExpression.class); while (expr != null) { - if (HighlightUtil.isSuperOrThisMethodCall(expr)) { + if (RefactoringChangeUtil.isSuperOrThisMethodCall(expr)) { return "Inline cannot be applied to multiline method in constructor call"; } expr = PsiTreeUtil.getParentOfType(expr, PsiExpression.class, true); diff --git a/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java b/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java index fa216113b276..0d1aacf073c8 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceField/BaseExpressionToFieldHandler.java @@ -62,6 +62,7 @@ import com.intellij.refactoring.introduceVariable.IntroduceVariableBase; import com.intellij.refactoring.rename.RenameJavaVariableProcessor; import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.refactoring.util.EnumConstantsUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.refactoring.util.occurrences.OccurrenceManager; import com.intellij.util.IncorrectOperationException; @@ -373,7 +374,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase PsiStatement assignment = createAssignment(field, initializerExpression, body.getLastChild(), parentClass); assignment = (PsiStatement) body.add(assignment); ChangeContextUtil.decodeContextInfo(assignment, field.getContainingClass(), - RefactoringUtil.createThisExpression(field.getManager(), null)); + RefactoringChangeUtil.createThisExpression(field.getManager(), null)); added = true; } if (!added && enclosingConstructor == null) { @@ -383,7 +384,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase PsiStatement assignment = createAssignment(field, initializerExpression, body.getLastChild(), parentClass); assignment = (PsiStatement) body.add(assignment); ChangeContextUtil.decodeContextInfo(assignment, field.getContainingClass(), - RefactoringUtil.createThisExpression(field.getManager(), null)); + RefactoringChangeUtil.createThisExpression(field.getManager(), null)); } } catch (IncorrectOperationException e) { @@ -444,7 +445,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase return null; } } - + protected abstract boolean accept(ElementToWorkOn elementToWorkOn); protected ElementToWorkOn.ElementsProcessor getElementProcessor(final Project project, final Editor editor) { @@ -707,7 +708,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase } initializer = IntroduceVariableBase.replaceExplicitWithDiamondWhenApplicable(initializer, myType); - + final PsiMethod enclosingConstructor = getEnclosingConstructor(myParentClass, myAnchorElement); PsiClass destClass = mySettings.getDestinationClass() == null ? myParentClass : mySettings.getDestinationClass(); @@ -861,7 +862,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase } return true; } - + static PsiField appendField(final PsiExpression initializer, InitializationPlace initializerPlace, final PsiClass destClass, final PsiClass parentClass, @@ -877,13 +878,13 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase final PsiField forwardReference) { final PsiClass parentClass = PsiTreeUtil.getParentOfType(anchorMember, PsiClass.class); - if (anchorMember instanceof PsiField && + if (anchorMember instanceof PsiField && anchorMember.getParent() == parentClass && destClass == parentClass && ((PsiField)anchorMember).hasModifierProperty(PsiModifier.STATIC) == psiField.hasModifierProperty(PsiModifier.STATIC)) { return (PsiField)destClass.addBefore(psiField, anchorMember); } - else if (anchorMember instanceof PsiClassInitializer && + else if (anchorMember instanceof PsiClassInitializer && anchorMember.getParent() == parentClass && destClass == parentClass) { PsiField field = (PsiField)destClass.addBefore(psiField, anchorMember); diff --git a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java index 288bab4647db..5672203e3c17 100644 --- a/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/makeStatic/MakeClassStaticProcessor.java @@ -15,7 +15,6 @@ */ package com.intellij.refactoring.makeStatic; -import com.intellij.codeInsight.intention.impl.BaseMoveInitializerToMethodAction; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.*; @@ -29,6 +28,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.move.MoveInstanceMembersUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.refactoring.util.RefactoringUIUtil; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.refactoring.util.javadoc.MethodJavaDocHelper; @@ -262,7 +262,7 @@ public class MakeClassStaticProcessor extends MakeMethodOrClassStaticProcessor

createQualifiedExpression(manager, qualifierClass, "this"); - } - - public static PsiSuperExpression createSuperExpression(PsiManager manager, PsiClass qualifierClass) throws IncorrectOperationException { - return RefactoringUtil.createQualifiedExpression(manager, qualifierClass, "super"); - } - - private static T createQualifiedExpression(PsiManager manager, PsiClass qualifierClass, String qName) throws IncorrectOperationException { - PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); - if (qualifierClass != null) { - T qualifiedThis = (T)factory.createExpressionFromText("q." + qName, null); - qualifiedThis = (T)CodeStyleManager.getInstance(manager.getProject()).reformat(qualifiedThis); - PsiJavaCodeReferenceElement thisQualifier = qualifiedThis.getQualifier(); - LOG.assertTrue(thisQualifier != null); - thisQualifier.bindToElement(qualifierClass); - return qualifiedThis; - } - else { - return (T)factory.createExpressionFromText(qName, null); - } - } - /** * removes a reference to the specified class from the reference list given * diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java index f6929a3ca326..b6d8a5521a1d 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java +++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/DuplicatesFinder.java @@ -27,7 +27,7 @@ import com.intellij.psi.impl.source.PsiImmediateClassType; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.*; import com.intellij.refactoring.extractMethod.InputVariables; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.IntArrayList; @@ -349,11 +349,11 @@ public class DuplicatesFinder { return false; } PsiElement qualifier1 = ((PsiJavaCodeReferenceElement)pattern).getQualifier(); - if (qualifier1 instanceof PsiReferenceExpression && qualifier2 instanceof PsiReferenceExpression && + if (qualifier1 instanceof PsiReferenceExpression && qualifier2 instanceof PsiReferenceExpression && !match.areCorrespond(((PsiReferenceExpression)qualifier1).resolve(), ((PsiReferenceExpression)qualifier2).resolve())) { return false; } - + } if (pattern instanceof PsiTypeCastExpression) { @@ -424,16 +424,17 @@ public class DuplicatesFinder { final Pair parameter = patternQualifier.getUserData(PARAMETER); if (parameter != null) { - final PsiClass thisClass = RefactoringUtil.getThisClass(parameter.first); + final PsiClass thisClass = RefactoringChangeUtil.getThisClass(parameter.first); if (contextClass != null && InheritanceUtil.isInheritorOrSelf(thisClass, contextClass, true)) { contextClass = thisClass; } - final PsiClass thisCandidate = RefactoringUtil.getThisClass(candidate); + final PsiClass thisCandidate = RefactoringChangeUtil.getThisClass(candidate); if (thisCandidate != null && InheritanceUtil.isInheritorOrSelf(thisCandidate, contextClass, true)) { contextClass = thisCandidate; } - return contextClass != null && match.putParameter(parameter, RefactoringUtil.createThisExpression(patternQualifier.getManager(), contextClass)); + return contextClass != null && match.putParameter(parameter, RefactoringChangeUtil + .createThisExpression(patternQualifier.getManager(), contextClass)); } else if (patternQualifier instanceof PsiReferenceExpression) { final PsiElement resolved = ((PsiReferenceExpression)patternQualifier).resolve(); if (resolved instanceof PsiClass) { diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesMatchProvider.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesMatchProvider.java index 553b708b6efc..6476aa48174a 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesMatchProvider.java +++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesMatchProvider.java @@ -23,6 +23,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.VisibilityUtil; @@ -83,9 +84,9 @@ class MethodDuplicatesMatchProvider implements MatchProvider { } else { final PsiClass psiClass = PsiTreeUtil.getParentOfType(match.getMatchStart(), PsiClass.class); if (psiClass != null && psiClass.isInheritor(containingClass, true)) { - qualifierExpression.replace(RefactoringUtil.createSuperExpression(containingClass.getManager(), null)); + qualifierExpression.replace(RefactoringChangeUtil.createSuperExpression(containingClass.getManager(), null)); } else { - qualifierExpression.replace(RefactoringUtil.createThisExpression(containingClass.getManager(), containingClass)); + qualifierExpression.replace(RefactoringChangeUtil.createThisExpression(containingClass.getManager(), containingClass)); } } } diff --git a/java/java-impl/src/com/intellij/codeInsight/ChangeContextUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/ChangeContextUtil.java similarity index 96% rename from java/java-impl/src/com/intellij/codeInsight/ChangeContextUtil.java rename to java/java-psi-impl/src/com/intellij/codeInsight/ChangeContextUtil.java index df3ccb729865..b93057fd060b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/ChangeContextUtil.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/ChangeContextUtil.java @@ -20,8 +20,7 @@ import com.intellij.openapi.util.Key; import com.intellij.psi.*; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.refactoring.util.FieldConflictsResolver; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.ArrayUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -57,7 +56,7 @@ public class ChangeContextUtil { PsiThisExpression thisExpr = (PsiThisExpression)scope; final PsiJavaCodeReferenceElement qualifier = thisExpr.getQualifier(); if (qualifier == null){ - PsiClass thisClass = RefactoringUtil.getThisClass(thisExpr); + PsiClass thisClass = RefactoringChangeUtil.getThisClass(thisExpr); if (thisClass != null && !(thisClass instanceof PsiAnonymousClass)){ thisExpr.putCopyableUserData(THIS_QUALIFIER_CLASS_KEY, thisClass); } @@ -187,7 +186,7 @@ public class ChangeContextUtil { return thisExpr; } - private static PsiReferenceExpression decodeReferenceExpression(PsiReferenceExpression refExpr, + private static PsiReferenceExpression decodeReferenceExpression(@NotNull PsiReferenceExpression refExpr, PsiExpression thisAccessExpr, PsiClass thisClass) throws IncorrectOperationException { PsiManager manager = refExpr.getManager(); @@ -225,7 +224,7 @@ public class ChangeContextUtil { PsiJavaCodeReferenceElement thisQualifier = ((PsiThisExpression)thisAccessExpr).getQualifier(); PsiClass thisExprClass = thisQualifier != null ? (PsiClass)thisQualifier.resolve() - : RefactoringUtil.getThisClass(refExpr); + : RefactoringChangeUtil.getThisClass(refExpr); if (currentClass.equals(thisExprClass) || thisExprClass.isInheritor(realParentClass, true)){ // qualifier is not necessary needQualifier = false; } @@ -240,7 +239,7 @@ public class ChangeContextUtil { else if (thisClass != null && realParentClass != null && PsiTreeUtil.isAncestor(realParentClass, thisClass, true)) { PsiElement refElement = refExpr.resolve(); if (refElement != null && !manager.areElementsEquivalent(refMember, refElement)) { - refExpr = FieldConflictsResolver.qualifyReference(refExpr, refMember, null); + refExpr = RefactoringChangeUtil.qualifyReference(refExpr, refMember, null); } } } @@ -302,7 +301,7 @@ public class ChangeContextUtil { return refElement.equals(newRefElement); } else if (refExpr instanceof PsiMethodReferenceExpression) { - return false; + return false; } else { PsiReferenceExpression newRefExpr = (PsiReferenceExpression)factory.createExpressionFromText( @@ -322,7 +321,7 @@ public class ChangeContextUtil { PsiThisExpression thisExpr = (PsiThisExpression)scope; if (thisExpr.getQualifier() == null){ if (thisClass instanceof PsiAnonymousClass) return null; - PsiThisExpression qualifiedThis = RefactoringUtil.createThisExpression(thisClass.getManager(), thisClass); + PsiThisExpression qualifiedThis = RefactoringChangeUtil.createThisExpression(thisClass.getManager(), thisClass); if (thisExpr.getParent() != null) { return thisExpr.replace(qualifiedThis); } else { diff --git a/java/java-psi-impl/src/com/intellij/refactoring/util/RefactoringChangeUtil.java b/java/java-psi-impl/src/com/intellij/refactoring/util/RefactoringChangeUtil.java new file mode 100644 index 000000000000..b23e34704f1c --- /dev/null +++ b/java/java-psi-impl/src/com/intellij/refactoring/util/RefactoringChangeUtil.java @@ -0,0 +1,124 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.refactoring.util; + +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.*; +import com.intellij.psi.codeStyle.CodeStyleManager; +import com.intellij.psi.util.InheritanceUtil; +import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class RefactoringChangeUtil { + private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.util.ChangeUtil"); + + @Nullable + private static String getMethodExpressionName(@Nullable PsiElement element) { + if (!(element instanceof PsiMethodCallExpression)) return null; + PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)element).getMethodExpression(); + return methodExpression.getReferenceName(); + } + + public static boolean isSuperOrThisMethodCall(@Nullable PsiElement element) { + String name = getMethodExpressionName(element); + return PsiKeyword.SUPER.equals(name) || PsiKeyword.THIS.equals(name); + } + + public static boolean isSuperMethodCall(@Nullable PsiElement element) { + String name = getMethodExpressionName(element); + return PsiKeyword.SUPER.equals(name); + } + + public static PsiReferenceExpression qualifyReference(@NotNull PsiReferenceExpression referenceExpression, + @NotNull PsiMember member, + @Nullable final PsiClass qualifyingClass) throws IncorrectOperationException { + PsiManager manager = referenceExpression.getManager(); + PsiMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(referenceExpression, PsiMethodCallExpression.class, true); + while (methodCallExpression != null) { + if (isSuperOrThisMethodCall(methodCallExpression)) { + return referenceExpression; + } + methodCallExpression = PsiTreeUtil.getParentOfType(methodCallExpression, PsiMethodCallExpression.class, true); + } + PsiReferenceExpression expressionFromText; + final PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); + if (qualifyingClass == null) { + PsiClass parentClass = PsiTreeUtil.getParentOfType(referenceExpression, PsiClass.class); + final PsiClass containingClass = member.getContainingClass(); + if (parentClass != null && !InheritanceUtil.isInheritorOrSelf(parentClass, containingClass, true)) { + while (parentClass != null && !InheritanceUtil.isInheritorOrSelf(parentClass, containingClass, true)) { + parentClass = PsiTreeUtil.getParentOfType(parentClass, PsiClass.class, true); + } + LOG.assertTrue(parentClass != null); + expressionFromText = (PsiReferenceExpression)factory.createExpressionFromText("A.this." + member.getName(), null); + ((PsiThisExpression)expressionFromText.getQualifierExpression()).getQualifier().replace(factory.createClassReferenceElement(parentClass)); + } + else { + expressionFromText = (PsiReferenceExpression)factory.createExpressionFromText("this." + member.getName(), null); + } + } + else { + expressionFromText = (PsiReferenceExpression)factory.createExpressionFromText("A." + member.getName(), null); + expressionFromText.setQualifierExpression(factory.createReferenceExpression(qualifyingClass)); + } + CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject()); + expressionFromText = (PsiReferenceExpression)codeStyleManager.reformat(expressionFromText); + return (PsiReferenceExpression)referenceExpression.replace(expressionFromText); + } + + public static PsiClass getThisClass(@NotNull PsiElement place) { + PsiElement parent = place.getContext(); + if (parent == null) return null; + PsiElement prev = null; + while (true) { + if (parent instanceof PsiClass) { + if (!(parent instanceof PsiAnonymousClass && ((PsiAnonymousClass)parent).getArgumentList() == prev)) { + return (PsiClass)parent; + } + } + prev = parent; + parent = parent.getContext(); + if (parent == null) return null; + } + } + + static T createQualifiedExpression(@NotNull PsiManager manager, + PsiClass qualifierClass, + @NotNull String qName) throws IncorrectOperationException { + PsiElementFactory factory = JavaPsiFacade.getInstance(manager.getProject()).getElementFactory(); + if (qualifierClass != null) { + T qualifiedThis = (T)factory.createExpressionFromText("q." + qName, null); + qualifiedThis = (T)CodeStyleManager.getInstance(manager.getProject()).reformat(qualifiedThis); + PsiJavaCodeReferenceElement thisQualifier = qualifiedThis.getQualifier(); + LOG.assertTrue(thisQualifier != null); + thisQualifier.bindToElement(qualifierClass); + return qualifiedThis; + } + else { + return (T)factory.createExpressionFromText(qName, null); + } + } + + public static PsiThisExpression createThisExpression(PsiManager manager, PsiClass qualifierClass) throws IncorrectOperationException { + return RefactoringChangeUtil.createQualifiedExpression(manager, qualifierClass, "this"); + } + + public static PsiSuperExpression createSuperExpression(PsiManager manager, PsiClass qualifierClass) throws IncorrectOperationException { + return RefactoringChangeUtil.createQualifiedExpression(manager, qualifierClass, "super"); + } +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/StringConcatenationInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/StringConcatenationInspection.java index 3c3db60676f6..9c99b7676f8c 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/StringConcatenationInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/internationalization/StringConcatenationInspection.java @@ -16,13 +16,13 @@ package com.siyeh.ig.internationalization; import com.intellij.codeInsight.AnnotationUtil; -import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.codeInsight.intention.AddAnnotationFix; import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -209,7 +209,7 @@ public class StringConcatenationInspection extends BaseInspection { } else { final PsiMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(expression, PsiMethodCallExpression.class, true, PsiCodeBlock.class, PsiClass.class); - if (HighlightUtil.isSuperOrThisMethodCall(methodCallExpression)) { + if (RefactoringChangeUtil.isSuperOrThisMethodCall(methodCallExpression)) { return; } } diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java index 55040e3730cc..bd6392372c60 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceLambdaWithAnonymousIntention.java @@ -24,7 +24,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.refactoring.util.RefactoringUtil; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.HashMap; import com.siyeh.ipp.base.Intention; @@ -68,7 +68,8 @@ public class ReplaceLambdaWithAnonymousIntention extends Intention { final PsiClass thisClass = PsiTreeUtil.getParentOfType(lambdaExpression, PsiClass.class, true); final String thisClassName = thisClass.getName(); if (thisClassName != null) { - final PsiThisExpression thisAccessExpr = thisClass instanceof PsiAnonymousClass ? null : RefactoringUtil.createThisExpression(lambdaExpression.getManager(), thisClass); + final PsiThisExpression thisAccessExpr = thisClass instanceof PsiAnonymousClass ? null : RefactoringChangeUtil + .createThisExpression(lambdaExpression.getManager(), thisClass); ChangeContextUtil.decodeContextInfo(blockFromText, thisClass, thisAccessExpr); final Map replacements = new HashMap(); blockFromText.accept(new JavaRecursiveElementWalkingVisitor() { @@ -79,7 +80,7 @@ public class ReplaceLambdaWithAnonymousIntention extends Intention { replacements.put(expression, psiElementFactory.createExpressionFromText(thisClassName + "." + expression.getText(), expression)); } } - + }); for (PsiElement psiElement : replacements.keySet()) { psiElement.replace(replacements.get(psiElement)); @@ -148,9 +149,9 @@ public class ReplaceLambdaWithAnonymousIntention extends Intention { if (disabled[0]) return false; } final PsiType functionalInterfaceType = lambdaExpression.getFunctionalInterfaceType(); - return functionalInterfaceType != null && - LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType) != null && - LambdaUtil.isLambdaFullyInferred(lambdaExpression, functionalInterfaceType) && + return functionalInterfaceType != null && + LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType) != null && + LambdaUtil.isLambdaFullyInferred(lambdaExpression, functionalInterfaceType) && LambdaHighlightingUtil.checkInterfaceFunctional(functionalInterfaceType) == null; } return false; diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java index 45da972b97f5..a779c9af5b9c 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/I18nInspection.java @@ -23,7 +23,6 @@ import com.intellij.ExtensionPoints; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.CodeInsightBundle; import com.intellij.codeInsight.daemon.GroupNames; -import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil; import com.intellij.codeInsight.intention.AddAnnotationFix; import com.intellij.codeInspection.*; import com.intellij.codeInspection.ex.BaseLocalInspectionTool; @@ -47,6 +46,7 @@ import com.intellij.psi.util.MethodSignatureUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.introduceField.IntroduceConstantHandler; +import com.intellij.refactoring.util.RefactoringChangeUtil; import com.intellij.ui.AddDeleteListPanel; import com.intellij.ui.DocumentAdapter; import com.intellij.ui.FieldPanel; @@ -891,7 +891,7 @@ public class I18nInspection extends BaseLocalInspectionTool { } final PsiElement grandparent = parent.getParent(); final PsiClass aClass; - if (HighlightUtil.isSuperOrThisMethodCall(grandparent)) { + if (RefactoringChangeUtil.isSuperOrThisMethodCall(grandparent)) { final PsiMethod method = ((PsiMethodCallExpression)grandparent).resolveMethod(); if (method != null) { aClass = method.getContainingClass();