@@ -188,40 +188,40 @@ interface RunService {
188
188
private fun RunnerAndConfigurationSettings.startRunConfigurationExecution (context : Context ): Boolean {
189
189
val runner = ProgramRunner .getRunner(DefaultRunExecutor .EXECUTOR_ID , configuration)
190
190
val env =
191
- ExecutionEnvironmentBuilder .create(DefaultRunExecutor .getRunExecutorInstance(), this ).activeTarget().build()
191
+ ExecutionEnvironmentBuilder .create(DefaultRunExecutor .getRunExecutorInstance(), this )
192
+ .activeTarget()
193
+ .build(callback(context))
192
194
193
195
if (runner == null || env.state == null ) {
194
196
context.latch.countDown()
195
197
return false
196
198
}
197
199
200
+ context.environments.add(env)
201
+ runner.execute(env)
202
+ return true
203
+ }
198
204
199
- @Suppress(" UnstableApiUsage" )
200
- env.callback = ProgramRunner .Callback { descriptor ->
201
- // Descriptor can be null in some cases.
202
- // For example, IntelliJ Rust's test runner provides null here if compilation fails
203
- if (descriptor == null ) {
204
- context.latch.countDown()
205
- return @Callback
206
- }
205
+ fun callback (context : Context ) = ProgramRunner .Callback { descriptor ->
206
+ // Descriptor can be null in some cases.
207
+ // For example, IntelliJ Rust's test runner provides null here if compilation fails
208
+ if (descriptor == null ) {
209
+ context.latch.countDown()
210
+ return @Callback
211
+ }
207
212
208
- Disposer .register(context, Disposable {
209
- ExecutionManagerImpl .stopProcess(descriptor)
213
+ Disposer .register(context, Disposable {
214
+ ExecutionManagerImpl .stopProcess(descriptor)
215
+ })
216
+ val processHandler = descriptor.processHandler
217
+ if (processHandler != null ) {
218
+ processHandler.addProcessListener(object : ProcessAdapter () {
219
+ override fun processTerminated (event : ProcessEvent ) {
220
+ context.latch.countDown()
221
+ }
210
222
})
211
- val processHandler = descriptor.processHandler
212
- if (processHandler != null ) {
213
- processHandler.addProcessListener(object : ProcessAdapter () {
214
- override fun processTerminated (event : ProcessEvent ) {
215
- context.latch.countDown()
216
- }
217
- })
218
- context.processListener?.let { processHandler.addProcessListener(it) }
219
- }
223
+ context.processListener?.let { processHandler.addProcessListener(it) }
220
224
}
221
-
222
- context.environments.add(env)
223
- runner.execute(env)
224
- return true
225
225
}
226
226
227
227
0 commit comments