Просмотр исходного кода

Fix compatibility problem with 2020.3

Him188 4 лет назад
Родитель
Сommit
9cf459ec89
1 измененных файлов с 10 добавлено и 7 удалено
  1. 10 7
      tools/intellij-plugin/src/resolve/resolveIdea.kt

+ 10 - 7
tools/intellij-plugin/src/resolve/resolveIdea.kt

@@ -10,17 +10,12 @@
 package net.mamoe.mirai.console.intellij.resolve
 package net.mamoe.mirai.console.intellij.resolve
 
 
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.project.Project
-import com.intellij.psi.PsiClass
-import com.intellij.psi.PsiElement
-import com.intellij.psi.PsiElementFactory
-import com.intellij.psi.PsiModifierListOwner
-import com.intellij.psi.util.parents
+import com.intellij.psi.*
 import net.mamoe.mirai.console.compiler.common.resolve.*
 import net.mamoe.mirai.console.compiler.common.resolve.*
 import org.jetbrains.kotlin.descriptors.*
 import org.jetbrains.kotlin.descriptors.*
 import org.jetbrains.kotlin.idea.caches.resolve.analyze
 import org.jetbrains.kotlin.idea.caches.resolve.analyze
 import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
 import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
 import org.jetbrains.kotlin.idea.refactoring.fqName.fqName
 import org.jetbrains.kotlin.idea.refactoring.fqName.fqName
-import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
 import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
 import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
 import org.jetbrains.kotlin.idea.references.resolveToDescriptors
 import org.jetbrains.kotlin.idea.references.resolveToDescriptors
 import org.jetbrains.kotlin.incremental.components.NoLookupLocation
 import org.jetbrains.kotlin.incremental.components.NoLookupLocation
@@ -31,7 +26,6 @@ import org.jetbrains.kotlin.psi.*
 import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
 import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
 import org.jetbrains.kotlin.resolve.BindingContext
 import org.jetbrains.kotlin.resolve.BindingContext
 import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
 import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
-import org.jetbrains.kotlin.resolve.calls.callUtil.getCalleeExpressionIfAny
 import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
 import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
 import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
 import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
 import org.jetbrains.kotlin.resolve.constants.ArrayValue
 import org.jetbrains.kotlin.resolve.constants.ArrayValue
@@ -76,6 +70,15 @@ val KtPureClassOrObject.allSuperTypes: Sequence<KtSuperTypeListEntry>
         }
         }
     }
     }
 
 
+fun PsiElement.parents(withSelf: Boolean): Sequence<PsiElement> {
+    val seed = if (withSelf) this else parentWithoutWalkingDirectories(this)
+    return generateSequence(seed, ::parentWithoutWalkingDirectories)
+}
+
+private fun parentWithoutWalkingDirectories(element: PsiElement): PsiElement? {
+    return if (element is PsiFile) null else element.parent
+}
+
 val PsiClass.allSuperTypes: Sequence<PsiClass>
 val PsiClass.allSuperTypes: Sequence<PsiClass>
     get() = sequence {
     get() = sequence {
         interfaces.forEach {
         interfaces.forEach {