fix java inplace introduce inside injections

This commit is contained in:
Anna Kozlova
2015-09-11 19:56:47 +03:00
parent 9bbc955f94
commit f5101a309a
6 changed files with 30 additions and 2 deletions
@@ -38,7 +38,7 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
PsiVariable localVariable,
PsiExpression[] occurrences,
TypeSelectorManagerImpl typeSelectorManager, String title) {
super(project, InjectedLanguageUtil.getTopLevelEditor(editor), expr, localVariable, occurrences, title, StdFileTypes.JAVA);
super(project, editor, expr, localVariable, occurrences, title, StdFileTypes.JAVA);
myTypeSelectorManager = typeSelectorManager;
}
@@ -0,0 +1,5 @@
class C {
{
String java = "class ABC { {new <caret>ABC();}}";
}
}
@@ -0,0 +1,5 @@
class C {
{
String java = "class ABC { {ABC expr = new ABC();}}";
}
}
@@ -18,10 +18,12 @@ package com.intellij.refactoring;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.util.Pass;
import com.intellij.psi.PsiExpression;
import com.intellij.psi.PsiLocalVariable;
import com.intellij.psi.PsiMethodCallExpression;
import com.intellij.psi.PsiReferenceExpression;
import com.intellij.psi.impl.source.tree.injected.MyTestInjector;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer;
import com.intellij.testFramework.IdeaTestCase;
@@ -79,6 +81,12 @@ public abstract class AbstractJavaInplaceIntroduceTest extends AbstractInplaceIn
}
return introduceHandler.getInplaceIntroducer();
}
protected void doTestInsideInjection(final Pass<AbstractInplaceIntroducer> pass) {
MyTestInjector testInjector = new MyTestInjector(getPsiManager());
testInjector.injectAll(myTestRootDisposable);
doTest(pass);
}
public interface MyIntroduceHandler {
boolean invokeImpl(Project project, @NotNull PsiExpression selectedExpr, Editor editor);
@@ -55,6 +55,15 @@ public class InplaceIntroduceVariableTest extends AbstractJavaInplaceIntroduceTe
});
}
public void testInsideInjectedString() throws Exception {
doTestInsideInjection(new Pass<AbstractInplaceIntroducer>() {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
type("expr");
}
});
}
public void testPlaceInsideLoopAndRename() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override
@@ -18,6 +18,7 @@ package com.intellij.refactoring;
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
import com.intellij.codeInsight.template.impl.TemplateState;
import com.intellij.openapi.util.Pass;
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
import com.intellij.refactoring.introduce.inplace.AbstractInplaceIntroducer;
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
@@ -67,7 +68,7 @@ public abstract class AbstractInplaceIntroduceTest extends LightPlatformCodeInsi
final AbstractInplaceIntroducer introducer = invokeRefactoring();
pass.pass(introducer);
TemplateState state = TemplateManagerImpl.getTemplateState(getEditor());
TemplateState state = TemplateManagerImpl.getTemplateState(InjectedLanguageUtil.getTopLevelEditor(getEditor()));
assert state != null;
state.gotoEnd(false);
checkResultByFile(getBasePath() + name + "_after" + getExtension());