From f9cc17670c6a249e79271e7ed4362d902366f3b3 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 (cherry picked from commit 11f74fc5716f65de058b1e4f6484706d48cdaf52) --- 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 108be61b3f..5a425abb8a 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))) @@ -1944,7 +1952,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 @@ -1953,7 +1961,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)