There are currently three <whole-value> substitution functions: first-valid(), interpolate(), toggle(). All are resolved at computed value time or later.
Using them as a shorthand value is specified for toggle(), but not for the other two: should they expand like arbitrary substitutions, with a pending-substitution value?