Temporary allow resolve in write action for insert handler
This commit is contained in:
+2
-1
@@ -22,6 +22,7 @@ import com.intellij.psi.PsiClass
|
|||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.allowResolveInWriteAction
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.completion.isAfterDot
|
import org.jetbrains.kotlin.idea.completion.isAfterDot
|
||||||
import org.jetbrains.kotlin.idea.completion.isArtificialImportAliasedDescriptor
|
import org.jetbrains.kotlin.idea.completion.isArtificialImportAliasedDescriptor
|
||||||
@@ -60,7 +61,7 @@ object KotlinClassifierInsertHandler : BaseDeclarationInsertHandler() {
|
|||||||
val token = file.findElementAt(startOffset)!!
|
val token = file.findElementAt(startOffset)!!
|
||||||
val nameRef = token.parent as? KtNameReferenceExpression
|
val nameRef = token.parent as? KtNameReferenceExpression
|
||||||
if (nameRef != null) {
|
if (nameRef != null) {
|
||||||
val bindingContext = nameRef.analyze(BodyResolveMode.PARTIAL)
|
val bindingContext = allowResolveInWriteAction { nameRef.analyze(BodyResolveMode.PARTIAL) }
|
||||||
val target = bindingContext[BindingContext.SHORT_REFERENCE_TO_COMPANION_OBJECT, nameRef]
|
val target = bindingContext[BindingContext.SHORT_REFERENCE_TO_COMPANION_OBJECT, nameRef]
|
||||||
?: bindingContext[BindingContext.REFERENCE_TARGET, nameRef] as? ClassDescriptor
|
?: bindingContext[BindingContext.REFERENCE_TARGET, nameRef] as? ClassDescriptor
|
||||||
if (target != null && IdeDescriptorRenderers.SOURCE_CODE.renderClassifierName(target) == qualifiedName) return
|
if (target != null && IdeDescriptorRenderers.SOURCE_CODE.renderClassifierName(target) == qualifiedName) return
|
||||||
|
|||||||
Reference in New Issue
Block a user