Debugger: do not throw assert when context for codeFragment is null (ex. when file was changed and psi isn't valid any more)

This commit is contained in:
Natalia Ukhorskaya
2015-07-14 12:46:30 +03:00
parent ec3c667f38
commit 03de31f1b6
@@ -199,12 +199,12 @@ public class KotlinCacheService(val project: Project) {
private fun findSyntheticFiles(files: Collection<JetFile>) = files.map { private fun findSyntheticFiles(files: Collection<JetFile>) = files.map {
if (it is JetCodeFragment) it.getContextFile() else it if (it is JetCodeFragment) it.getContextFile() else it
}.filter { }.filterNotNull().filter {
!ProjectRootsUtil.isInProjectSource(it) !ProjectRootsUtil.isInProjectSource(it)
}.toSet() }.toSet()
private fun JetCodeFragment.getContextFile(): JetFile { private fun JetCodeFragment.getContextFile(): JetFile? {
val contextElement = getContext() ?: throw AssertionError("Analyzing code fragment of type $javaClass with no context") val contextElement = getContext() ?: return null
val contextFile = (contextElement as? JetElement)?.getContainingJetFile() val contextFile = (contextElement as? JetElement)?.getContainingJetFile()
?: throw AssertionError("Analyzing kotlin code fragment of type $javaClass with java context of type ${contextElement.javaClass}") ?: throw AssertionError("Analyzing kotlin code fragment of type $javaClass with java context of type ${contextElement.javaClass}")
return if (contextFile is JetCodeFragment) contextFile.getContextFile() else contextFile return if (contextFile is JetCodeFragment) contextFile.getContextFile() else contextFile