Use more correct check for the constructor symbol

- add test for extension function receiver
This commit is contained in:
Roman Golyshev
2020-06-25 15:01:04 +03:00
committed by Ilya Kirillov
parent a3da1ea1a0
commit e7f5594ffe
4 changed files with 27 additions and 3 deletions
@@ -0,0 +1,14 @@
class A {
fun aaa() {}
val aa = 10
}
fun A.aaaExt() {}
fun A.test() {
<caret>
}
// EXIST: aaa
// EXIST: aa
// EXIST: aaaExt
@@ -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");
@@ -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");
@@ -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<CompletionParame
}
for (symbol in symbols) {
if (symbol is FirConstructorSymbol) continue
val symbolName = symbol.callableId.callableName
if (symbolName.isConstructor) continue
result.addElement(LookupElementBuilder.create(symbolName.toString()))
}
@@ -98,8 +100,6 @@ private object KotlinFirCompletionProvider : CompletionProvider<CompletionParame
private val FirCallableSymbol<*>.isExtension get() = fir.receiverTypeRef != null
private val Name.isConstructor get() = this == Name.special("<init>")
private fun FirScope.collectCallableSymbols(): MutableList<FirCallableSymbol<*>> {
val allCallableSymbols = mutableListOf<FirCallableSymbol<*>>()
fun symbolsCollector(symbol: FirCallableSymbol<*>) {