override fun run()

in src/main/kotlin/org/arend/typechecking/BackgroundTypechecker.kt [48:85]


            override fun run(indicator: ProgressIndicator) {
                indicator.isIndeterminate = false
                indicator.fraction = 0.0
                val check2 = !collector2.isEmpty && !settings.typecheckOnlyLast || lastModified == null || lastModified.typechecked?.status()?.isOK == true
                val total = collector1.elements.size + if (check2) collector2.elements.size else 0
                var i = 0

                val tcService = project.service<TypeCheckingService>()
                val typechecking = ArendTypechecking(tcService, instanceProviderSet, concreteProvider, errorService, tcService.dependencyListener, LibraryArendExtensionProvider(tcService.libraryManager))

                if (!collector1.isEmpty) {
                    for (element in collector1.elements) {
                        if (!typecheckDefinition(typechecking, element)) {
                            indicator.fraction = 1.0
                            return
                        }
                        indicator.fraction = (++i).toDouble() / total
                    }
                }

                if (check2) {
                    for (element in collector2.elements) {
                        if (!typecheckDefinition(typechecking, element)) {
                            indicator.fraction = 1.0
                            return
                        }
                        indicator.fraction = (++i).toDouble() / total
                    }
                }

                if (runAnalyzer) {
                    project.afterTypechecking(listOf(file))
                }

                modificationTracker.incModificationCount()
                file.lastDefinitionModification.updateAndGet { maxOf(it, modificationTracker.modificationCount) }
                return
            }