Fixed assertion in internal action
This commit is contained in:
+29
-33
@@ -19,41 +19,33 @@ package org.jetbrains.kotlin.idea.actions.internal
|
|||||||
import com.intellij.openapi.actionSystem.AnAction
|
import com.intellij.openapi.actionSystem.AnAction
|
||||||
import com.intellij.openapi.actionSystem.AnActionEvent
|
import com.intellij.openapi.actionSystem.AnActionEvent
|
||||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.project.Project
|
|
||||||
import com.intellij.psi.PsiManager
|
|
||||||
import java.util.ArrayList
|
|
||||||
import org.jetbrains.kotlin.psi.JetFile
|
|
||||||
import com.intellij.openapi.vfs.VfsUtilCore
|
|
||||||
import com.intellij.openapi.vfs.VirtualFileVisitor
|
|
||||||
import com.intellij.openapi.progress.ProgressManager
|
|
||||||
import org.jetbrains.kotlin.psi.JetVisitorVoid
|
|
||||||
import org.jetbrains.kotlin.psi.JetElement
|
|
||||||
import org.jetbrains.kotlin.psi.JetReferenceExpression
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
|
||||||
import com.intellij.openapi.diff.DiffManager
|
import com.intellij.openapi.diff.DiffManager
|
||||||
import com.intellij.openapi.diff.SimpleDiffRequest
|
|
||||||
import com.intellij.openapi.diff.SimpleContent
|
import com.intellij.openapi.diff.SimpleContent
|
||||||
import com.intellij.openapi.ui.DialogBuilder
|
import com.intellij.openapi.diff.SimpleDiffRequest
|
||||||
import com.intellij.openapi.diff.impl.DiffPanelImpl
|
|
||||||
import com.intellij.openapi.diff.ex.DiffPanelOptions
|
import com.intellij.openapi.diff.ex.DiffPanelOptions
|
||||||
|
import com.intellij.openapi.diff.impl.DiffPanelImpl
|
||||||
|
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||||
|
import com.intellij.openapi.progress.ProgressManager
|
||||||
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.DialogBuilder
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import javax.swing.SwingUtilities
|
import com.intellij.openapi.vfs.VfsUtilCore
|
||||||
import org.jetbrains.kotlin.psi.JetNameReferenceExpression
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
import org.jetbrains.kotlin.psi.JetExpression
|
import com.intellij.openapi.vfs.VirtualFileVisitor
|
||||||
import org.jetbrains.kotlin.types.JetType
|
import com.intellij.psi.PsiManager
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
import org.jetbrains.kotlin.psi.JetBlockExpression
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.JetDeclarationWithBody
|
|
||||||
import org.jetbrains.kotlin.psi.JetContainerNode
|
|
||||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
import org.jetbrains.kotlin.psi.psiUtil.siblings
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
|
import org.jetbrains.kotlin.types.JetType
|
||||||
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
|
import java.util.ArrayList
|
||||||
|
import javax.swing.SwingUtilities
|
||||||
|
|
||||||
public class CheckPartialBodyResolveAction : AnAction() {
|
public class CheckPartialBodyResolveAction : AnAction() {
|
||||||
override fun actionPerformed(e: AnActionEvent) {
|
override fun actionPerformed(e: AnActionEvent) {
|
||||||
@@ -61,7 +53,11 @@ public class CheckPartialBodyResolveAction : AnAction() {
|
|||||||
val project = CommonDataKeys.PROJECT.getData(e.getDataContext())!!
|
val project = CommonDataKeys.PROJECT.getData(e.getDataContext())!!
|
||||||
|
|
||||||
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
ProgressManager.getInstance().runProcessWithProgressSynchronously(
|
||||||
Runnable { checkResolve(selectedFiles, project) },
|
Runnable {
|
||||||
|
ApplicationManager.getApplication().runReadAction {
|
||||||
|
checkResolve(selectedFiles, project)
|
||||||
|
}
|
||||||
|
},
|
||||||
"Checking Partial Body Resolve",
|
"Checking Partial Body Resolve",
|
||||||
true,
|
true,
|
||||||
project)
|
project)
|
||||||
@@ -70,8 +66,8 @@ public class CheckPartialBodyResolveAction : AnAction() {
|
|||||||
private fun checkResolve(files: Collection<JetFile>, project: Project) {
|
private fun checkResolve(files: Collection<JetFile>, project: Project) {
|
||||||
//TODO: drop resolve caches if any
|
//TODO: drop resolve caches if any
|
||||||
val progressIndicator = ProgressManager.getInstance().getProgressIndicator()
|
val progressIndicator = ProgressManager.getInstance().getProgressIndicator()
|
||||||
for ((i, file) in files.withIndices()) {
|
for ((i, file) in files.withIndex()) {
|
||||||
progressIndicator?.setText("Checking resolve $i of ${files.size}...")
|
progressIndicator?.setText("Checking resolve $i of ${files.size()}...")
|
||||||
progressIndicator?.setText2(file.getVirtualFile().getPath())
|
progressIndicator?.setText2(file.getVirtualFile().getPath())
|
||||||
|
|
||||||
val partialResolveDump = dumpResolve(file) {(element, resolutionFacade) ->
|
val partialResolveDump = dumpResolve(file) {(element, resolutionFacade) ->
|
||||||
@@ -101,18 +97,18 @@ public class CheckPartialBodyResolveAction : AnAction() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
progressIndicator?.setFraction((i + 1) / files.size.toDouble())
|
progressIndicator?.setFraction((i + 1) / files.size().toDouble())
|
||||||
}
|
}
|
||||||
|
|
||||||
SwingUtilities.invokeLater {
|
SwingUtilities.invokeLater {
|
||||||
Messages.showInfoMessage(project, "Analyzed ${files.size} file(s). No resolve difference found. ", "Success")
|
Messages.showInfoMessage(project, "Analyzed ${files.size()} file(s). No resolve difference found. ", "Success")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dumpResolve(file: JetFile, resolver: (JetElement, ResolutionFacade) -> BindingContext): String {
|
private fun dumpResolve(file: JetFile, resolver: (JetElement, ResolutionFacade) -> BindingContext): String {
|
||||||
val builder = StringBuilder()
|
val builder = StringBuilder()
|
||||||
val resolutionFacade = file.getResolutionFacade()
|
val resolutionFacade = file.getResolutionFacade()
|
||||||
val document = FileDocumentManager.getInstance().getDocument(file.getVirtualFile())
|
val document = FileDocumentManager.getInstance().getDocument(file.getVirtualFile())!!
|
||||||
file.acceptChildren(object : JetVisitorVoid(){
|
file.acceptChildren(object : JetVisitorVoid(){
|
||||||
override fun visitJetElement(element: JetElement) {
|
override fun visitJetElement(element: JetElement) {
|
||||||
ProgressManager.checkCanceled()
|
ProgressManager.checkCanceled()
|
||||||
|
|||||||
Reference in New Issue
Block a user