
Invalidate every CandidatePath cache inside an R6 object
Source:R/path_resolution.R
invalidate_candidate_paths.RdWalks 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.
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.
See also
[CandidatePath], [first_existing_path()], [RegistryStudy], [TTEPlan].
Other multi_host_paths:
CandidatePath,
first_existing_path()