Perform 'all import resolve' once and protect it with lock (EA-79696)
Binding context and diagnostic structures are not thread-safe now and need to be protected with the lock. Fix flacky test testRemoveDuplicateImport This also probably fixes some traces in EA-79696
This commit is contained in:
@@ -29,10 +29,10 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.KtPsiUtil
|
||||
import org.jetbrains.kotlin.psi.KtReferenceExpression
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.ImportingScope
|
||||
import org.jetbrains.kotlin.storage.NotNullLazyValue
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||
import org.jetbrains.kotlin.util.collectionUtils.concat
|
||||
@@ -104,7 +104,7 @@ class LazyImportResolver(
|
||||
Unit
|
||||
}
|
||||
|
||||
override fun forceResolveAllImports() {
|
||||
private val forceResolveAllImportsTask: NotNullLazyValue<Unit> = storageManager.createLazyValue {
|
||||
val explicitClassImports = HashMultimap.create<String, KtImportDirective>()
|
||||
for (importDirective in indexedImports.imports) {
|
||||
forceResolveImport(importDirective)
|
||||
@@ -134,6 +134,10 @@ class LazyImportResolver(
|
||||
}
|
||||
}
|
||||
|
||||
override fun forceResolveAllImports() {
|
||||
forceResolveAllImportsTask()
|
||||
}
|
||||
|
||||
private fun checkResolvedImportDirective(importDirective: KtImportDirective) {
|
||||
val importedReference = KtPsiUtil.getLastReference(importDirective.importedReference ?: return) ?: return
|
||||
val importedDescriptor = traceForImportResolve.bindingContext.get(BindingContext.REFERENCE_TARGET, importedReference) ?: return
|
||||
|
||||
Reference in New Issue
Block a user