@@ -301,7 +301,7 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
301
301
meth_or_mod_name = string (Base. nameof (curr_fr))
302
302
303
303
# Is this a file from base?
304
- if ! isabspath (file_name)
304
+ if ! isabspath (file_name) && ! occursin ( r" REPL \[\d * \] " , file_name)
305
305
file_name = basepath (file_name)
306
306
end
307
307
@@ -361,7 +361,11 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
361
361
elseif curr_scopeof isa Method
362
362
ret = JuliaInterpreter. CodeTracking. definition (String, curr_fr. framecode. scope)
363
363
if ret != = nothing
364
- debug_session. sources[debug_session. next_source_id], loc = ret
364
+ source_name = string (curr_fr. framecode. scope)
365
+
366
+ DebugEngines. set_source (debug_session. debug_engine, source_name, ret[1 ])
367
+ source_id = DebugEngines. get_source_id (debug_session. debug_engine, source_name)
368
+
365
369
push! (
366
370
frames,
367
371
StackFrame (
@@ -370,7 +374,7 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
370
374
Source (
371
375
file_name,
372
376
missing ,
373
- debug_session . next_source_id ,
377
+ source_id ,
374
378
source_hint,
375
379
source_origin,
376
380
missing ,
@@ -386,7 +390,6 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
386
390
sf_hint
387
391
)
388
392
)
389
- debug_session. next_source_id += 1
390
393
else
391
394
src = curr_fr. framecode. src
392
395
@static if isdefined (JuliaInterpreter, :copy_codeinfo )
@@ -397,7 +400,10 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
397
400
JuliaInterpreter. replace_coretypes! (src; rev = true )
398
401
code = Base. invokelatest (JuliaInterpreter. framecode_lines, src)
399
402
400
- debug_session. sources[debug_session. next_source_id] = join (code, ' \n ' )
403
+ source_name = string (uuid4 ())
404
+
405
+ DebugEngines. set_source (debug_session. debug_engine, source_name, join (code, ' \n ' ))
406
+ source_id = DebugEngines. get_source_id (debug_session. debug_engine, source_name)
401
407
402
408
push! (
403
409
frames,
@@ -407,7 +413,7 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
407
413
Source (
408
414
file_name,
409
415
missing ,
410
- debug_session . next_source_id ,
416
+ source_id ,
411
417
source_hint,
412
418
source_origin,
413
419
missing ,
@@ -423,21 +429,20 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
423
429
sf_hint
424
430
)
425
431
)
426
- debug_session. next_source_id += 1
427
432
end
428
- else
429
- # For now we are assuming that this can only happen
430
- # for code that is passed via the @enter or @run macros,
431
- # and that code we have stored as source with id 0
433
+ elseif occursin ( r" REPL \[\d * \] " , file_name)
434
+ source_name = file_name
435
+ source_id = DebugEngines . get_source_id (debug_session . debug_engine, file_name)
436
+
432
437
push! (
433
438
frames,
434
439
StackFrame (
435
440
id,
436
441
meth_or_mod_name,
437
442
Source (
438
- " REPL " ,
443
+ file_name ,
439
444
missing ,
440
- 0 ,
445
+ source_id ,
441
446
missing ,
442
447
missing ,
443
448
missing ,
@@ -453,6 +458,8 @@ function stack_trace_request(debug_session::DebugSession, params::StackTraceArgu
453
458
missing
454
459
)
455
460
)
461
+ else
462
+ error (" Unknown stack type" )
456
463
end
457
464
458
465
id += 1
@@ -510,7 +517,9 @@ function source_request(debug_session::DebugSession, params::SourceArguments)
510
517
511
518
source_id = params. source. sourceReference
512
519
513
- return SourceResponseArguments (debug_session. sources[source_id], missing )
520
+ code = DebugEngines. get_source (debug_session. debug_engine, source_id)
521
+
522
+ return SourceResponseArguments (code, missing )
514
523
end
515
524
516
525
function construct_return_msg_for_var (debug_session:: DebugSession , name, value)
0 commit comments