FIR IDE: collect diagnostics under read lock

This commit is contained in:
Ilya Kirillov
2021-03-05 13:23:27 +01:00
parent 770468c78e
commit 81baf4fae5
@@ -59,10 +59,13 @@ internal class FileStructure(
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
fun getAllDiagnosticsForFile(diagnosticCheckerFilter: DiagnosticCheckerFilter): Collection<FirPsiDiagnostic<*>> { fun getAllDiagnosticsForFile(diagnosticCheckerFilter: DiagnosticCheckerFilter): Collection<FirPsiDiagnostic<*>> {
val structureElements = getAllStructureElements() val structureElements = getAllStructureElements()
return buildSet {
return moduleFileCache.firFileLockProvider.withReadLock(firFile) {
buildSet {
collectDiagnosticsFromStructureElements(structureElements, diagnosticCheckerFilter) collectDiagnosticsFromStructureElements(structureElements, diagnosticCheckerFilter)
} }
} }
}
private fun MutableSet<FirPsiDiagnostic<*>>.collectDiagnosticsFromStructureElements( private fun MutableSet<FirPsiDiagnostic<*>>.collectDiagnosticsFromStructureElements(
structureElements: Collection<FileStructureElement>, structureElements: Collection<FileStructureElement>,