Fix KNPE in KotlinAddImportActionKt.createSingleImportActionForConstructor

#KT-17525 fixed
This commit is contained in:
Simon Ogorodnik
2017-04-21 15:44:57 +03:00
parent 0d7b39eb57
commit 3acebc3001
3 changed files with 24 additions and 1 deletions
@@ -49,6 +49,7 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
import org.jetbrains.kotlin.idea.core.isVisible
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.references.mainReference
import org.jetbrains.kotlin.idea.util.CallTypeAndReceiver
@@ -355,7 +356,12 @@ internal class ImportConstructorReferenceFix(expression: KtSimpleNameExpression)
val filterByCallType = callTypeAndReceiver.toFilter()
// 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 {
+11
View File
@@ -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);
}
@TestMetadata("kt17525.kt")
public void testKt17525() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/kt17525.kt");
doTest(fileName);
}
@TestMetadata("libraryPropertyJsRuntime.kt")
public void testLibraryPropertyJsRuntime() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/libraryPropertyJsRuntime.kt");