mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[groovy] allow to select 'this' reference for 'introduce X' refactoring
This commit is contained in:
+4
-5
@@ -210,9 +210,6 @@ public abstract class GrIntroduceHandlerBase<Settings extends GrIntroduceSetting
|
||||
if (expression instanceof GrParenthesizedExpression && !expressions.contains(((GrParenthesizedExpression)expression).getOperand())) {
|
||||
expressions.add(((GrParenthesizedExpression)expression).getOperand());
|
||||
}
|
||||
if (expression.getParent() instanceof GrReferenceExpression
|
||||
&& expression instanceof GrReferenceExpression
|
||||
&& ((GrReferenceExpression)expression).resolve() instanceof PsiClass) continue;
|
||||
if (expressionIsIncorrect(expression, acceptVoidCalls)) continue;
|
||||
|
||||
expressions.add(expression);
|
||||
@@ -229,7 +226,9 @@ public abstract class GrIntroduceHandlerBase<Settings extends GrIntroduceSetting
|
||||
final PsiElement resolved = resolveResult.getElement();
|
||||
return resolved instanceof PsiMethod && !resolveResult.isInvokedOnProperty() || resolved instanceof PsiClass;
|
||||
}
|
||||
|
||||
if (expression instanceof GrReferenceExpression && expression.getParent() instanceof GrReferenceExpression) {
|
||||
return !PsiUtil.isThisReference(expression) && ((GrReferenceExpression)expression).resolve() instanceof PsiClass;
|
||||
}
|
||||
if (expression instanceof GrClosableBlock && expression.getParent() instanceof GrStringInjection) return true;
|
||||
if (!acceptVoidCalls && expression instanceof GrMethodCall && PsiType.VOID.equals(expression.getType())) return true;
|
||||
|
||||
@@ -282,7 +281,7 @@ public abstract class GrIntroduceHandlerBase<Settings extends GrIntroduceSetting
|
||||
if (expressions.isEmpty()) {
|
||||
updateSelectionForVariable(editor, file, selectionModel, offset);
|
||||
}
|
||||
else if (expressions.size() == 1) {
|
||||
else if (expressions.size() == 1 || ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
final TextRange textRange = expressions.get(0).getTextRange();
|
||||
selectionModel.setSelection(textRange.getStartOffset(), textRange.getEndOffset());
|
||||
}
|
||||
|
||||
+20
@@ -642,6 +642,26 @@ println(<selection>a + b</selection>)
|
||||
''', EnumSet.of(CUR_METHOD), ReplaceChoice.NO
|
||||
}
|
||||
|
||||
void 'test introduce field from this'() {
|
||||
doTest '''\
|
||||
class A {
|
||||
def bar
|
||||
def foo() {
|
||||
th<caret>is.bar
|
||||
}
|
||||
}
|
||||
''', '''\
|
||||
class A {
|
||||
def bar
|
||||
def f = this
|
||||
|
||||
def foo() {
|
||||
f.bar
|
||||
}
|
||||
}
|
||||
''', false, false, false, FIELD_DECLARATION
|
||||
}
|
||||
|
||||
private void doTest(final boolean isStatic,
|
||||
final boolean removeLocal,
|
||||
final boolean declareFinal,
|
||||
|
||||
Reference in New Issue
Block a user