reinit type selection manager after exprs invalidation (IDEA-72129)

This commit is contained in:
anna
2011-07-15 11:25:58 +04:00
parent 7b5a173a6b
commit 9e5beea3e1
4 changed files with 42 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.impl.source.PsiClassReferenceType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer;
import com.intellij.refactoring.ui.TypeSelectorManagerImpl;
@@ -22,7 +23,7 @@ import org.jetbrains.annotations.Nullable;
* User: anna
*/
public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntroducer<PsiVariable, PsiExpression> {
protected final TypeSelectorManagerImpl myTypeSelectorManager;
protected TypeSelectorManagerImpl myTypeSelectorManager;
public AbstractJavaInplaceIntroducer(final Project project,
Editor editor,
@@ -62,7 +63,11 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
@Override
protected void restoreState(PsiVariable psiField) {
final SmartTypePointer typePointer = SmartTypePointerManager.getInstance(myProject).createSmartTypePointer(getType());
super.restoreState(psiField);
myTypeSelectorManager = myExpr != null
? new TypeSelectorManagerImpl(myProject, typePointer.getType(), myExpr, myOccurrences)
: new TypeSelectorManagerImpl(myProject, typePointer.getType(), myOccurrences);
}
@Override

View File

@@ -0,0 +1,10 @@
public class Derr {
public static void main(String[] args) {
long value;
value = new Lo<caret>ng(1);
value = new Long(1);
value = new Long(1);
}
}

View File

@@ -0,0 +1,12 @@
public class Derr {
public static final Long ONE = new Long(1);
public static void main(String[] args) {
long value;
value = ONE;
value = ONE;
value = ONE;
}
}

View File

@@ -39,6 +39,18 @@ public class InplaceIntroduceConstantTest extends AbstractInplaceIntroduceTest {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
inplaceIntroduceFieldPopup.setReplaceAllOccurrences(true);
}
});
}
public void testReplaceAllWithClassRefType() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
inplaceIntroduceFieldPopup.setReplaceAllOccurrences(true);
type("ONE");
}
});
}
@@ -52,6 +64,7 @@ public class InplaceIntroduceConstantTest extends AbstractInplaceIntroduceTest {
}
});
}
public void testCorrectFinalPosition() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@@ -80,7 +93,7 @@ public class InplaceIntroduceConstantTest extends AbstractInplaceIntroduceTest {
return new MyIntroduceConstantHandler();
}
public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler {
public static class MyIntroduceConstantHandler extends IntroduceConstantHandler implements MyIntroduceHandler {
@Override
public boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor) {
return super.invokeImpl(project, selectedExpr, editor);