mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-82299 Groovy: Introduce Closure Parameter: selecting 'def' type for parameter of Closure type doesn't take effect
This commit is contained in:
+2
-1
@@ -274,7 +274,8 @@ public class ExtractClosureFromMethodProcessor extends ExtractClosureProcessorBa
|
||||
@NotNull
|
||||
@Override
|
||||
public PsiType getForcedType() {
|
||||
return myHelper.getSelectedType();
|
||||
PsiType type = myHelper.getSelectedType();
|
||||
return type != null ? type : PsiType.getJavaLangObject(PsiManager.getInstance(myProject), GlobalSearchScope.allScope(myProject));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+5
-1
@@ -44,6 +44,7 @@ public class ExtractClosureHelperImpl extends ExtractInfoHelperBase implements G
|
||||
private final boolean myForceReturn;
|
||||
|
||||
private PsiType myType = null;
|
||||
private boolean myForceDef;
|
||||
|
||||
public ExtractClosureHelperImpl(IntroduceParameterInfo info,
|
||||
String name,
|
||||
@@ -51,9 +52,10 @@ public class ExtractClosureHelperImpl extends ExtractInfoHelperBase implements G
|
||||
TIntArrayList toRemove,
|
||||
boolean generateDelegate,
|
||||
int replaceFieldsWithGetters,
|
||||
boolean forceReturn) {
|
||||
boolean forceReturn, boolean forceDef) {
|
||||
super(info);
|
||||
myForceReturn = forceReturn;
|
||||
myForceDef = forceDef;
|
||||
myOwner = info.getToReplaceIn();
|
||||
myToSearchFor = info.getToSearchFor();
|
||||
myName = name;
|
||||
@@ -102,6 +104,8 @@ public class ExtractClosureHelperImpl extends ExtractInfoHelperBase implements G
|
||||
|
||||
@Override
|
||||
public PsiType getSelectedType() {
|
||||
if (myForceDef) return null;
|
||||
|
||||
if (myType == null) {
|
||||
final GrClosableBlock closure = ExtractClosureProcessorBase.generateClosure(this);
|
||||
PsiType type = closure.getType();
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ public class GrIntroduceExpressionSettingsImpl extends ExtractClosureHelperImpl
|
||||
GrVariable var,
|
||||
PsiType selectedType,
|
||||
boolean forceReturn) {
|
||||
super(info, name, declareFinal, toRemove, generateDelegate, replaceFieldsWithGetters, forceReturn);
|
||||
super(info, name, declareFinal, toRemove, generateDelegate, replaceFieldsWithGetters, forceReturn, false);
|
||||
myExpr = expr;
|
||||
myVar = var;
|
||||
mySelectedType = selectedType;
|
||||
|
||||
+3
-2
@@ -325,7 +325,7 @@ public class GrIntroduceParameterDialog extends DialogWrapper implements GrIntro
|
||||
@Nullable
|
||||
private PsiType inferClosureReturnType() {
|
||||
final ExtractClosureHelperImpl mockHelper =
|
||||
new ExtractClosureHelperImpl(myInfo, "__test___n_", false, new TIntArrayList(), false, 0, false);
|
||||
new ExtractClosureHelperImpl(myInfo, "__test___n_", false, new TIntArrayList(), false, 0, false, false);
|
||||
final PsiType returnType;
|
||||
final AccessToken token = WriteAction.start();
|
||||
try {
|
||||
@@ -469,7 +469,8 @@ public class GrIntroduceParameterDialog extends DialogWrapper implements GrIntro
|
||||
getParametersToRemove(),
|
||||
myDelegateViaOverloadingMethodCheckBox.isSelected(),
|
||||
getReplaceFieldsWithGetter(),
|
||||
myForceReturnCheckBox.isSelected());
|
||||
myForceReturnCheckBox.isSelected(),
|
||||
myTypeComboBox.getSelectedType() == null);
|
||||
if (toReplaceIn instanceof GrMethod) {
|
||||
invokeRefactoring(new ExtractClosureFromMethodProcessor(settings));
|
||||
}
|
||||
|
||||
+2
-1
@@ -46,7 +46,8 @@ public abstract class ExtractClosureTest extends LightGroovyTestCase {
|
||||
|
||||
GrIntroduceParameterSettings helper = new ExtractClosureHelperImpl(info, "closure", false,
|
||||
new TIntArrayList(toRemove as int[]), false,
|
||||
IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_NONE, forceReturn)
|
||||
IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_NONE,
|
||||
forceReturn, false)
|
||||
for (p in notToUseAsParams) {
|
||||
helper.parameterInfos[p].passAsParameter = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user