From cc2a65e8740fab7a4424250388246645348767fa Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 5 Feb 2016 16:12:45 +0300 Subject: [PATCH] Create from Usage: Always insert parentheses around secondary constructor parameter list #KT-10912 Fixed --- .../createFromUsage/callableBuilder/CallableBuilder.kt | 4 +++- .../createSecondaryConstructor/noParameters.kt | 4 ++++ .../createSecondaryConstructor/noParameters.kt.after | 9 +++++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt create mode 100644 idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index 8f6f72e5814..986f5b6973e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -436,7 +436,9 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { fun renderParamList(): String { val prefix = if (classKind == ClassKind.ANNOTATION_CLASS) "val " else "" val list = callableInfo.parameterInfos.indices.map { i -> "${prefix}p$i: Any" }.joinToString(", ") - return if (callableInfo.parameterInfos.isNotEmpty() || callableInfo.kind == CallableKind.FUNCTION) "($list)" else list + return if (callableInfo.parameterInfos.isNotEmpty() + || callableInfo.kind == CallableKind.FUNCTION + || callableInfo.kind == CallableKind.SECONDARY_CONSTRUCTOR) "($list)" else list } val paramList = when (callableInfo.kind) { diff --git a/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt new file mode 100644 index 00000000000..e8625b9ecb1 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt @@ -0,0 +1,4 @@ +// "Create secondary constructor" "true" +// ERROR: Primary constructor call expected +class Creation(val f: Int) +val v = Creation() \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt.after b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt.after new file mode 100644 index 00000000000..a4dca9c9f23 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt.after @@ -0,0 +1,9 @@ +// "Create secondary constructor" "true" +// ERROR: Primary constructor call expected +class Creation(val f: Int) { + constructor() { + //To change body of created constructors use File | Settings | File Templates. + } +} + +val v = Creation() \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 4c41ca84760..7187f679db6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -2601,6 +2601,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("noParameters.kt") + public void testNoParameters() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createSecondaryConstructor/noParameters.kt"); + doTest(fileName); + } + @TestMetadata("superCall.kt") public void testSuperCall() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createSecondaryConstructor/superCall.kt");