Clear computable when value is calculated and CallOnceFunction is added
Relates to #KT-35256
This commit is contained in:
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.scopes.BaseImportingScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
import org.jetbrains.kotlin.utils.CallOnceFunction
|
||||
import org.jetbrains.kotlin.utils.Printer
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
@@ -32,7 +33,7 @@ class LazyExplicitImportScope(
|
||||
private val packageFragmentForVisibilityCheck: PackageFragmentDescriptor?,
|
||||
private val declaredName: Name,
|
||||
private val aliasName: Name,
|
||||
private val storeReferences: (Collection<DeclarationDescriptor>) -> Unit
|
||||
private val storeReferences: CallOnceFunction<Collection<DeclarationDescriptor>, Unit>
|
||||
) : BaseImportingScope(null) {
|
||||
|
||||
override fun getContributedClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? {
|
||||
|
||||
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.resolve.scopes.utils.memberScopeAsImportingScope
|
||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
||||
import org.jetbrains.kotlin.types.expressions.ExpressionTypingContext
|
||||
import org.jetbrains.kotlin.types.expressions.isWithoutValueArguments
|
||||
import org.jetbrains.kotlin.utils.CallOnceFunction
|
||||
|
||||
class QualifiedExpressionResolver(val languageVersionSettings: LanguageVersionSettings) {
|
||||
fun resolvePackageHeader(
|
||||
@@ -310,22 +311,22 @@ class QualifiedExpressionResolver(val languageVersionSettings: LanguageVersionSe
|
||||
packageOrClassDescriptor,
|
||||
packageFragmentForVisibilityCheck,
|
||||
lastPart.name,
|
||||
aliasName
|
||||
) { candidates ->
|
||||
|
||||
if (candidates.isNotEmpty()) {
|
||||
storeResult(
|
||||
trace,
|
||||
lastPart.expression,
|
||||
candidates,
|
||||
packageFragmentForVisibilityCheck,
|
||||
position = QualifierPosition.IMPORT,
|
||||
isQualifier = false
|
||||
)
|
||||
} else {
|
||||
tryResolveDescriptorsWhichCannotBeImported(trace, moduleDescriptor, packageOrClassDescriptor, lastPart)
|
||||
aliasName,
|
||||
CallOnceFunction(Unit) { candidates ->
|
||||
if (candidates.isNotEmpty()) {
|
||||
storeResult(
|
||||
trace,
|
||||
lastPart.expression,
|
||||
candidates,
|
||||
packageFragmentForVisibilityCheck,
|
||||
position = QualifierPosition.IMPORT,
|
||||
isQualifier = false
|
||||
)
|
||||
} else {
|
||||
tryResolveDescriptorsWhichCannotBeImported(trace, moduleDescriptor, packageOrClassDescriptor, lastPart)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun tryResolveDescriptorsWhichCannotBeImported(
|
||||
|
||||
Reference in New Issue
Block a user