From 6596dc359b8622774e3e78d85e712ee203c3e62f Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 29 Jun 2020 12:38:53 +0300 Subject: [PATCH] fixup! Completion with FIR (prototype, work-in-progress) --- .../java/enhancement/SignatureEnhancement.kt | 22 ------------------- .../JavaClassMembersEnhancementScope.kt | 8 +++++++ .../scopes/JavaClassStaticEnhancementScope.kt | 8 +++++++ .../scopes/JavaClassStaticUseSiteScope.kt | 14 ++++++++++++ 4 files changed, 30 insertions(+), 22 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt index c46f847f99f..04d5f5beb8b 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/enhancement/SignatureEnhancement.kt @@ -55,28 +55,6 @@ class FirSignatureEnhancement( FirJavaEnhancementContext(session) { null }.copyWithNewDefaultTypeQualifiers(typeQualifierResolver, jsr305State, owner.annotations) private val enhancements = mutableMapOf, FirCallableSymbol<*>>() - private val overriddenFunctions = mutableMapOf, Collection>>() - - override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { - useSiteMemberScope.processPropertiesByName(name) process@{ original -> - - val field = enhancements.getOrPut(original) { enhance(original, name) } - processor(field as FirVariableSymbol<*>) - } - - return super.processPropertiesByName(name, processor) - } - - override fun getCallableNames(): Set { - return useSiteMemberScope.getCallableNames() + super.getCallableNames() - } - - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> Unit) { - useSiteMemberScope.processFunctionsByName(name) process@{ original -> - - val function = enhancements.getOrPut(original) { enhance(original, name) } - processor(function as FirFunctionSymbol<*>) - } fun enhancedFunction( function: FirFunctionSymbol<*>, diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt index 46a21de6c49..35f6a287e8d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassMembersEnhancementScope.kt @@ -100,4 +100,12 @@ class JavaClassMembersEnhancementScope( propertySymbol, processor, overriddenProperties, useSiteMemberScope, FirTypeScope::processOverriddenPropertiesWithDepth ) + + override fun getCallableNames(): Set { + return useSiteMemberScope.getCallableNames() + } + + override fun mayContainName(name: Name): Boolean { + return useSiteMemberScope.mayContainName(name) + } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt index 2d5e310a602..28e63999ffd 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticEnhancementScope.kt @@ -48,4 +48,12 @@ class JavaClassStaticEnhancementScope( processor(function as FirConstructorSymbol) } } + + override fun getCallableNames(): Set { + return useSiteStaticScope.getCallableNames() + } + + override fun mayContainName(name: Name): Boolean { + return useSiteStaticScope.mayContainName(name) + } } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt index 1890832efde..d906da48928 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaClassStaticUseSiteScope.kt @@ -79,4 +79,18 @@ class JavaClassStaticUseSiteScope internal constructor( return result } + + @OptIn(ExperimentalStdlibApi::class) + override fun getCallableNames(): Set { + return buildSet { + addAll(declaredMemberScope.getCallableNames()) + for (superTypesScope in superTypesScopes) { + addAll(superTypesScope.getCallableNames()) + } + } + } + + override fun mayContainName(name: Name): Boolean { + return declaredMemberScope.mayContainName(name) || superTypesScopes.any { it.mayContainName(name) } + } }