Fix KNPE in KotlinAddImportActionKt.createSingleImportActionForConstructor
#KT-17525 fixed
This commit is contained in:
@@ -49,6 +49,7 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
|||||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||||
import org.jetbrains.kotlin.idea.core.isVisible
|
import org.jetbrains.kotlin.idea.core.isVisible
|
||||||
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
||||||
|
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
|
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
|
||||||
@@ -355,7 +356,12 @@ internal class ImportConstructorReferenceFix(expression: KtSimpleNameExpression)
|
|||||||
|
|
||||||
val filterByCallType = callTypeAndReceiver.toFilter()
|
val filterByCallType = callTypeAndReceiver.toFilter()
|
||||||
// TODO Type-aliases
|
// TODO Type-aliases
|
||||||
return indicesHelper.getClassesByName(expression, name).asSequence().map { it.constructors }.flatten().filter(filterByCallType).toList()
|
return indicesHelper.getClassesByName(expression, name)
|
||||||
|
.asSequence()
|
||||||
|
.map { it.constructors }.flatten()
|
||||||
|
.filter { it.importableFqName != null }
|
||||||
|
.filter(filterByCallType)
|
||||||
|
.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createAction(project: Project, editor: Editor, element: KtExpression): KotlinAddImportAction {
|
override fun createAction(project: Project, editor: Editor, element: KtExpression): KotlinAddImportAction {
|
||||||
|
|||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// "class org.jetbrains.kotlin.idea.quickfix.ImportConstructorReferenceFix" "false"
|
||||||
|
// ERROR: Unresolved reference: ItsInner
|
||||||
|
|
||||||
|
|
||||||
|
class WithInner {
|
||||||
|
inner class ItsInner
|
||||||
|
}
|
||||||
|
|
||||||
|
fun referInner(p: WithInner.ItsInner) {
|
||||||
|
val v = p::ItsInner<caret>()
|
||||||
|
}
|
||||||
@@ -824,6 +824,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt17525.kt")
|
||||||
|
public void testKt17525() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/kt17525.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("libraryPropertyJsRuntime.kt")
|
@TestMetadata("libraryPropertyJsRuntime.kt")
|
||||||
public void testLibraryPropertyJsRuntime() throws Exception {
|
public void testLibraryPropertyJsRuntime() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/libraryPropertyJsRuntime.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/libraryPropertyJsRuntime.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user