Skip to contents

Walks the public fields of obj depth-first. Every field that is a CandidatePath has its cache cleared via $invalidate(). Every field that is another R6 object is recursed into, so embedded objects (e.g. a RegistryStudy held inside a TTEPlan) are also invalidated.

Usage

invalidate_candidate_paths(obj)

Arguments

obj

An R6 object to walk.

Value

invisible(obj).

Details

Active bindings are deliberately skipped during the walk: accessing a $dir_foo active binding would call $resolve() on the underlying CandidatePath and immediately re-populate the cache we are trying to clear. We reach the CandidatePath instances via their backing public fields instead.

This is called from $save() on both RegistryStudy and TTEPlan before serialization, so the on-disk qs2 file never carries host-specific resolved paths. After loading on a different host, first access re-walks the candidate list and caches the path valid on that host.