diff --git a/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.1.kt b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.1.kt new file mode 100644 index 00000000000..be9955b1b7c --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.1.kt @@ -0,0 +1,9 @@ +class K: J { + constructor(a: Int): super(a, "foo") { + + } +} + +fun test() { + J(1, "foo") +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.java b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.java new file mode 100644 index 00000000000..a072e761da8 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallAfter.java @@ -0,0 +1,5 @@ +class J { + public J(int n, String s) { + + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.1.kt b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.1.kt new file mode 100644 index 00000000000..97701219528 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.1.kt @@ -0,0 +1,9 @@ +class K: J { + constructor(a: Int): super(a) { + + } +} + +fun test() { + J(1) +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.java b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.java new file mode 100644 index 00000000000..3e9226b0cd0 --- /dev/null +++ b/idea/testData/refactoring/changeSignature/JavaConstructorInDelegationCallBefore.java @@ -0,0 +1,5 @@ +class J { + public J(int n) { + + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.1.java b/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.1.java new file mode 100644 index 00000000000..5b4434d4cdf --- /dev/null +++ b/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.1.java @@ -0,0 +1,10 @@ +class J extends A { + public J() { + super("foo"); + } + + public J(int a) { + + super("foo"); + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.kt b/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.kt new file mode 100644 index 00000000000..bef737570de --- /dev/null +++ b/idea/testData/refactoring/changeSignature/SecondaryConstructorAfter.kt @@ -0,0 +1,29 @@ +open class A { + constructor(s: String) { + + } + + constructor(a: Int) : this("foo") { + + } +} + +open class B: A { + constructor() : super("foo") { + + } +} + +open class C: A { + constructor() : super("foo") { + + } +} + +class D: A("foo") { + +} + +fun test() { + A("foo") +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.1.java b/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.1.java new file mode 100644 index 00000000000..384c6394e1f --- /dev/null +++ b/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.1.java @@ -0,0 +1,9 @@ +class J extends A { + public J() { + super(); + } + + public J(int a) { + + } +} \ No newline at end of file diff --git a/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.kt b/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.kt new file mode 100644 index 00000000000..759558ca6ae --- /dev/null +++ b/idea/testData/refactoring/changeSignature/SecondaryConstructorBefore.kt @@ -0,0 +1,29 @@ +open class A { + constructor() { + + } + + constructor(a: Int) : this() { + + } +} + +open class B: A { + constructor() : super() { + + } +} + +open class C: A { + constructor() { + + } +} + +class D: A() { + +} + +fun test() { + A() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java index ec3901cc0d9..bbf60f72405 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureTest.java @@ -728,6 +728,30 @@ public class JetChangeSignatureTest extends KotlinCodeInsightTestCase { doTest(changeInfo); } + public void testSecondaryConstructor() throws Exception { + JetChangeInfo changeInfo = getChangeInfo(); + changeInfo.addParameter(new JetParameterInfo(-1, "s", KotlinBuiltIns.getInstance().getStringType(), null, "\"foo\"", null, null)); + doTest(changeInfo); + } + + public void testJavaConstructorInDelegationCall() throws Exception { + doJavaTest( + new JavaRefactoringProvider() { + @NotNull + @Override + ParameterInfoImpl[] getNewParameters(@NotNull PsiMethod method) { + ParameterInfoImpl[] newParameters = super.getNewParameters(method); + newParameters = Arrays.copyOf(newParameters, newParameters.length + 1); + + PsiType paramType = PsiType.getJavaLangString(getPsiManager(), GlobalSearchScope.allScope(getProject())); + newParameters[newParameters.length - 1] = new ParameterInfoImpl(-1, "s", paramType, "\"foo\""); + + return newParameters; + } + } + ); + } + @NotNull @Override protected String getTestDataPath() {