diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateFunctionOrPropertyFromCallActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateFunctionOrPropertyFromCallActionFactory.kt index 1c384c5d0a7..218778239aa 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateFunctionOrPropertyFromCallActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateFunctionOrPropertyFromCallActionFactory.kt @@ -18,27 +18,19 @@ package org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable import org.jetbrains.kotlin.diagnostics.Diagnostic import com.intellij.codeInsight.intention.IntentionAction -import org.jetbrains.kotlin.psi.JetCallExpression import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.psi.JetSimpleNameExpression import org.jetbrains.kotlin.lexer.JetTokens -import org.jetbrains.kotlin.psi.JetQualifiedExpression import org.jetbrains.kotlin.resolve.calls.callUtil.getCall import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue import org.jetbrains.kotlin.resolve.scopes.receivers.Qualifier import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -import org.jetbrains.kotlin.psi.JetExpression import java.util.Collections -import org.jetbrains.kotlin.psi.JetClassBody -import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.psi.JetTypeReference import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.psi.JetAnnotationEntry import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.quickfix.JetIntentionActionsFactory import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor @@ -46,11 +38,15 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToDeclarationUtil import com.intellij.psi.PsiClass import com.intellij.openapi.project.Project import org.jetbrains.kotlin.idea.refactoring.* +import org.jetbrains.kotlin.psi.* object CreateFunctionOrPropertyFromCallActionFactory : JetIntentionActionsFactory() { override fun doCreateActions(diagnostic: Diagnostic): List? { val diagElement = diagnostic.getPsiElement() - if (PsiTreeUtil.getParentOfType(diagElement, javaClass(), javaClass()) != null) return null + if (PsiTreeUtil.getParentOfType( + diagElement, + javaClass(), javaClass(), javaClass() + ) != null) return null val callExpr = when (diagnostic.getFactory()) { in Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS, Errors.EXPRESSION_EXPECTED_PACKAGE_FOUND -> { diff --git a/idea/testData/quickfix/autoImports/noImportInImports.before.Main.kt b/idea/testData/quickfix/autoImports/noImportInImports.before.Main.kt index 0b5a0466b26..de5cb10351f 100644 --- a/idea/testData/quickfix/autoImports/noImportInImports.before.Main.kt +++ b/idea/testData/quickfix/autoImports/noImportInImports.before.Main.kt @@ -3,7 +3,6 @@ // ACTION: Create class 'SomeTest' // ACTION: Create enum 'SomeTest' // ACTION: Create object 'SomeTest' -// ACTION: Create property 'SomeTest' // ACTION: Create trait 'SomeTest' // ERROR: Unresolved reference: SomeTest diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInPackage.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInPackage.kt index 482d34e8a21..76bf8af903f 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInPackage.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInPackage.kt @@ -2,7 +2,6 @@ // ACTION: Create class 'A' // ACTION: Create trait 'A' // ACTION: Create object 'A' -// ACTION: Create property 'A' // ACTION: Create enum 'A' // ACTION: Create annotation 'A' // ERROR: Unresolved reference: A diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryWithQualifier.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryWithQualifier.kt index 3c30517128b..82f94fde623 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryWithQualifier.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryWithQualifier.kt @@ -2,7 +2,6 @@ // ACTION: Create class 'A' // ACTION: Create trait 'A' // ACTION: Create object 'A' -// ACTION: Create property 'A' // ACTION: Create enum 'A' // ACTION: Create annotation 'A' // ERROR: Unresolved reference: A diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithGroovyQualifier.before.Main.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithGroovyQualifier.before.Main.kt index 3978a538b60..f85893ddffe 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithGroovyQualifier.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithGroovyQualifier.before.Main.kt @@ -1,6 +1,5 @@ // "Create class 'A'" "false" // ERROR: Unresolved reference: A -// ACTION: Create property 'A' import J.A class X { diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumEntryInJavaEnum.before.Main.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumEntryInJavaEnum.before.Main.kt index ed8103e774b..a601f889899 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumEntryInJavaEnum.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumEntryInJavaEnum.before.Main.kt @@ -2,7 +2,6 @@ // ACTION: Create annotation 'A' // ACTION: Create class 'A' // ACTION: Create enum 'A' -// ACTION: Create property 'A' // ACTION: Create trait 'A' // ERROR: Unresolved reference: A import E.A diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/objectWithJavaQualifier.before.Main.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/objectWithJavaQualifier.before.Main.kt index a46fc936cbc..f32eececa48 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/objectWithJavaQualifier.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/objectWithJavaQualifier.before.Main.kt @@ -3,7 +3,6 @@ // ACTION: Create annotation 'A' // ACTION: Create class 'A' // ACTION: Create enum 'A' -// ACTION: Create property 'A' // ACTION: Create trait 'A' import J.A diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionRefInImport.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionRefInImport.kt new file mode 100644 index 00000000000..495deb3f7ea --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionRefInImport.kt @@ -0,0 +1,10 @@ +// "Create extension function 'foo'" "false" +// ERROR: Unresolved reference: foo + +package p + +import p.foo + +fun test() { + +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/beforeRefInImport.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/beforeRefInImport.kt new file mode 100644 index 00000000000..179a08e4876 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/beforeRefInImport.kt @@ -0,0 +1,10 @@ +// "Create function 'foo'" "false" +// ERROR: Unresolved reference: foo + +package p + +import p.foo + +fun test() { + +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/beforeExtensionRefInImport.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/beforeExtensionRefInImport.kt new file mode 100644 index 00000000000..5fa19de30a5 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/beforeExtensionRefInImport.kt @@ -0,0 +1,10 @@ +// "Create extension property 'foo'" "false" +// ERROR: Unresolved reference: foo + +package p + +import p.foo + +fun test() { + +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/beforeRefInImport.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/beforeRefInImport.kt new file mode 100644 index 00000000000..41db718d3df --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/beforeRefInImport.kt @@ -0,0 +1,10 @@ +// "Create property 'foo'" "false" +// ERROR: Unresolved reference: foo + +package p + +import p.foo + +fun test() { + +} \ 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 05e35d8ef71..5022b648437 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -1546,6 +1546,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("beforeExtensionRefInImport.kt") + public void testExtensionRefInImport() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeExtensionRefInImport.kt"); + doTest(fileName); + } + @TestMetadata("beforeFunExtraArgs.kt") public void testFunExtraArgs() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeFunExtraArgs.kt"); @@ -1702,6 +1708,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("beforeRefInImport.kt") + public void testRefInImport() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeRefInImport.kt"); + doTest(fileName); + } + @TestMetadata("beforeThisInClass.kt") public void testThisInClass() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createFunction/call/beforeThisInClass.kt"); @@ -2519,6 +2531,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("beforeExtensionRefInImport.kt") + public void testExtensionRefInImport() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createVariable/property/beforeExtensionRefInImport.kt"); + doTest(fileName); + } + @TestMetadata("beforeInconsistentTypes.kt") public void testInconsistentTypes() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createVariable/property/beforeInconsistentTypes.kt"); @@ -2567,6 +2585,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("beforeRefInImport.kt") + public void testRefInImport() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createVariable/property/beforeRefInImport.kt"); + doTest(fileName); + } + @TestMetadata("beforeRefInStringTemplateRuntime.kt") public void testRefInStringTemplateRuntime() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createVariable/property/beforeRefInStringTemplateRuntime.kt");