From 7cad0052d97f3c5691fbb7feadadb339ee100e14 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Fri, 11 Jan 2019 10:40:29 +0300 Subject: [PATCH] "Add parameter to constructor": fix for enum entry #KT-28995 Fixed #KT-29051 Fixed #KT-29052 Fixed --- .../usages/KotlinFunctionCallUsage.kt | 2 +- .../addEnumConstructorParameter.kt | 6 +++++ .../addEnumConstructorParameter.kt.after | 6 +++++ .../addEnumConstructorParameter2.kt | 6 +++++ .../addEnumConstructorParameter2.kt.after | 6 +++++ .../addEnumConstructorParameter3.kt | 9 +++++++ .../addEnumConstructorParameter3.kt.after | 9 +++++++ .../addEnumConstructorParameter4.kt | 9 +++++++ .../addEnumConstructorParameter4.kt.after | 9 +++++++ .../addEnumConstructorParameter5.kt | 8 ++++++ .../addEnumConstructorParameter5.kt.after | 8 ++++++ .../idea/quickfix/QuickFixTestGenerated.java | 25 +++++++++++++++++++ 12 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt.after create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt.after create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt.after create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt.after create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt create mode 100644 idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt index b463e9bc151..5ddcf528f5c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinFunctionCallUsage.kt @@ -101,7 +101,7 @@ class KotlinFunctionCallUsage( if (resolvedCall == null || resolvedCall.isReallySuccess()) return false // TODO: investigate why arguments are not recorded for enum constructor call - if (element is KtSuperTypeCallEntry && element.parent.parent is KtEnumEntry) return false + if (element is KtSuperTypeCallEntry && element.parent.parent is KtEnumEntry && element.valueArguments.isEmpty()) return false if (skipUnmatchedArgumentsCheck) return false diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt new file mode 100644 index 00000000000..c076b562605 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt @@ -0,0 +1,6 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo { + A("A"), + B("B") +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt.after b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt.after new file mode 100644 index 00000000000..d6343c711b2 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt.after @@ -0,0 +1,6 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(s: String) { + A("A"), + B("B") +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt new file mode 100644 index 00000000000..b774e4448cd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt @@ -0,0 +1,6 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo { + A("A"), + B("B") +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt.after b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt.after new file mode 100644 index 00000000000..d6343c711b2 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt.after @@ -0,0 +1,6 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(s: String) { + A("A"), + B("B") +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt new file mode 100644 index 00000000000..cc4296f65a0 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt @@ -0,0 +1,9 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(n: Int) { + A(1, 2), + B(3), + C(3, 4), + D(), + E +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt.after b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt.after new file mode 100644 index 00000000000..0ca9754a484 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt.after @@ -0,0 +1,9 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(n: Int, i: Int) { + A(1, 2), + B(3, 2), + C(3, 4), + D(, 2), + E +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt new file mode 100644 index 00000000000..01c79ec06f2 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt @@ -0,0 +1,9 @@ +// "Add parameters to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo { + A(1, 2), + B(3), + C(3, 4), + D(), + E +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt.after b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt.after new file mode 100644 index 00000000000..f437d37b981 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt.after @@ -0,0 +1,9 @@ +// "Add parameters to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(i: Int, i1: Int) { + A(1, 2), + B(3), + C(3, 4), + D(1, 2), + E(1, 2) +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt new file mode 100644 index 00000000000..d603b2881c9 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt @@ -0,0 +1,8 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo { + A(1), + B(2), + C(), + D, +} diff --git a/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt.after b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt.after new file mode 100644 index 00000000000..f899aecad39 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt.after @@ -0,0 +1,8 @@ +// "Add parameter to constructor 'Foo'" "true" +// DISABLE-ERRORS +enum class Foo(i: Int) { + A(1), + B(2), + C(1), + D(1), +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 7efb743410a..1f54188ee6d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -1730,6 +1730,31 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/changeSignature/addConstructorParameter.kt"); } + @TestMetadata("addEnumConstructorParameter.kt") + public void testAddEnumConstructorParameter() throws Exception { + runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter.kt"); + } + + @TestMetadata("addEnumConstructorParameter2.kt") + public void testAddEnumConstructorParameter2() throws Exception { + runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter2.kt"); + } + + @TestMetadata("addEnumConstructorParameter3.kt") + public void testAddEnumConstructorParameter3() throws Exception { + runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter3.kt"); + } + + @TestMetadata("addEnumConstructorParameter4.kt") + public void testAddEnumConstructorParameter4() throws Exception { + runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter4.kt"); + } + + @TestMetadata("addEnumConstructorParameter5.kt") + public void testAddEnumConstructorParameter5() throws Exception { + runTest("idea/testData/quickfix/changeSignature/addEnumConstructorParameter5.kt"); + } + @TestMetadata("addFunctionParameter.kt") public void testAddFunctionParameter() throws Exception { runTest("idea/testData/quickfix/changeSignature/addFunctionParameter.kt");