From c0693715918ec9adc1746b04ca2bc6ec3f10db48 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 20 Sep 2017 14:47:12 +0300 Subject: [PATCH] Inline LazyImportScope.selectSingleFromImports --- .../kotlin/resolve/lazy/LazyImportScope.kt | 40 +++++++------------ 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt index 698cc567c8f..32999c15133 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/LazyImportScope.kt @@ -99,24 +99,6 @@ open class LazyImportResolver( } } - fun selectSingleFromImports( - name: Name, - descriptorSelector: (ImportingScope, Name) -> D? - ): D? { - fun compute(): D? { - val imports = indexedImports.importsForName(name) - - var target: D? = null - for (directive in imports) { - val resolved = descriptorSelector(getImportScope(directive), name) ?: continue - if (target != null && target != resolved) return null // ambiguity - target = resolved - } - return target - } - return components.storageManager.compute(::compute) - } - fun collectFromImports( name: Name, descriptorsSelector: (ImportingScope, Name) -> Collection @@ -255,15 +237,21 @@ class LazyImportScope( return importResolver.getClassifier(name, location) ?: secondaryImportResolver?.getClassifier(name, location) } - private fun LazyImportResolver<*>.getClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? { - return selectSingleFromImports(name) { scope, _ -> - val descriptor = scope.getContributedClassifier(name, location) - if ((descriptor is ClassDescriptor || descriptor is TypeAliasDescriptor) && isClassifierVisible(descriptor)) - descriptor - else - null /* type parameters can't be imported */ + private fun LazyImportResolver<*>.getClassifier(name: Name, location: LookupLocation): ClassifierDescriptor? = + components.storageManager.compute { + val imports = indexedImports.importsForName(name) + + var target: ClassifierDescriptor? = null + for (directive in imports) { + val descriptor = getImportScope(directive).getContributedClassifier(name, location) + if (descriptor !is ClassDescriptor && descriptor !is TypeAliasDescriptor || !isClassifierVisible(descriptor)) + continue /* type parameters can't be imported */ + if (target != null && target != descriptor) return@compute null // ambiguity + target = descriptor + } + + target } - } override fun getContributedPackage(name: Name): PackageViewDescriptor? = null