diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureUsageProcessor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureUsageProcessor.java index 6eaa7ce391f0..63cca952f172 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureUsageProcessor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrChangeSignatureUsageProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -148,7 +148,7 @@ public class GrChangeSignatureUsageProcessor implements ChangeSignatureUsageProc final GrCodeBlock codeBlock = GroovyPsiElementFactory.getInstance(method.getProject()).createMethodBodyFromText(buffer.toString()); newMethod.setBlock(codeBlock); - newMethod.getModifierList().setModifierProperty(GrModifier.ABSTRACT, false); + newMethod.getModifierList().setModifierProperty(PsiModifier.ABSTRACT, false); CodeStyleManager.getInstance(method.getProject()).reformat(newMethod); return processPrimaryMethodInner(grInfo, method, null); @@ -175,7 +175,7 @@ public class GrChangeSignatureUsageProcessor implements ChangeSignatureUsageProc buffer.append(");"); } - private static boolean processPrimaryMethodInner(JavaChangeInfo changeInfo, GrMethod method, PsiMethod baseMethod) { + private static boolean processPrimaryMethodInner(JavaChangeInfo changeInfo, GrMethod method, @Nullable PsiMethod baseMethod) { if (changeInfo.isNameChanged()) { String newName = baseMethod == null ? changeInfo.getNewName() : RefactoringUtil.suggestNewOverriderName(method.getName(), baseMethod.getName(), changeInfo.getNewName()); @@ -205,13 +205,9 @@ public class GrChangeSignatureUsageProcessor implements ChangeSignatureUsageProc } else { PsiType type = newReturnType.getType(context, method.getManager()); - final PsiType oldReturnType = method.getReturnType(); - if (!TypesUtil - .isAssignableByMethodCallConversion(type, oldReturnType, context.getManager(), context.getResolveScope())) { //todo ask for replace covariant type - method.setReturnType(substitutor.substitute(type)); - if (oldReturnTypeElement==null) { - modifierList.setModifierProperty(GrModifier.DEF, false);; - } + method.setReturnType(substitutor.substitute(type)); + if (oldReturnTypeElement == null) { + modifierList.setModifierProperty(GrModifier.DEF, false); } } } @@ -371,8 +367,8 @@ public class GrChangeSignatureUsageProcessor implements ChangeSignatureUsageProc .createConstructorFromText(name, ArrayUtil.EMPTY_STRING_ARRAY, ArrayUtil.EMPTY_STRING_ARRAY, "{}", null); GrModifierList list = constructor.getModifierList(); - if (psiClass.hasModifierProperty(GrModifier.PRIVATE)) list.setModifierProperty(GrModifier.PRIVATE, true); - if (psiClass.hasModifierProperty(GrModifier.PROTECTED)) list.setModifierProperty(GrModifier.PROTECTED, true); + if (psiClass.hasModifierProperty(PsiModifier.PRIVATE)) list.setModifierProperty(PsiModifier.PRIVATE, true); + if (psiClass.hasModifierProperty(PsiModifier.PROTECTED)) list.setModifierProperty(PsiModifier.PROTECTED, true); if (!list.hasExplicitVisibilityModifiers()) { list.setModifierProperty(GrModifier.DEF, true); } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java index 316e605459ff..53bc6fc6234d 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,13 +15,11 @@ */ package org.jetbrains.plugins.groovy.refactoring.changeSignature; -import com.intellij.psi.CommonClassNames; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClassType; -import com.intellij.psi.PsiType; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.changeSignature.JavaThrownExceptionInfo; import com.intellij.refactoring.changeSignature.ThrownExceptionInfo; +import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.util.TestUtils; import java.io.File; @@ -37,42 +35,33 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { } public void testOneNewParameter() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo("p", -1, "\"5\"", null, CommonClassNames.JAVA_LANG_STRING)}); + doTest(new SimpleInfo("p", -1, "\"5\"", null, CommonClassNames.JAVA_LANG_STRING)); } public void testRemoveParameter() throws Exception { - doTest(new SimpleInfo[0]); + doTest(); } public void testInsertParameter() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(0), - new SimpleInfo("p", -1, "5", "-3", PsiType.INT), - new SimpleInfo(1) - }); + doTest(new SimpleInfo(0), + new SimpleInfo("p", -1, "5", "-3", PsiType.INT), + new SimpleInfo(1)); } public void testInsertOptionalParameter() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(0), - new SimpleInfo(1), - new SimpleInfo("p", -1, "5", "-3", PsiType.INT) - }); + doTest(new SimpleInfo(0), + new SimpleInfo(1), + new SimpleInfo("p", -1, "5", "-3", PsiType.INT)); } public void testNamedParametersRemove() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(1), - new SimpleInfo(2) - }); + doTest(new SimpleInfo(1), + new SimpleInfo(2)); } public void testNamedParametersOrder1() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(0), - new SimpleInfo(2) - }); + doTest(new SimpleInfo(0), + new SimpleInfo(2)); } /*public void testNamedParametersOrder2() throws Exception { @@ -92,17 +81,13 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { }*/ public void testMoveNamedParameters() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(1), - new SimpleInfo(0) - }); + doTest(new SimpleInfo(1), + new SimpleInfo(0)); } public void testMoveVarArgParameters() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(1), - new SimpleInfo(0) - }); + doTest(new SimpleInfo(1), + new SimpleInfo(0)); } public void testChangeVisibilityAndName() throws Exception { @@ -110,28 +95,20 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { } public void testImplicitConstructorInConstructor() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo("p", -1, "5", null, PsiType.INT) - }); + doTest(new SimpleInfo("p", -1, "5", null, PsiType.INT)); } public void testImplicitConstructorForClass() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo("p", -1, "5", null, PsiType.INT) - }); + doTest(new SimpleInfo("p", -1, "5", null, PsiType.INT)); } public void testAnonymousClassUsage() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo("p", -1, "5", null, PsiType.INT) - }); + doTest(new SimpleInfo("p", -1, "5", null, PsiType.INT)); } public void testGroovyDocReferences() throws Exception { - doTest(new SimpleInfo[]{ - new SimpleInfo(0), - new SimpleInfo(2) - }); + doTest(new SimpleInfo(0), + new SimpleInfo(2)); } public void testOverriders() throws Exception { @@ -139,7 +116,7 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { } public void testParameterRename() throws Exception { - doTest(new SimpleInfo[]{new SimpleInfo("newP", 0)}); + doTest(new SimpleInfo("newP", 0)); } public void testAddReturnType() throws Exception { @@ -197,39 +174,39 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { } public void testTypeParameters() throws Exception { - doTest(new SimpleInfo[]{new SimpleInfo("list", -1, "null", null, "java.util.List"), new SimpleInfo(0)}); + doTest(new SimpleInfo("list", -1, "null", null, "java.util.List"), new SimpleInfo(0)); } public void testEnumConstructor() throws Exception { - doTest(new SimpleInfo[]{new SimpleInfo("a", -1, "2", null, PsiType.INT)}); + doTest(new SimpleInfo("a", -1, "2", null, PsiType.INT)); } public void testMoveArrayToTheEnd() throws Exception { - doTest(new SimpleInfo[] {new SimpleInfo(1), new SimpleInfo(0)}); + doTest(new SimpleInfo(1), new SimpleInfo(0)); } public void testReplaceVarargWithArray() throws Exception { - doTest(new SimpleInfo[]{new SimpleInfo("l", 1, null, null, "List[]"), new SimpleInfo(0)}); + doTest(new SimpleInfo("l", 1, null, null, "List[]"), new SimpleInfo(0)); } public void testReplaceVarargWithArray2() throws Exception { - doTest(new SimpleInfo[]{new SimpleInfo("l", 1, null, null, "Map[]"), new SimpleInfo(0)}); + doTest(new SimpleInfo("l", 1, null, null, "Map[]"), new SimpleInfo(0)); } public void testConstructorCall() { - doTest(new SimpleInfo[]{new SimpleInfo(0), new SimpleInfo("a", -1, "1", null, PsiType.INT)}); + doTest(new SimpleInfo(0), new SimpleInfo("a", -1, "1", null, PsiType.INT)); } public void testNoArgInCommandCall() { - doTest(new SimpleInfo[0]); + doTest(); } public void testClosureArgs() { - doTest(new SimpleInfo[]{new SimpleInfo(0)}); + doTest(new SimpleInfo(0)); } public void testRemoveSingleClosureArgument() { - doTest(new SimpleInfo[0]); + doTest(); } public void testNewExpr() { @@ -243,6 +220,10 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { public void testDefaultInitializerInJava() { doTest(new SimpleInfo("p", -1, "", "1", "")); } + + public void testChangeType() { + doTest(PsiModifier.PUBLIC, "foo", "List", new SimpleInfo[0], new ThrownExceptionInfo[0], false); + } private PsiType createType(String typeText) { return JavaPsiFacade.getElementFactory(getProject()).createTypeByFQClassName(typeText, GlobalSearchScope.allScope(getProject())); @@ -262,8 +243,8 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { } private void doTest(String newVisibility, - String newName, - String newReturnType, + @Nullable String newName, + @Nullable String newReturnType, SimpleInfo[] parameterInfo, ThrownExceptionInfo[] exceptionInfo, final boolean generateDelegate) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTestCase.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTestCase.java index b30f99cd6d00..9958dc36495a 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTestCase.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTestCase.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 JetBrains s.r.o. + * Copyright 2000-2011 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import com.intellij.refactoring.changeSignature.ThrownExceptionInfo; import com.intellij.refactoring.util.CanonicalTypes; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; @@ -152,11 +153,11 @@ public abstract class ChangeSignatureTestCase extends LightCodeInsightFixtureTes this(null, oldIndex); } - SimpleInfo(String newName, int oldIndex) { + SimpleInfo(@Nullable String newName, int oldIndex) { this(newName, oldIndex, "", null, ""); } - SimpleInfo(String newName, int oldIndex, String defaultValue, String defaultInitializer, String type) { + SimpleInfo(String newName, int oldIndex, String defaultValue, @Nullable String defaultInitializer, String type) { myOldIndex = oldIndex; myNewName = newName; myDefaultValue = defaultValue; diff --git a/plugins/groovy/testdata/refactoring/changeSignature/ChangeType.groovy b/plugins/groovy/testdata/refactoring/changeSignature/ChangeType.groovy new file mode 100644 index 000000000000..2cc9eb6345bb --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/ChangeType.groovy @@ -0,0 +1,16 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +List foo(){return []} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/changeSignature/ChangeType_after.groovy b/plugins/groovy/testdata/refactoring/changeSignature/ChangeType_after.groovy new file mode 100644 index 000000000000..a682cd471385 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/ChangeType_after.groovy @@ -0,0 +1,16 @@ +/* + * Copyright 2000-2011 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +List foo(){return []} \ No newline at end of file