From 9b3cbc6f25df888818ea45a2ebe1c3fe14be6b60 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Wed, 8 Jul 2015 22:34:41 +0300 Subject: [PATCH] Fixed completion for safe call --- .../jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt | 5 +++-- .../basic/common/extensions/SyntheticExtensionsSafeCall.kt | 7 +++++++ .../completion/test/JSBasicCompletionTestGenerated.java | 6 ++++++ .../completion/test/JvmBasicCompletionTestGenerated.java | 6 ++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt index 0c976a5bfb9..40689ed3d92 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/synthetic/SyntheticExtensionsScope.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.types.JetType +import org.jetbrains.kotlin.types.typeUtil.makeNotNullable import org.jetbrains.kotlin.utils.addIfNotNull import java.util.* @@ -76,7 +77,7 @@ class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by Jet override fun getSyntheticExtensionProperties(receiverType: JetType, name: Name): Collection { if (name.isSpecial()) return emptyList() if (name.getIdentifier()[0].isUpperCase()) return emptyList() - return collectSyntheticPropertiesByName(null, receiverType, name) ?: emptyList() + return collectSyntheticPropertiesByName(null, receiverType.makeNotNullable(), name) ?: emptyList() } private fun collectSyntheticPropertiesByName(result: SmartList?, type: JetType, name: Name): SmartList? { @@ -96,7 +97,7 @@ class SyntheticExtensionsScope(storageManager: StorageManager) : JetScope by Jet override fun getSyntheticExtensionProperties(receiverType: JetType): Collection { val result = ArrayList() - result.collectSyntheticProperties(receiverType) + result.collectSyntheticProperties(receiverType.makeNotNullable()) return result } diff --git a/idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt b/idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt new file mode 100644 index 00000000000..8865bcb0403 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt @@ -0,0 +1,7 @@ +import java.io.File + +fun foo(file: File?) { + file?. +} + +// EXIST_JAVA_ONLY: { lookupString: "absolutePath", itemText: "absolutePath", tailText: " for File", typeText: "String!" } diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 0b5a1a64a44..96778ee88b5 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -1221,6 +1221,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("SyntheticExtensionsSafeCall.kt") + public void testSyntheticExtensionsSafeCall() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt"); + doTest(fileName); + } + @TestMetadata("WrongExplicitReceiver.kt") public void testWrongExplicitReceiver() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/extensions/WrongExplicitReceiver.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index c0771c4c166..ae651dd71f6 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -1221,6 +1221,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("SyntheticExtensionsSafeCall.kt") + public void testSyntheticExtensionsSafeCall() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/extensions/SyntheticExtensionsSafeCall.kt"); + doTest(fileName); + } + @TestMetadata("WrongExplicitReceiver.kt") public void testWrongExplicitReceiver() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/extensions/WrongExplicitReceiver.kt");