@@ -12,25 +12,26 @@ import jetbrains.mps.errors.CheckerRegistry
12
12
import jetbrains.mps.errors.MessageStatus
13
13
import jetbrains.mps.errors.item.IssueKindReportItem
14
14
import jetbrains.mps.ide.httpsupport.runtime.base.HttpSupportUtil
15
+ import jetbrains.mps.ide.modelchecker.platform.actions.IdeaPlatformReadExecutor
15
16
import jetbrains.mps.ide.modelchecker.platform.actions.UnresolvedReferencesChecker
16
17
import jetbrains.mps.progress.EmptyProgressMonitor
17
18
import jetbrains.mps.project.Project
18
19
import jetbrains.mps.smodel.ModelAccessBase
19
20
import jetbrains.mps.smodel.SModelStereotype
20
21
import jetbrains.mps.tool.environment.Environment
21
22
import jetbrains.mps.util.CollectConsumer
23
+ import jetbrains.mps.workbench.progress.IdeaPlatformTaskScheduler
22
24
import jetbrains.mps.workbench.progress.SystemBackgroundTaskScheduler
23
25
import org.jetbrains.mps.openapi.model.SModel
24
26
import org.jetbrains.mps.openapi.model.SNode
25
27
import org.jetbrains.mps.openapi.module.SModule
26
28
import java.io.File
27
- import java.lang.IllegalArgumentException
28
- import java.lang.UnsupportedOperationException
29
29
import java.text.SimpleDateFormat
30
- import java.util.Date
30
+ import java.util.*
31
31
import kotlin.math.min
32
32
import kotlin.test.fail
33
33
34
+
34
35
val logging = detectLogging()
35
36
val logger = logging.getLogger(" de.itemis.mps.gradle.modelcheck" )
36
37
@@ -284,17 +285,34 @@ private fun oneTestCasePerModule(modules: Iterable<SModule>, errorsPerModule: Ma
284
285
285
286
private fun ModelCheckerBuilder.setParallelTaskScheduler (project : Project ) {
286
287
try {
288
+ setParallelTaskSchedulerV3(project)
289
+ } catch (e: LinkageError ) {
287
290
try {
288
- val executor = (project.repository.modelAccess as ModelAccessBase ).shareRead()
289
- withTaskScheduler(SystemBackgroundTaskScheduler (project, executor))
290
- } catch (e: NoSuchMethodError ) {
291
- withTaskScheduler(SystemBackgroundTaskScheduler (project))
291
+ setParallelTaskSchedulerV2(project)
292
+ } catch (e: LinkageError ) {
293
+ try {
294
+ setParallelTaskSchedulerV1(project)
295
+ } catch (e: LinkageError ) {
296
+ logger.warn(" Parallel model checking is not supported in this version of MPS" , e)
297
+ }
292
298
}
293
- } catch (e: NoClassDefFoundError ) {
294
- logger.warn(" Parallel model checking is not supported in this version of MPS" , e)
295
299
}
296
300
}
297
301
302
+ private fun ModelCheckerBuilder.setParallelTaskSchedulerV3 (project : Project ) {
303
+ val executor = IdeaPlatformReadExecutor (project.repository.modelAccess)
304
+ withTaskScheduler(IdeaPlatformTaskScheduler (project, executor))
305
+ }
306
+
307
+ private fun ModelCheckerBuilder.setParallelTaskSchedulerV2 (project : Project ) {
308
+ val executor = (project.repository.modelAccess as ModelAccessBase ).shareRead()
309
+ withTaskScheduler(SystemBackgroundTaskScheduler (project, executor))
310
+ }
311
+
312
+ private fun ModelCheckerBuilder.setParallelTaskSchedulerV1 (project : Project ) {
313
+ withTaskScheduler(SystemBackgroundTaskScheduler (project))
314
+ }
315
+
298
316
fun modelCheckProject (args : ModelCheckArgs , environment : Environment , project : Project ): Boolean {
299
317
val checkers = environment.platform.findComponent(CheckerRegistry ::class .java)!! .checkers
300
318
if (checkers.all { it !is UnresolvedReferencesChecker }) {
0 commit comments