From 381049d13ed18d078edfb31e09cb66f7c2b021be Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 8 May 2015 20:31:32 +0300 Subject: [PATCH] Fix for non-accessible constructor case --- .../kotlin/idea/quickfix/SuperClassNotInitialized.kt | 1 + .../supertypeInitialization/noAccessibleConstructors.kt | 5 +++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 3 files changed, 12 insertions(+) create mode 100644 idea/testData/quickfix/supertypeInitialization/noAccessibleConstructors.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/SuperClassNotInitialized.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/SuperClassNotInitialized.kt index 1c671fd5de3..a0ba81ec0ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/SuperClassNotInitialized.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/SuperClassNotInitialized.kt @@ -48,6 +48,7 @@ public object SuperClassNotInitialized : JetIntentionActionsFactory() { val superClass = (type.getConstructor().getDeclarationDescriptor() as? ClassDescriptor) ?: return null val classDescriptor = delegator.getResolutionFacade().resolveToDescriptor(classOrObjectDeclaration) as ClassDescriptor val constructors = superClass.getConstructors().filter { it.isVisible(classDescriptor) } + if (constructors.isEmpty()) return null // no accessible constructor val fixes = ArrayList() diff --git a/idea/testData/quickfix/supertypeInitialization/noAccessibleConstructors.kt b/idea/testData/quickfix/supertypeInitialization/noAccessibleConstructors.kt new file mode 100644 index 00000000000..75820c038fd --- /dev/null +++ b/idea/testData/quickfix/supertypeInitialization/noAccessibleConstructors.kt @@ -0,0 +1,5 @@ +// "class org.jetbrains.kotlin.idea.quickfix.SuperClassNotInitialized$AddParenthesisFix" "false" +// ERROR: This type has a constructor, and thus must be initialized here +open class Base private(p: Int) + +class C : Base diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index 8ec2bea4761..f8866b55bc8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -3987,6 +3987,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("noAccessibleConstructors.kt") + public void testNoAccessibleConstructors() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/supertypeInitialization/noAccessibleConstructors.kt"); + doTest(fileName); + } + @TestMetadata("noParameters.kt") public void testNoParameters() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/supertypeInitialization/noParameters.kt");