From 11f74fc5716f65de058b1e4f6484706d48cdaf52 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 15 Apr 2013 21:10:09 -0500 Subject: [PATCH] track dependencies from files with errors separately from when the file doesn't have an error More precisely, keep two sets of depndencies for a given open tab. If the file expanded without error then we consider that authoratative and keep that set of dependencies around even if a later expansion fails. So there are two sets of dependencies for each tab. When expansion succeeds, we reset both of them, but if expansion fails then we reset only one, preserving the set we got from the last successful expansion please include in the release --- collects/drracket/private/module-language.rkt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/collects/drracket/private/module-language.rkt b/collects/drracket/private/module-language.rkt index 265db2e92c..3db6a29440 100644 --- a/collects/drracket/private/module-language.rkt +++ b/collects/drracket/private/module-language.rkt @@ -1072,9 +1072,17 @@ (update-little-dot)) (define dep-paths (set)) - (define/public (set-dep-paths d) (set! dep-paths d)) - (define/public (set-dirty-if-dep path) - (when (set-member? dep-paths path) + (define error-dep-paths (set)) + (define/public (set-dep-paths d error?) + (cond + [error? + (set! error-dep-paths d)] + [else + (set! dep-paths d) + (set! error-dep-paths (set))])) + (define/public (set-dirty-if-dep path) + (when (or (set-member? dep-paths path) + (set-member? error-dep-paths path)) (oc-set-dirty this))) (super-new))) @@ -1951,7 +1959,7 @@ val)))) (send running-tab set-oc-status (clean #f #f '())) - (send running-tab set-dep-paths (list->set (vector-ref res 2)))] + (send running-tab set-dep-paths (list->set (vector-ref res 2)) #f)] [else (line-of-interest) (send running-tab set-oc-status @@ -1960,7 +1968,7 @@ sc-abnormal-termination (vector-ref res 1)) (vector-ref res 2))) - (send running-tab set-dep-paths (list->set (vector-ref res 3)))]) + (send running-tab set-dep-paths (list->set (vector-ref res 3)) #t)]) (oc-maybe-start-something))) (define/oc-log (oc-status-message sym str)