mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-26 04:09:35 +03:00
The prior mechanism for reconciling cached diagnostic state with updates from presets / command-line arguments based on whether the latter modified diagnostics from their default state did not work. This is because alterations that would not change the state relative to the default were not recorded, even if they would alter the state relative to the prior (cached) state. The best fix for this is to apply alterations on top of the cached state, rather than trying to determine whether an alteration is important. Unfortunately, the only way to do this is to defer alterations until after we can load the cache, which somewhat defeats one of the original goals of reducing the number of mechanisms by which alterations are recorded. Modify how we handle diagnostic alterations to map them through a helper function, which either defers them (in Project mode) or acts as a pass-through (applying the changes immediately, in all other modes). While this does, as noted, introduce another means of storing diagnostics, this new storage effectively consists of a list of deferred function calls, rather than a unique format for recording changes, which is what we had prior to the Great Refactor.