mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix java inplace introduce inside injections
This commit is contained in:
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
class C {
|
||||
{
|
||||
String java = "class ABC { {new <caret>ABC();}}";
|
||||
}
|
||||
}
|
||||
+5
@@ -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
|
||||
|
||||
+2
-1
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user