diff --git a/idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverFromExtensionMethod.kt b/idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverFromExtensionMethod.kt new file mode 100644 index 00000000000..275b0070733 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverFromExtensionMethod.kt @@ -0,0 +1,14 @@ +class A { + fun aaa() {} + val aa = 10 +} + +fun A.aaaExt() {} + +fun A.test() { + +} + +// EXIST: aaa +// EXIST: aa +// EXIST: aaaExt 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 15361b9902c..66ad5d64dde 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 @@ -2277,6 +2277,11 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverCompletion.kt"); } + @TestMetadata("implicitReceiverFromExtensionMethod.kt") + public void testImplicitReceiverFromExtensionMethod() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverFromExtensionMethod.kt"); + } + @TestMetadata("localVariablesAndFunctions.kt") public void testLocalVariablesAndFunctions() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/localVariablesAndFunctions.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 a5d47118752..6bef398da25 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 @@ -2277,6 +2277,11 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverCompletion.kt"); } + @TestMetadata("implicitReceiverFromExtensionMethod.kt") + public void testImplicitReceiverFromExtensionMethod() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/implicitReceiverFromExtensionMethod.kt"); + } + @TestMetadata("localVariablesAndFunctions.kt") public void testLocalVariablesAndFunctions() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/localVariablesAndFunctions.kt"); diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt index e0c72f55732..e2b7696148f 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt @@ -10,11 +10,13 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder import com.intellij.patterns.PlatformPatterns import com.intellij.util.ProcessingContext import org.jetbrains.kotlin.fir.declarations.FirFile +import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.scope import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.coneTypeUnsafe @@ -87,8 +89,8 @@ private object KotlinFirCompletionProvider : CompletionProvider.isExtension get() = fir.receiverTypeRef != null -private val Name.isConstructor get() = this == Name.special("") - private fun FirScope.collectCallableSymbols(): MutableList> { val allCallableSymbols = mutableListOf>() fun symbolsCollector(symbol: FirCallableSymbol<*>) {