From f66af7bdd456877bfe36179da460943209d02a4e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Fri, 23 Oct 2015 20:50:36 +0300 Subject: [PATCH] Quick Fixes: Implement 'Initialize property' quick-fix --- .../InitializePropertyQuickFixFactory.kt | 58 ++++++++++ .../kotlin/idea/quickfix/QuickFixRegistrar.kt | 3 + .../quickfix/addInitializer/localVar.kt | 4 + .../addInitializer/memberExtensionProperty.kt | 9 ++ .../memberExtensionPropertyVarGetterOnly.kt | 9 ++ .../memberExtensionPropertyVarSetterOnly.kt | 9 ++ .../quickfix/addInitializer/memberProperty.kt | 4 + .../addInitializer/memberProperty.kt.after | 4 + .../memberPropertyVarGetterOnly.kt | 5 + .../memberPropertyVarGetterOnly.kt.after | 5 + .../memberPropertyVarSetterOnly.kt | 5 + .../memberPropertyVarSetterOnly.kt.after | 5 + .../memberPropertyWithAccessor.kt | 8 ++ .../memberPropertyWithDelegateRuntime.kt | 7 ++ .../topLevelExtensionProperty.kt | 5 + .../topLevelExtensionPropertySetterOnly.kt | 5 + .../addInitializer/topLevelProperty.kt | 2 + .../addInitializer/topLevelProperty.kt.after | 2 + .../topLevelPropertyVarGetterOnly.kt | 3 + .../topLevelPropertyVarGetterOnly.kt.after | 3 + .../topLevelPropertyVarSetterOnly.kt | 3 + .../topLevelPropertyVarSetterOnly.kt.after | 3 + .../topLevelPropertyWithDelegateRuntime.kt | 5 + .../topLevelPropertyWithGetter.kt | 5 + .../idea/quickfix/QuickFixTestGenerated.java | 105 ++++++++++++++++++ 25 files changed, 276 insertions(+) create mode 100644 idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt create mode 100644 idea/testData/quickfix/addInitializer/localVar.kt create mode 100644 idea/testData/quickfix/addInitializer/memberExtensionProperty.kt create mode 100644 idea/testData/quickfix/addInitializer/memberExtensionPropertyVarGetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/memberExtensionPropertyVarSetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/memberProperty.kt create mode 100644 idea/testData/quickfix/addInitializer/memberProperty.kt.after create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt.after create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt.after create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyWithAccessor.kt create mode 100644 idea/testData/quickfix/addInitializer/memberPropertyWithDelegateRuntime.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelExtensionProperty.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelExtensionPropertySetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelProperty.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelProperty.kt.after create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt.after create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt.after create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyWithDelegateRuntime.kt create mode 100644 idea/testData/quickfix/addInitializer/topLevelPropertyWithGetter.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt new file mode 100644 index 00000000000..fdb36fea3ed --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2010-2015 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. + */ + +package org.jetbrains.kotlin.idea.quickfix + +import com.intellij.codeInsight.intention.IntentionAction +import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiDocumentManager +import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny +import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi.KtProperty +import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.psi.psiUtil.endOffset +import org.jetbrains.kotlin.psi.psiUtil.startOffset + +object InitializePropertyQuickFixFactory : KotlinIntentionActionsFactory() { + class AddInitializerFix(property: KtProperty) : KotlinQuickFixAction(property) { + override fun getText() = "Add initializer" + override fun getFamilyName() = text + + override fun invoke(project: Project, editor: Editor?, file: KtFile) { + val descriptor = element.resolveToDescriptorIfAny() as? PropertyDescriptor ?: return + val initializerText = CodeInsightUtils.defaultInitializer(descriptor.type) ?: "null" + val initializer = element.setInitializer(KtPsiFactory(project).createExpression(initializerText))!! + if (editor != null) { + PsiDocumentManager.getInstance(project).commitDocument(editor.document) + editor.selectionModel.setSelection(initializer.startOffset, initializer.endOffset) + } + } + } + + override fun doCreateActions(diagnostic: Diagnostic): List { + val property = diagnostic.psiElement as? KtProperty ?: return emptyList() + + if (property.receiverTypeReference == null) { + return listOf(AddInitializerFix(property)) + } + + return emptyList() + } +} diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt index c74d8a0ef33..55faffdd9f5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt @@ -67,6 +67,9 @@ public class QuickFixRegistrar : QuickFixContributor { ABSTRACT_MEMBER_NOT_IMPLEMENTED.registerFactory(addAbstractModifierFactory) ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED.registerFactory(addAbstractModifierFactory) + MUST_BE_INITIALIZED_OR_BE_ABSTRACT.registerFactory(InitializePropertyQuickFixFactory) + MUST_BE_INITIALIZED.registerFactory(InitializePropertyQuickFixFactory) + val removeFinalModifierFactory = RemoveModifierFix.createRemoveModifierFromListOwnerFactory(FINAL_KEYWORD) val addAbstractToClassFactory = AddModifierFix.createFactory(ABSTRACT_KEYWORD, javaClass()) ABSTRACT_PROPERTY_IN_NON_ABSTRACT_CLASS.registerFactory(removeAbstractModifierFactory, addAbstractToClassFactory) diff --git a/idea/testData/quickfix/addInitializer/localVar.kt b/idea/testData/quickfix/addInitializer/localVar.kt new file mode 100644 index 00000000000..05402c0adfc --- /dev/null +++ b/idea/testData/quickfix/addInitializer/localVar.kt @@ -0,0 +1,4 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +fun test() { + val n: Int +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberExtensionProperty.kt b/idea/testData/quickfix/addInitializer/memberExtensionProperty.kt new file mode 100644 index 00000000000..d53af91b8ee --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberExtensionProperty.kt @@ -0,0 +1,9 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ACTION: Make protected +// ACTION: Make 'n' abstract +// ERROR: Property must be initialized or be abstract +class A { + val Int.n: Int +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarGetterOnly.kt b/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarGetterOnly.kt new file mode 100644 index 00000000000..ed5212e32de --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarGetterOnly.kt @@ -0,0 +1,9 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ACTION: Make protected +// ERROR: Property must be initialized +class A { + var Int.n: Int + get() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarSetterOnly.kt b/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarSetterOnly.kt new file mode 100644 index 00000000000..8cf25de2c87 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberExtensionPropertyVarSetterOnly.kt @@ -0,0 +1,9 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ACTION: Make protected +// ERROR: Property must be initialized +class A { + var Int.n: Int + set(value: Int) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberProperty.kt b/idea/testData/quickfix/addInitializer/memberProperty.kt new file mode 100644 index 00000000000..f44e5880c67 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberProperty.kt @@ -0,0 +1,4 @@ +// "Add initializer" "true" +class A { + val n: Int +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberProperty.kt.after b/idea/testData/quickfix/addInitializer/memberProperty.kt.after new file mode 100644 index 00000000000..9bd7b2b303e --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberProperty.kt.after @@ -0,0 +1,4 @@ +// "Add initializer" "true" +class A { + val n: Int = 0 +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt b/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt new file mode 100644 index 00000000000..8c8d81eb23d --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt @@ -0,0 +1,5 @@ +// "Add initializer" "true" +class A { + var n: Int + get() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt.after b/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt.after new file mode 100644 index 00000000000..e3164fd5868 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt.after @@ -0,0 +1,5 @@ +// "Add initializer" "true" +class A { + var n: Int = 0 + get() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt b/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt new file mode 100644 index 00000000000..988b1dc0944 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt @@ -0,0 +1,5 @@ +// "Add initializer" "true" +class A { + var n: Int + set(value: Int) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt.after b/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt.after new file mode 100644 index 00000000000..9f20f21eb30 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt.after @@ -0,0 +1,5 @@ +// "Add initializer" "true" +class A { + var n: Int = 0 + set(value: Int) {} +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyWithAccessor.kt b/idea/testData/quickfix/addInitializer/memberPropertyWithAccessor.kt new file mode 100644 index 00000000000..23b3839b6db --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyWithAccessor.kt @@ -0,0 +1,8 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ACTION: Make protected +class A { + val n: Int + get() = 1 +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/memberPropertyWithDelegateRuntime.kt b/idea/testData/quickfix/addInitializer/memberPropertyWithDelegateRuntime.kt new file mode 100644 index 00000000000..9368971fd8b --- /dev/null +++ b/idea/testData/quickfix/addInitializer/memberPropertyWithDelegateRuntime.kt @@ -0,0 +1,7 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ACTION: Make protected +class A { + val n: Int by lazy { 0 } +} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelExtensionProperty.kt b/idea/testData/quickfix/addInitializer/topLevelExtensionProperty.kt new file mode 100644 index 00000000000..0a0a69db6b9 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelExtensionProperty.kt @@ -0,0 +1,5 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ERROR: Property must be initialized +val Int.n: Int \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelExtensionPropertySetterOnly.kt b/idea/testData/quickfix/addInitializer/topLevelExtensionPropertySetterOnly.kt new file mode 100644 index 00000000000..0a0a69db6b9 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelExtensionPropertySetterOnly.kt @@ -0,0 +1,5 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +// ERROR: Property must be initialized +val Int.n: Int \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelProperty.kt b/idea/testData/quickfix/addInitializer/topLevelProperty.kt new file mode 100644 index 00000000000..c4d322060d7 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelProperty.kt @@ -0,0 +1,2 @@ +// "Add initializer" "true" +val n: Int \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelProperty.kt.after b/idea/testData/quickfix/addInitializer/topLevelProperty.kt.after new file mode 100644 index 00000000000..6637686f91f --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelProperty.kt.after @@ -0,0 +1,2 @@ +// "Add initializer" "true" +val n: Int = 0 \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt b/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt new file mode 100644 index 00000000000..8b47850fbbd --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt @@ -0,0 +1,3 @@ +// "Add initializer" "true" +var n: Int + get() = 1 \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt.after b/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt.after new file mode 100644 index 00000000000..b9ff42ac6de --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt.after @@ -0,0 +1,3 @@ +// "Add initializer" "true" +var n: Int = 0 + get() = 1 \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt b/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt new file mode 100644 index 00000000000..edddd4971d7 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt @@ -0,0 +1,3 @@ +// "Add initializer" "true" +var n: Int + set(value: Int) {} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt.after b/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt.after new file mode 100644 index 00000000000..516699b453a --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt.after @@ -0,0 +1,3 @@ +// "Add initializer" "true" +var n: Int = 0 + set(value: Int) {} \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyWithDelegateRuntime.kt b/idea/testData/quickfix/addInitializer/topLevelPropertyWithDelegateRuntime.kt new file mode 100644 index 00000000000..912b0d09b14 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyWithDelegateRuntime.kt @@ -0,0 +1,5 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// WITH_RUNTIME +// ACTION: Make internal +// ACTION: Make private +val n: Int by lazy { 0 } \ No newline at end of file diff --git a/idea/testData/quickfix/addInitializer/topLevelPropertyWithGetter.kt b/idea/testData/quickfix/addInitializer/topLevelPropertyWithGetter.kt new file mode 100644 index 00000000000..aebe0e1c584 --- /dev/null +++ b/idea/testData/quickfix/addInitializer/topLevelPropertyWithGetter.kt @@ -0,0 +1,5 @@ +// "class org.jetbrains.kotlin.idea.quickfix.InitializePropertyQuickFixFactory$AddInitializerFix" "false" +// ACTION: Make internal +// ACTION: Make private +val n: Int + get() = 1 \ 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 ac07e950890..5d5e5549502 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -233,6 +233,111 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { } } + @TestMetadata("idea/testData/quickfix/addInitializer") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class AddInitializer extends AbstractQuickFixTest { + public void testAllFilesPresentInAddInitializer() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/addInitializer"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); + } + + @TestMetadata("localVar.kt") + public void testLocalVar() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/localVar.kt"); + doTest(fileName); + } + + @TestMetadata("memberExtensionProperty.kt") + public void testMemberExtensionProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberExtensionProperty.kt"); + doTest(fileName); + } + + @TestMetadata("memberExtensionPropertyVarGetterOnly.kt") + public void testMemberExtensionPropertyVarGetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberExtensionPropertyVarGetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("memberExtensionPropertyVarSetterOnly.kt") + public void testMemberExtensionPropertyVarSetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberExtensionPropertyVarSetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("memberProperty.kt") + public void testMemberProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberProperty.kt"); + doTest(fileName); + } + + @TestMetadata("memberPropertyVarGetterOnly.kt") + public void testMemberPropertyVarGetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberPropertyVarGetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("memberPropertyVarSetterOnly.kt") + public void testMemberPropertyVarSetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberPropertyVarSetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("memberPropertyWithAccessor.kt") + public void testMemberPropertyWithAccessor() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberPropertyWithAccessor.kt"); + doTest(fileName); + } + + @TestMetadata("memberPropertyWithDelegateRuntime.kt") + public void testMemberPropertyWithDelegateRuntime() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/memberPropertyWithDelegateRuntime.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelExtensionProperty.kt") + public void testTopLevelExtensionProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelExtensionProperty.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelExtensionPropertySetterOnly.kt") + public void testTopLevelExtensionPropertySetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelExtensionPropertySetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelProperty.kt") + public void testTopLevelProperty() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelProperty.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelPropertyVarGetterOnly.kt") + public void testTopLevelPropertyVarGetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelPropertyVarGetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelPropertyVarSetterOnly.kt") + public void testTopLevelPropertyVarSetterOnly() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelPropertyVarSetterOnly.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelPropertyWithDelegateRuntime.kt") + public void testTopLevelPropertyWithDelegateRuntime() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelPropertyWithDelegateRuntime.kt"); + doTest(fileName); + } + + @TestMetadata("topLevelPropertyWithGetter.kt") + public void testTopLevelPropertyWithGetter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addInitializer/topLevelPropertyWithGetter.kt"); + doTest(fileName); + } + } + @TestMetadata("idea/testData/quickfix/addStarProjections") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)