From 5926bc7fc51bc76f9254437deb226cc3e1fe85de Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Tue, 29 Mar 2016 19:27:55 +0200 Subject: [PATCH] pull up: skip usages in unknown languages (IDEA-153823) --- .../memberPullUp/PullUpProcessor.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpProcessor.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpProcessor.java index 5b57a2f6db67..770dd19073aa 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpProcessor.java @@ -136,6 +136,8 @@ public class PullUpProcessor extends BaseRefactoringProcessor implements PullUpD if (element == null) continue; PullUpHelper processor = getProcessor(element); + if (processor == null) continue; + processor.updateUsage(element); } ApplicationManager.getApplication().invokeLater(new Runnable() { @@ -198,6 +200,7 @@ public class PullUpProcessor extends BaseRefactoringProcessor implements PullUpD for (MemberInfo info : myMembersToMove) { PullUpHelper processor = getProcessor(info); + LOG.assertTrue(processor != null, info.getMember()); if (!(info.getMember() instanceof PsiClass) || info.getOverrides() == null) { processor.setCorrectVisibility(info); processor.encodeContextInfo(info); @@ -207,27 +210,37 @@ public class PullUpProcessor extends BaseRefactoringProcessor implements PullUpD } for (PsiMember member : myMembersAfterMove) { - getProcessor(member).postProcessMember(member); + PullUpHelper processor = getProcessor(member); + LOG.assertTrue(processor != null, member); + + processor.postProcessMember(member); final JavaRefactoringListenerManager listenerManager = JavaRefactoringListenerManager.getInstance(myProject); ((JavaRefactoringListenerManagerImpl)listenerManager).fireMemberMoved(mySourceClass, member); } } + @Nullable private PullUpHelper getProcessor(@NotNull PsiElement element) { Language language = element.getLanguage(); return getProcessor(language); } + @Nullable private PullUpHelper getProcessor(Language language) { PullUpHelper helper = myProcessors.get(language); if (helper == null) { - helper = PullUpHelper.INSTANCE.forLanguage(language).createPullUpHelper(this); + PullUpHelperFactory helperFactory = PullUpHelper.INSTANCE.forLanguage(language); + if (helperFactory == null) { + return null; + } + helper = helperFactory.createPullUpHelper(this); myProcessors.put(language, helper); } return helper; } + @Nullable private PullUpHelper getProcessor(@NotNull MemberInfo info) { PsiReferenceList refList = info.getSourceReferenceList(); if (refList != null) { @@ -265,7 +278,9 @@ public class PullUpProcessor extends BaseRefactoringProcessor implements PullUpD if (movedFields.isEmpty()) return; - getProcessor(myTargetSuperClass).moveFieldInitializations(movedFields); + PullUpHelper processor = getProcessor(myTargetSuperClass); + LOG.assertTrue(processor != null, myTargetSuperClass); + processor.moveFieldInitializations(movedFields); } public static boolean checkedInterfacesContain(Collection> memberInfos, PsiMethod psiMethod) {