From 8e68b901616aab5c9b65ab35ab45b9289d68005e Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Sun, 5 Apr 2026 16:13:06 -0500 Subject: [PATCH] reveal errortrace annotations via `errortrace-continuation-mark-set->context` --- .../private/eval-helpers-and-pref-init.rkt | 13 ++++++++++++- drracket-core-lib/drracket/private/eval.rkt | 1 + .../drracket/private/stack-checkpoint.rkt | 18 +++++++++++------- drracket-core-lib/info.rkt | 2 +- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/drracket-core-lib/drracket/private/eval-helpers-and-pref-init.rkt b/drracket-core-lib/drracket/private/eval-helpers-and-pref-init.rkt index 4c85f627a..6e1868e88 100644 --- a/drracket-core-lib/drracket/private/eval-helpers-and-pref-init.rkt +++ b/drracket-core-lib/drracket/private/eval-helpers-and-pref-init.rkt @@ -10,9 +10,11 @@ pkg/lib framework/preferences errortrace/stacktrace + errortrace/marks-to-context "drracket-errortrace-key.rkt" (prefix-in *** '#%foreign) ;; just to make sure it is here - "compiled-dir.rkt") + "compiled-dir.rkt" + (submod "stack-checkpoint.rkt" item->srcloc)) (provide set-basic-parameters/no-gui set-module-language-parameters @@ -165,6 +167,15 @@ (use-compiled-file-paths))]) (orig path mod-name)) (orig path mod-name)))))) + + (errortrace-continuation-mark-set->context + (let ([drracket-errortrace-lib-continuation-mark-set->context + (λ (cms) + (map + errortrace-stack-item->srcloc + (continuation-mark-set->list cms drracket-errortrace-key)))]) + drracket-errortrace-lib-continuation-mark-set->context)) + ;; Install the compilation manager: (current-parallel-lock-shutdown-evt (make-custodian-box (current-custodian) #t)) (parallel-lock-client module-language-parallel-lock-client) diff --git a/drracket-core-lib/drracket/private/eval.rkt b/drracket-core-lib/drracket/private/eval.rkt index 0df57a8e4..90111040b 100644 --- a/drracket-core-lib/drracket/private/eval.rkt +++ b/drracket-core-lib/drracket/private/eval.rkt @@ -198,6 +198,7 @@ '(lib "simple-tree-text-markup/data.rkt") ; srclocs-special<%> '(lib "simple-tree-text-markup/port.rkt") + '(lib "errortrace/marks-to-context.rkt") ;; preserve the invariant that: ;; if a module is shared, so ;; are all of its submodules diff --git a/drracket-core-lib/drracket/private/stack-checkpoint.rkt b/drracket-core-lib/drracket/private/stack-checkpoint.rkt index a511b7193..67ce34307 100644 --- a/drracket-core-lib/drracket/private/stack-checkpoint.rkt +++ b/drracket-core-lib/drracket/private/stack-checkpoint.rkt @@ -36,6 +36,17 @@ errortrace-stack-item->srcloc copy-viewable-stack) +(module item->srcloc racket/base + (provide errortrace-stack-item->srcloc) + + (define (errortrace-stack-item->srcloc x) + (make-srcloc (vector-ref x 0) + (vector-ref x 1) + (vector-ref x 2) + (vector-ref x 3) + (vector-ref x 4)))) +(require (submod "." item->srcloc)) + (provide (contract-out [cut-stack-at-checkpoint (-> continuation-mark-set? (listof srcloc?))] @@ -176,13 +187,6 @@ interesting-editors a-viewable-stack)) -(define (errortrace-stack-item->srcloc x) - (make-srcloc (vector-ref x 0) - (vector-ref x 1) - (vector-ref x 2) - (vector-ref x 3) - (vector-ref x 4))) - (define (cms->builtin-viewable-stack cms interesting-editors #:share-cache [a-viewable-stack #f]) (build-viewable-stack (cut-stack-at-checkpoint cms) diff --git a/drracket-core-lib/info.rkt b/drracket-core-lib/info.rkt index c65b70a76..0df5a54a6 100644 --- a/drracket-core-lib/info.rkt +++ b/drracket-core-lib/info.rkt @@ -11,7 +11,7 @@ ["drracket-plugin-lib" #:version "1.1"] "drracket-tool-lib" "drracket-tool-text-lib" - ["errortrace-lib" #:version "1.5"] + ["errortrace-lib" #:version "1.6"] ["gui-lib" #:version "1.76"] "gui-pkg-manager-lib" ["icons" #:version "1.2"]