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");