Introduce Variable: Fix replacement of multiple occurrences when variable name is changed in the template editor

#KT-7244 Fixed
This commit is contained in:
Alexey Sedunov
2015-04-02 18:25:29 +03:00
parent 20653090d3
commit b47c700a27
@@ -32,9 +32,12 @@ import com.intellij.openapi.util.Ref;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.psi.search.SearchScope;
import com.intellij.refactoring.introduce.inplace.InplaceVariableIntroducer;
import com.intellij.ui.NonFocusableCheckBox;
import kotlin.Function0;
import kotlin.Function1;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.idea.intentions.SpecifyTypeExplicitlyAction;
@@ -358,6 +361,19 @@ public class KotlinInplaceVariableIntroducer extends InplaceVariableIntroducer<J
return result;
}
@Override
protected Collection<PsiReference> collectRefs(SearchScope referencesSearchScope) {
return KotlinPackage.map(
KotlinPackage.filterIsInstance(getOccurrences(), JetSimpleNameExpression.class),
new Function1<JetSimpleNameExpression, PsiReference>() {
@Override
public PsiReference invoke(JetSimpleNameExpression expression) {
return expression.getReference();
}
}
);
}
@Override
protected void moveOffsetAfter(boolean success) {
if (!myReplaceOccurrence || myExprMarker == null) {