Added diagnostic for EA-69526 - assert: JavaToKotlinConverter.checkReferenceValid
This commit is contained in:
@@ -25,6 +25,7 @@ import com.intellij.psi.*
|
|||||||
import com.intellij.psi.impl.source.DummyHolder
|
import com.intellij.psi.impl.source.DummyHolder
|
||||||
import org.jetbrains.kotlin.idea.JetLanguage
|
import org.jetbrains.kotlin.idea.JetLanguage
|
||||||
import org.jetbrains.kotlin.j2k.ast.Element
|
import org.jetbrains.kotlin.j2k.ast.Element
|
||||||
|
import org.jetbrains.kotlin.j2k.usageProcessing.ExternalCodeProcessor
|
||||||
import org.jetbrains.kotlin.j2k.usageProcessing.UsageProcessing
|
import org.jetbrains.kotlin.j2k.usageProcessing.UsageProcessing
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.psi.JetFile
|
import org.jetbrains.kotlin.psi.JetFile
|
||||||
@@ -196,20 +197,22 @@ public class JavaToKotlinConverter(
|
|||||||
else -> continue@ReferenceLoop
|
else -> continue@ReferenceLoop
|
||||||
}
|
}
|
||||||
|
|
||||||
checkReferenceValid(reference)
|
checkReferenceValid(reference, null)
|
||||||
|
|
||||||
var references = listOf(reference)
|
var references = listOf(reference)
|
||||||
for (processor in processors) {
|
for (processor in processors) {
|
||||||
references = references.flatMap { processor.processUsage(it)?.toList() ?: listOf(it) }
|
references = references.flatMap { processor.processUsage(it)?.toList() ?: listOf(it) }
|
||||||
references.forEach { checkReferenceValid(it) }
|
references.forEach { checkReferenceValid(it, processor) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun checkReferenceValid(reference: PsiReference) {
|
private fun checkReferenceValid(reference: PsiReference, afterProcessor: ExternalCodeProcessor?) {
|
||||||
val element = reference.getElement()
|
val element = reference.getElement()
|
||||||
assert(element.isValid() && element.getContainingFile() !is DummyHolder) { "Reference $reference got invalidated" }
|
assert(element.isValid() && element.getContainingFile() !is DummyHolder) {
|
||||||
|
"Reference $reference got invalidated" + (if (afterProcessor != null) " after processing with $afterProcessor" else "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private object ReferenceComparator : Comparator<ReferenceInfo> {
|
private object ReferenceComparator : Comparator<ReferenceInfo> {
|
||||||
|
|||||||
Reference in New Issue
Block a user