From c7c8c096f782274526ef66a6e12e353a852e2edb Mon Sep 17 00:00:00 2001 From: Jack Zhou Date: Wed, 1 May 2013 17:28:06 -0400 Subject: [PATCH] Create from usage: Removed quickfix for NO_CLASS_OBJECT. --- .../jetbrains/jet/plugin/JetBundle.properties | 1 - .../CreateClassObjectFromUsageFix.java | 84 ------------------- .../jet/plugin/quickfix/QuickFixes.java | 1 - .../classObject/afterCreateClassObject1.kt | 10 --- .../classObject/afterCreateClassObject2.kt | 10 --- .../classObject/beforeCreateClassObject1.kt | 8 -- .../classObject/beforeCreateClassObject2.kt | 6 -- .../quickfix/QuickFixTestGenerated.java | 21 +---- 8 files changed, 1 insertion(+), 140 deletions(-) delete mode 100644 idea/src/org/jetbrains/jet/plugin/quickfix/CreateClassObjectFromUsageFix.java delete mode 100644 idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject1.kt delete mode 100644 idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject2.kt delete mode 100644 idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject1.kt delete mode 100644 idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject2.kt diff --git a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties index 84a70b3cbed..22535d9d944 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetBundle.properties +++ b/idea/src/org/jetbrains/jet/plugin/JetBundle.properties @@ -145,7 +145,6 @@ map.platform.class.to.kotlin.advertisement=Choose an appropriate Kotlin class map.platform.class.to.kotlin.family=Change to Kotlin class create.from.usage.family=Create from usage create.method.from.usage=Create method ''{0}'' from usage -create.class.object.from.usage=Create class object from usage choose.target.class.or.trait.title=Choose target class or trait surround.with=Surround with surround.with.string.template="${expr}" diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateClassObjectFromUsageFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateClassObjectFromUsageFix.java deleted file mode 100644 index 0a52a91ae91..00000000000 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateClassObjectFromUsageFix.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010-2013 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.jet.plugin.quickfix; - -import com.intellij.codeInsight.intention.IntentionAction; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.fileEditor.FileEditorManager; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiReference; -import com.intellij.util.IncorrectOperationException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.diagnostics.Diagnostic; -import org.jetbrains.jet.lang.psi.*; -import org.jetbrains.jet.plugin.JetBundle; - -public class CreateClassObjectFromUsageFix extends CreateFromUsageFixBase { - private final JetClass klass; - - public CreateClassObjectFromUsageFix(@NotNull PsiElement element, @NotNull JetClass klass) { - super(element); - this.klass = klass; - } - - @NotNull - @Override - public String getText() { - return JetBundle.message("create.class.object.from.usage"); - } - - @Override - public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - PsiFile containingFile = klass.getContainingFile(); - VirtualFile virtualFile = containingFile.getVirtualFile(); - assert virtualFile != null; - FileEditorManager fileEditorManager = FileEditorManager.getInstance(project); - fileEditorManager.openFile(virtualFile, true); - - JetClassBody classBody = klass.getBody(); - if (classBody == null) { - classBody = (JetClassBody) klass.add(JetPsiFactory.createEmptyClassBody(project)); - klass.addBefore(JetPsiFactory.createWhiteSpace(project), classBody); - } - PsiElement lBrace = classBody.getLBrace(); - JetClassObject classObject = (JetClassObject) classBody.addAfter(JetPsiFactory.createEmptyClassObject(project), lBrace); - classBody.addBefore(JetPsiFactory.createNewLine(project), classObject); - } - - @NotNull - public static JetIntentionActionFactory createCreateClassObjectFromUsageFactory() { - return new JetIntentionActionFactory() { - @Nullable - @Override - public IntentionAction createAction(Diagnostic diagnostic) { - JetReferenceExpression refExpr = QuickFixUtil.getParentElementOfType(diagnostic, JetReferenceExpression.class); - if (refExpr == null) return null; - PsiReference reference = refExpr.getReference(); - if (reference == null) return null; - PsiElement resolvedReference = reference.resolve(); - if (resolvedReference == null || !(resolvedReference instanceof JetClass)) return null; - JetClass klass = (JetClass) resolvedReference; - if (!klass.isWritable()) return null; - return new CreateClassObjectFromUsageFix(refExpr, (JetClass) resolvedReference); - } - }; - } -} diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index 5aa2fd81821..eeb9d63bde6 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -250,6 +250,5 @@ public class QuickFixes { factories.put(NEXT_NONE_APPLICABLE, createNextFromUsageFactory); factories.put(ITERATOR_MISSING, CreateMethodFromUsageFix.createCreateIteratorMethodFromUsageFactory()); factories.put(COMPONENT_FUNCTION_MISSING, CreateMethodFromUsageFix.createCreateComponentMethodFromUsageFactory()); - factories.put(NO_CLASS_OBJECT, CreateClassObjectFromUsageFix.createCreateClassObjectFromUsageFactory()); } } diff --git a/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject1.kt b/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject1.kt deleted file mode 100644 index 046b2ea50ef..00000000000 --- a/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject1.kt +++ /dev/null @@ -1,10 +0,0 @@ -// "Create class object from usage" "true" -// ERROR: Expression 'T' of type '' cannot be invoked as a function -trait T { - class object { - } - -} -fun foo() { - val x = T() -} diff --git a/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject2.kt b/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject2.kt deleted file mode 100644 index e43a2d55083..00000000000 --- a/idea/testData/quickfix/createFromUsage/classObject/afterCreateClassObject2.kt +++ /dev/null @@ -1,10 +0,0 @@ -// "Create class object from usage" "true" -// ERROR: Expression 'T' of type '' cannot be invoked as a function -trait T -{ - class object { - } -} -fun foo() { - val x = T() -} diff --git a/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject1.kt b/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject1.kt deleted file mode 100644 index 146b39ce721..00000000000 --- a/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject1.kt +++ /dev/null @@ -1,8 +0,0 @@ -// "Create class object from usage" "true" -// ERROR: Expression 'T' of type '' cannot be invoked as a function -trait T { - -} -fun foo() { - val x = T() -} diff --git a/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject2.kt b/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject2.kt deleted file mode 100644 index 48024776e0e..00000000000 --- a/idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject2.kt +++ /dev/null @@ -1,6 +0,0 @@ -// "Create class object from usage" "true" -// ERROR: Expression 'T' of type '' cannot be invoked as a function -trait T -fun foo() { - val x = T() -} diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java index 02da71be244..bf4b20b7aeb 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/QuickFixTestGenerated.java @@ -430,30 +430,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { } @TestMetadata("idea/testData/quickfix/createFromUsage") - @InnerTestClasses({CreateFromUsage.ClassObject.class, CreateFromUsage.Component.class, CreateFromUsage.Get.class, CreateFromUsage.HasNext.class, CreateFromUsage.Iterator.class, CreateFromUsage.Next.class, CreateFromUsage.Set.class}) + @InnerTestClasses({CreateFromUsage.Component.class, CreateFromUsage.Get.class, CreateFromUsage.HasNext.class, CreateFromUsage.Iterator.class, CreateFromUsage.Next.class, CreateFromUsage.Set.class}) public static class CreateFromUsage extends AbstractQuickFixTest { public void testAllFilesPresentInCreateFromUsage() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/quickfix/createFromUsage"), Pattern.compile("^before(\\w+)\\.kt$"), true); } - @TestMetadata("idea/testData/quickfix/createFromUsage/classObject") - public static class ClassObject extends AbstractQuickFixTest { - public void testAllFilesPresentInClassObject() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/quickfix/createFromUsage/classObject"), Pattern.compile("^before(\\w+)\\.kt$"), true); - } - - @TestMetadata("beforeCreateClassObject1.kt") - public void testCreateClassObject1() throws Exception { - doTest("idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject1.kt"); - } - - @TestMetadata("beforeCreateClassObject2.kt") - public void testCreateClassObject2() throws Exception { - doTest("idea/testData/quickfix/createFromUsage/classObject/beforeCreateClassObject2.kt"); - } - - } - @TestMetadata("idea/testData/quickfix/createFromUsage/component") public static class Component extends AbstractQuickFixTest { public void testAllFilesPresentInComponent() throws Exception { @@ -620,7 +602,6 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { public static Test innerSuite() { TestSuite suite = new TestSuite("CreateFromUsage"); suite.addTestSuite(CreateFromUsage.class); - suite.addTestSuite(ClassObject.class); suite.addTestSuite(Component.class); suite.addTestSuite(Get.class); suite.addTestSuite(HasNext.class);